Generative Adversarial Networks (GAN) nedir?

Cihan Öngün
5 min readFeb 6, 2020

--

Source

Yukarıda gördüğünüz resimlerin hepsi bilgisayar tarafından üretilmiş sahte resimler. Gerçek hayatta böyle bir köpek, kelebek veya mantar resmi yok. Son zamanlarda buna benzer bir çok örnek görmüşsünüzdür; gerçeğinden ayırt edilemeyen insan yüzleri, sesler, tablolar, yazılar vb. Bu çalışmaların çoğu Generative Adversarial Networks — GAN (Çekişmeli Üretici Ağlar) adı verilen bir yapay sinir ağları (artificial neural network) modeli ile yapılıyor.

Generative Adversarial Networks (GAN) fikri 2014 yılında Ian Goodfellow’un bir partide arkadaşlarıyla yaptığı bir sohbet sırasında ortaya çıkmış ve hemen ardından makale olarak yayınlanmıştır. Yayınlanmasından sonra hızla popülerleşen bu makale 5 yılda 15000'den fazla atıf almış, bu alanda önemli konferanslarda yayınlanan makale sayısı ise yılda 500'ün üzerine çıkmıştır.

Sahte yüz resimleri üreten GAN’lerin gelişim süreci

GAN modeline üretmek istediğiniz veriden yeterli sayıda örnek verirseniz yine aynı veri tipinde yeni örnekler ürettirebilirsiniz. Sisteme binlerce kuş fotoğrafı verirseniz sistem, bir kuşun nasıl görünmesi gerektiğini öğrenecek ve yeni kuş fotoğrafları üretecektir. GAN’lerde birbiriyle çekişme halinde bulunan 2 farklı yapay sinir ağı bulunmaktadır. Bunlar Üretici (Generator) ve Ayırt Edici (Discriminator) ağ olarak adlandırılır. Üretici ağ, gerçeğe benzeyen yeni veriler (resimler, sesler, modeller vb.) üretirken Ayırt Edici ağ da sahte ve gerçek verileri birbirinden ayırt etmeye çalışır. Bu iki sinir ağı birbiriyle çekişirken Ayırt Edici ağ giderek gerçek ve sahte resimleri daha iyi ayırt etmeye başlar. Üretici ağ ise daha gerçekçi sahte resimler üretir. Bu düzeni kalpazan ve polis ikilisine benzetebiliriz. Zaman ilerledikçe polis, kalpazanları bulabilmek için sahte paraları yakalamada daha başarılı olur. Kalpazan ise polisi yenebilmek için daha gerçekçi sahte paralar üretmeye başlar.

Source

Peki bu çekişme esnasında sistemin daha iyi sonuçlar üretmesi nasıl sağlanır? Ayırt edici ağ, kendisine gelen resimlerin gerçek olma olasılıklarını hesaplar ve bunlara 0 ve 1 arasında bir değer verir. Gerçek bir resmin gerçek olma olasılığı 1, sahte bir resminki ise 0 olmalıdır. Ayırt Edici ağ, verdiği olasılık değerleri ile olması gereken değerler arasındaki fark olan kayıp (loss) değeri kullanılarak eğitilir. Örneğin Ayırt Edici ağ gerçek bir resme 0.7 değerini vermişse 1–0.7 = 0.3 hata yapmıştır. Tam tersi olarak sahte bir resme 0.7 değeri vermişse de 0.7–0 = 0.7 hata yapmıştır. Ayırt edici ağın değerleri eğitim sırasında her iterasyonda bu hata değerlerini 0’a indirecek şekilde güncellenir. Üretici ağ ise tam tersi olarak kendi ürettiği sahte resimlerin gerçeğe yakın olmasını yani 1 olarak değerlendirilmesini ister. Eğer kendi ürettiği resmi Ayırt Edici ağ 0.6 olarak değerlendirmişse, Üretici ağ 1–0.6=0.4 hata yapmıştır. Üretici Ağ da her iterasyonda bu hatayı 0’a indirmeyi ister. Bu şekilde eğitim süreci ilerledikçe ayırt edici ağ, gerçek ve sahte resimleri ayırt etme işinde daha başarılı olur. Üretici ağ ise daha gerçekçi sahte resimler üretir. Eğitim süreci bittiğinde elimizde gerçeğinden ayırt edilemeyecek kalitede resimler üreten bir üretici sistem kalır. Aşağıdaki örnekte el yazısı rakamlardan oluşan MNIST veri seti ile eğitilmiş bir GAN modelinin zamanla gelişimini görebilirsiniz. Sonuç gerçeğinden ayırt edilemeyecek kalitede el yazısı rakamlar!

Source

Neler yapılabilir?

Elinizde yeterli sayıda örnek olduğu sürece aklınıza gelen herhangi bir veri bu şekilde üretilebilir. En çok görülen örnekler resim üretmek üzerinedir. İnsan yüzü, hayvanlar, doğa fotoğrafları, haritalar, araç dizaynları, kıyafetler, pokemonlar vb. Sadece yeni veri üretmek için değil, olan bir veriyi başka bir konsepte dönüştürmek için de bu algoritma kullanılabilir. Örneğin en popüler çalışmalardan biri olan pix2pix şu gibi dönüşümleri yapabiliyor: siyah beyazdan renkli resme çevirme, çizimleri gerçekçi boyama, gündüz resimlerini geceye veya gece resimlerini gündüze çevirme, uydu fotoğrafından haritaya dönüştürme, bölümlendirilmiş planlardan bina veya sokak tasarımına dönüştürme…

