Makine Öğrenmesi
Generator
Generator, rastgele gürültüden gerçekçi veri üretir.
Üretici
Üretici, basit bir dağılımdan (genellikle standart normal) alınan z vektörünü veri uzayına eşleyen bir ağdır. Görüntü GAN'larında z ~ N(0, I) 100 boyutlu olur, çıktı 64×64×3 bir resimdir:
G = nn.Sequential(
nn.Linear(100, 256), nn.ReLU(),
nn.Linear(256, 784), nn.Tanh()) # 28x28 resim, [-1, 1]
Tek boyutlu en basit hâlinde üretici G(z) = a·z + b olabilir: z ~ N(0, 1) ise G(z) ~ N(b, a²). Hedef N(4, 1.5²) ise ideal üretici a = 1.5, b = 4'tür.
Mod çökmesi
GAN'ların bilinen sorunu mod çökmesidir: üretici, D'yi kandıran tek bir örnek türü bulur ve hep onu üretir. Gerçek veride iki tepe (mod) varken üretici yalnızca birini kapsayabilir:
gercek = np.concatenate([rng.normal(-3, 0.5, 500), rng.normal(3, 0.5, 500)])
cokmus = rng.normal(3, 0.5, 1000) # yalnızca sağ tepe
print((gercek < 0).mean(), (cokmus < 0).mean()) # 0.5 ve 0.0
Çözümler: Wasserstein kaybı (WGAN), mini-yığın ayırt etme, birden çok üretici.
Uygulama Doğrusal üretici
z ~ N(0, 1) için 100 000 örnek üret. G(z, a, b) fonksiyonunu yaz. Hedef N(4, 1.5²) için doğru (a=1.5, b=4) ve yanlış (a=1, b=0) üreticilerin örnek ortalama ve standart sapmalarını round(..., 1) ile aynı satırda yazdır. Ardından iki tepeli gerçek veride ve çökmüş üreticide negatif örnek oranlarını round(..., 2) ile aynı satırda yazdır.
Örnek çözümü göster
import numpy as np
rng = np.random.default_rng(0)
z = rng.normal(size=100_000)
gercek = np.concatenate([rng.normal(-3, 0.5, 500), rng.normal(3, 0.5, 500)])
cokmus = rng.normal(3, 0.5, 1000)
def G(z, a, b):
return a * z + b
for a, b in [(1.5, 4), (1, 0)]:
s = G(z, a, b)
print(round(s.mean(), 1) + 0.0, round(s.std(), 1))
print(round((gercek < 0).mean(), 2), round((cokmus < 0).mean(), 2))
Kendini test et
-
G(z) = 2z − 1 ve z ~ N(0, 1) ise G(z)'nin ortalaması ve standart sapması nedir?
- Ortalama 2, std −1
- Ortalama 0, std 1
- Ortalama −1, std 4
- Ortalama −1, std 2
Cevabı göster
Ortalama −1, std 2 — Doğrusal dönüşüm ortalamayı kaydırır, std'yi |a| ile çarpar.
-
Görüntü çıktısını [-1, 1] aralığına sıkıştır.
nn.Linear(256, 784), nn.____())
Cevabı göster
nn.Linear(256, 784), nn.Tanh())
-
Eşleştir.
- z
- Gürültü girişi
- a·z + b
- N(b, a²)
- mod çökmesi
- Tek tür örnek
- WGAN
- Çökmeye karşı kayıp
Sıradaki ders: Discriminator