GANs teoremini makine öğrenmesi alanında belki de son yılların en heyecan verici gelişmesi olarak nitelemek yanlış olmaz. GANs Google bünyesinde bulunan Ian Goodfellow tarafından 2014 yılında geliştirildi. Bu geliştirilme sonrasında makine öğrenmesi dünyasında büyük bir heyecan oluştu.
Alt Başlıklar
GANs’ın diğer modellerden farkı nedir?
GANs diğer yapay sinir ağlarının aksine kendi kendine yeni ve anlamlı veriler üretebilmektedir. GANs düzenini oluşturan temel yapılardan bahsedecek olursak bunlar generator ve discriminator yapılarıdır.
Generator resim üretirken discriminator ise üretilen resimlerin gerçek mi yoksa sahte mi olduğunu ayırt etmekle uğraşır. Bu iki yapı öğrenme süreci boyunca birbirleriyle bağlantılı olup birlikte öğrenme gerçekleştirir. Yani daha önceden sahte ve gerçek resmi öğrenmiş bir ağ, gelen resimleri inceleyerek generator işlemcilerine gönderir ve bu gelen resmin neden sahte olduğunu söylemekle görevli bir discriminator ve discriminatorun söylediği eksiklerini gidermek için daha gerçekçi resimler üretmeye çalışan, bu yönde öğrenme gerçekleştiren bir generator yapısından bahsediyoruz.
Burada da anlayacağınız üzere birlikte işlenen süreç devam ettiği durumlarda generator en gerçekçi resmi üretmeye discriminator ise fake ile gerçeği en iyi şekilde ayırt etmeye doğru gelişecektir. Burada dikkat çeken bir nokta ise discriminatorun gerçek resimler hakkında fikir sahibi olduğu halde generator gerçek resim hakkında hiçbir fikre sahip değildir.
GANS Nasıl Çalışır?
Süreci biraz daha nitelikli anlatmak gerekirse ilk olarak generator’a noise vector veriyoruz bu vektor ‘ü rasgele sayılar gibi düşünün daha sonra generator ve bu vektör sayesinde üretilen resimleri discriminatora veriyoruz. Aynı zamanda disciriminator üzerinde gerçek resimleri de gönderiyoruz. Burada beklentimiz discriminator üzerinden 1 ve 0 sıfır değerleri dönmesini beklemek. 1 ise gerçek, 0 ise değil. Burada biraz bekleyelim, daha tam öğrenme gerçekleştirmemiş bir sinir ağından bu kadar net sonuçlar almamız olası değil. Discriminator bize her resim için tahmini değerlerini veriyor(Min-Max Normalization ile) ve biz bu değerleri eğer gerçek foto içinse 1 sahte foto içinse 0 gerçek değerlerini kullanarak loss function yardımıyla discriminator ağımızı optimize ediyor ve eğitiyoruz.
GANs İçerisinde Generator Nasıl Eğitilir?
Generator‘u eğitme sürecinde ise generatorun ürettiği resimleri input olarak yine kendisine veriyoruz ve tekrar bunlardan üretmesini bekliyoruz. Üretildikten sonra yukardaki süreci tekrar uyguluyoruz. Burada farklı olan kısım discriminatorun bu resimler için ürettiği sonuçları 0 değerine göre loss function içerisisine atıyoruz (çünkü fake resim).
Burada generator istemcilerini elde edilen sonuçlar doğrultusunda eğiteceğimiz için generator içerisine ulaşmasını beklediğimiz 1 değerine göre generatoru optimize ediyoruz ve eğtiyoruz. Bu yukarıda bahsettiğim şekilde işleyen süreçte her epoch sonrası back-propagation ile sinir ağları optimize edilip öğrenmesi sağlanıyor ve bu şekilde hem resmi üreten hem de fake olanı yakalamaya çalışan sinir ağları gittikçe başarılı olmaya başlıyor.
GANs çalışmalarının uygulama alanları nelerdir?
Bildiğiniz üzere Ian Goodfellow GANs teoreminden bahsederken generator yapısını sahte tablo üreten bir kalpazana ve discriminator yapısını ise bunu yakalamaya çalışan bir dedektife benzetmişti. Aslında burada anlatmaya çalıştığı nokta bu algoritmanın sahte ve gerçeği ayırt edebilecek bir güçte olabildiğidir. Bu sayede iyi öğrenmiş bir sinir ağı sahte parayı, sahte tabloyu ve buna benzer birçok yapıyı ayırt edip kullanımdan kaldırması mümkün gözüküyor.
Bu şekilde bu tarz dolandırıcılığın önüne geçmek oldukça mümkün. Bunun dışında sahte yüzü de gerçek yüzden ayıracak kadar iyi öğrenmiş bir sinir ağı suç durumunda suçluların kamuflesini de yok edebileceği düşüncesindeyim. İlerleyen yıllarda özellikle kamuda ve özel güvenlik şirketlerinde, IOT teknolojilerinde image processing tabanlı uygulamalarını daha sık göreceğiz.
GANs birçok çevre tarafından ilk testlerden başarıyla geçti. Firmalarında GANs teknolojilerini kullanan geliştiriciler bu konuda çıkan yazılımları çeşitli birlikler içerisinde destekliyor.