Aşağıdaki örnek ise bu teknolojinin çok güzel bir uygulaması. Sistemi aynı ressamın tabloları ile eğitirseniz, sistem o ressamın tarzını öğrenecek ve sanki o ressam yapmış gibi yeni tablolar üretecektir. Böylelikle sanatçıları ölümsüz hale getirebilirsiniz. Burada yapabileceğiniz şeyler hayal gücünüze kalmış, sadece resim değil yeni şarkılar, ilaçlar, heykeller, mobilyalar, binalar … Bunların hepsi zaten üzerinde çalışılan ve bir çoğu gerçekleştirilmiş uygulamalar.

Source

Matematiksel olarak bu sistem nasıl çalışıyor?

GAN fikrinin temelinde makalede yer alan bu fonksiyon yatıyor. Şimdi bu fonksiyonu adım adım inceleyelim. Kırmızı kısım bunun bir MinMax oyunu olduğunu belirtiyor. Kısaca bu fonksiyonun değerini (mavi ve sarı kısmın toplamını) Discriminator maximize etmeye yani sonucunu yükseltmeye, Generator ise minimize etmeye yani sonucunu düşük tutmaya çalışıyor. Mavi kısımda x gerçek resimleri ifade ediyor, D(x) değeri ise Discriminator’ın gerçek resimler için ürettiği değer. Sarı kısımdaki z değeri Generator’a verilen rastgele sayı değerini ifade ediyor. G(z) yani Generator’ın rastgele sayıya verdiği çıktı ise Generator’ın ürettiği sahte resim. Bu durumda D(G(z)) Discriminator’ın sahte resme verdiği değer. Bu değerin (1-D(G(z))) ile tersi alınıyor. Buradan anladığımız, Discriminator gerçek resimlere verdiği değeri yükseltmeye, sahtelere verdiği değeri de düşürmeye çalışıyor yani mavi ve sarı kısmı yükseltmeye çalışıyor. Generator ise bunun tam tersi için çalışıyor yani (1-D(G(z))) değerini düşürerek D(G(z)) değerinin yüksek olmasını sağlıyor. Bu ikisi arasındaki çekişme sonuçta bir optimum nokta (Nash equilibrium) bulunmasını sağlıyor.

Etik problemler

Yukarıda gördüğünüz resim yapay zeka tarafından üretilip satılan ilk resim. Açık artırmada 10.000 dolar civarına satılması beklenirken tam 432.500 dolara satıldı. Tablonun sağ alttaki imza kısmına bakarsanız yukarıda anlattığımız GAN fonksiyonunu göreceksiniz. Fakat bu örnek ne yazık ki sizin de GAN ile ürettiğiniz resimleri bu fiyata satabileceğiniz anlamına gelmiyor. Bu resim yapay zeka tarafından üretilip satılan ilk resim olmasından dolayı bu kadar yüksek fiyata satıldı. Zaten sistemi eğittikten sonra bir kaç saniye içerisinde istediğiniz kadar yeni resim üretebilirsiniz. Resmi üreten firma internetten bulduğu GAN kodunu, ünlü ressamların resimleriyle eğitmiş ve çıkan sonucu açık artırmaya koymuş. Peki burada telif hakkı kime ait? GAN makalesini yazan kişiye mi, kodunu yazan kişiye mi, eğitim için kullanılan tabloları yapan kişilere mi yoksa bu tabloları bir araya getiren kişiye mi? Mesela bir giyim markasının ürünlerini kullanıp sisteme yeni elbiseler ürettirsek, giyim markası hak talep edebilir mi? Daha kişisel olarak bakarsak, sizin sosyal medyaya koyduğunuz fotoğraflar kullanılarak gerçekçi insan resimleri üretilse buna izin verir miydiniz?

Bir başka çıkmaz da gerçeğinden ayırt edilemeyen sahte veriler kullanılarak yapılabilecek illegal aktiviteler. Örneğin artık hızlıca sahte bir yüz resmi üretip, otomatik metin üreticilerle milyonlarca mail atabilirsiniz veya sosyal medya hesabı açabilirsiniz. DeepFake gibi sistemleri kullanarak bir kişinin hiç söylemediği şeylerin veya hiç bulunmadığı yerlerin videolarını üretebilirsiniz. Bir kişinin bütün tweetlerini veya sosyal medya yazılarını kullanarak onun gibi davranan sahte sosyal medya hesapları yaratabilirsiniz. Bunların hepsi çözülmesi gereken etik ve hukuki sorunlar olarak bekliyor.

GAN’ler hakkında daha fazla bilgi almak isterseniz bir sonraki Generative Adversarial Networks (GAN) alanında okunması gereken 10 makale yazısına bakabilirsiniz.

--

--

Cihan Öngün

PhD Candidate and Research assistant at METU, works on Generative Models cihanongun.github.io