DCGAN Kısaca Nasıl Çalışır ?

DCGAN Generative Adversarial Networks’ün popüler alt dallarından biri diyebiliriz. DCGAN ın içinde ise generator ve discriminator denilen iki farklı model bulunuyor. Generator alınan bir dağılımdan model içinde upsampling işlemleri gerçekleştirerek bir resim uydurmaya çalışırken Discriminator ise bu uydurduğumuz resim ile bizim modele verdiğimiz resim arasındaki bu gerçek mi yoksa sahte mi ayrımını yapmaya çalışıyor. Modeli oluşturmaya başlamadan önce önemli noktaya değinmekte fayda var diye düşünüyorum.

  • Model içinde BatchNorm. Kullanıcağımız için modelimiz tutarlı olarak kullanmalıyız bundan dolayı gelen veriyi normalize etmemiz gerektiğini unutmamamız gerekiyor. Bunun yararı ise model içinde hem  dropout kullanma gereksinimini azaltması hem de sayı yükünü hafifletmesi olarak basitçe genelleyebiliriz.

Generator Network 

  • Generator isminden anlaşılacağı gibi belirli boyuttaki inputu rastgele veya bir dağılım ile vektörü bir resim gibi oluşturmaya çalışır. Bu modelin içinde yapılan işlemler ise ; Transposed convolutions,Batch Norm., Relu  ve Tanh aktivasyon fonksiyonu diyebiliriz.
  • Relu ara katmanlarda sık sık kullanılırken tanh ise son çıktı değerinde kullanılıyor. Neden Tanh son çıktı katmanında kullanılıyor derseniz son olarak gelen veriyi belirli bir alanda tutmamıza yardımcı oluyor.
  • Transposed convolution: Transpose işleminden sezdiğimiz gibi bildiğimiz convolution işleminin tam tersini yapmaya çalışır.(Bir sonraki yazımda hem implementasyonunu hem de nasıl çalıştığını elimden geldiğince anlatacağım.)
Stride=1. Pad=Valid. Stride=2. Pad=Valid. Stride=2. Pad=Same. Output. Conv. Input. Output. Deconv. Input.
  • Bu ağda hem rastgele hem de belirli atamalar ile weight initialization yapabiliriz.

 

Discriminator Network

  • Bu ağda ise generator ağının tam tersine bildiğimiz convolution işlemi gerçekleşiyor.
  • Ara katmanlarda generator’da kullandığımız relu yerine leakyRelu, tanh yerine ise sigmoid aktivasyon fonksiyonunu kullanıyoruz.leakyRelu ise relu nun aksine 0 değerinin altında yok etmektense 0.001 gibi bir değer ile çarparak bunu küçük bir miktar bile olsa işleme katıyor.
  • Generator ın son katmanında flatten işlemi yapmamıştık fakat bu ağda flatten işlemi yapmamız gerekiyor.(PyTorch kullananlar burada boyutu tutturmak için squeeze işlemi de yapması gerekiyor.)

Loss ve Optimizer

Discriminator Eğitimi

  • Gerçek resimlerin nasıl bir performans sergilediği ve uydurduğumuz resimlerin gerçek resimlere ne kadar benzediğini ölçmemiz gerekiyor bu adımında ikiye ayırırsak hem gerçek resimle hem de uydurma resimlerle eğitiriz. Burada kullanılan genel loss fonksiyonu ise;
  • Burada D(x) inputun discriminator deki çıktısıyken D(G(z)) ise uydurulan resmin discriminatordeki çıktısı diyebiliriz.

Generator Network Eğitimi 

  • Burada yapıcağımız şey ise, rastgele veya bir dağılımdan uydurduğumuz bir resmi oluşturup bunu discriminator’e vererek bunun gerçek mi yoksa uydurma bir resim mi  ölçmemiz gerekiyor.Burada backward işlemi ile ilgili generator ın parametreleri eğitilip bir sonraki uydurma resmimizi çok daha doğru uydurmaya çalışmaktır.

Modeldeki islemler

  1. Gerçek resimlerimizle discriminator ‘ı eğitiriz.
  2. Tekrar uydurduğumuz resimler ile discriminator eğitilir.
  3. Discriminator optimize edilir.
  4. Discriminator ün geri dönüş değeri ile Generator eğitilir.
  5. Tek başına olarak Generator eğitilir.

 

Olabildiğince sade, belirli terimleri türkçeleştirmeden ve çok fazla sayısal işlemlere girmeden  anlatmaya çalıştım bir sonraki yazımda ise PyTorch ile nasıl implemente edebiliriz ve biraz da matematiksel olarak anlatmaya çalışacağım.

Yanlış aktardığım veya ifade ettiğim bir durum varsa lütfen belirtin.

Data Science Earth

Data Science Earth ekibi, üst düzey Veri Bilim çözümleri üretmek amacı ile toplanmış akademisyenler ve uzmanlardan oluşmaktadır. Öncelikli olarak veri bilincini geliştirmeyi ve küreselleşen rekabet ortamında verinin gücünün doğru kullanılmasını sağlamayı amaçlamaktadır.

Sponsor

QuestionPro 35 farklı soru seçim özelliği ile anket çalışmalarımıza güç katmaktadır.