GAN nedir?
- Makine Öğrenmesi kursu
- Uzman
- Ders 29/44
- 5 dk
GAN (Generative Adversarial Network), generator ve discriminator'un yarıştığı üretici modeldir.
GAN nedir?
Çekişmeli üretici ağ (GAN, 2014) iki ağın oyunudur:
- Üretici (G): rastgele gürültü z'den sahte örnek üretir.
- Ayırt edici (D): bir örneğin gerçek mi sahte mi olduğunu olasılık olarak söyler.
# D maksimize eder, G minimize eder:
# V(D, G) = E[log D(x)] + E[log(1 - D(G(z)))]D iyileştikçe G daha inandırıcı örnekler üretmek zorunda kalır. Denge noktasında G gerçek dağılımı taklit eder ve D her örneğe 0.5 der.
Kayıp fonksiyonları
Uygulamada her iki ağ da ikili çapraz entropiyle eğitilir. Üretici için log(1 − D(G(z)))'yi küçültmek yerine −log D(G(z))'yi küçültmek tercih edilir (doymayan kayıp): başlangıçta D sahteleri kolayca yakaladığında gradyan sönmez:
bce = lambda p, y: -(y * np.log(p) + (1 - y) * np.log(1 - p)).mean()
kayip_D = bce(D_gercek, 1) + bce(D_sahte, 0)
kayip_G = bce(D_sahte, 1) # "D sahteye gerçek desin"Eğitim döngüsü sırayla bir adım D'yi, bir adım G'yi günceller.
Uygulama GAN kayıpları
bce(p, y) fonksiyonunu yaz. Üç durum için D ve G kayıplarını round(..., 3) ile aynı satırda yazdır: (1) D çok iyi (gerçeğe 0.9, sahteye 0.1), (2) denge (her ikisine 0.5), (3) G kandırıyor (gerçeğe 0.6, sahteye 0.8).
Başlangıç kodu
import numpy as np
durumlar = [(0.9, 0.1), (0.5, 0.5), (0.6, 0.8)]
# buraya yazÖrnek çözüm
import numpy as np
durumlar = [(0.9, 0.1), (0.5, 0.5), (0.6, 0.8)]
def bce(p, y):
p = np.asarray(p, dtype=float)
return float(-(y * np.log(p) + (1 - y) * np.log(1 - p)).mean())
for g, s in durumlar:
kayip_D = bce([g], 1) + bce([s], 0)
kayip_G = bce([s], 1)
print(round(kayip_D, 3), round(kayip_G, 3))Beklenen çıktı
0.211 2.303 1.386 0.693 2.12 0.223
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Dengeye ulaşmış bir GAN'da ayırt edici her örnek için hangi değeri verir?
- 0.5 Doğru cevap
- 1
- 0
- Gürültü
Açıklama: Gerçek ve sahte ayırt edilemez olduğunda en iyi tahmin yazı turadır.
2 Üreticinin kaybında sahteleri "gerçek" etiketiyle değerlendir.
kayip_G = bce(D_sahte, ____)
kayip_G = bce(D_sahte, 1)
Açıklama: Doymayan kayıp: G, D'nin sahteye 1 demesini ister.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
G |
Gürültüden örnek üretir |
D |
Gerçek/sahte olasılığı |
kayip_D |
bce(gerçek,1) + bce(sahte,0) |
kayip_G |
bce(sahte,1) |