CodeBlanks Logo Icon CodeBlanks

Özet - GAN ve VAE

Bu grupta GAN ve VAE üretici modellerini öğrendin.

Özet: GAN ve VAE

Bu grupta:

  • GAN: üretici ile ayırt edicinin oyunu; dengede D her örneğe 0.5 der.
  • Üretici için doymayan kayıp bce(D(G(z)), 1) kullanılır; mod çökmesi bilinen sorundur.
  • Üretici kalitesi, gerçek/sahte ayıran yeni bir sınıflandırıcıyla (C2ST) ölçülebilir.
  • VAE: encoder μ ve log σ² verir; yeniden parametreleme ile z = μ + σ·ε.
  • VAE kaybı = yeniden kurma + β·KL; doğrusal otokodlayıcı PCA'ya denktir.
# GAN: keskin örnekler, kararsız eğitim
# VAE: kararlı eğitim, düzgün gizil uzay, bulanık örnekler
# Difüzyon modelleri: ikisinin güçlü yanlarını birleştirir (Stable Diffusion)

Uygulama VAE kaybını hesapla

Verilen x, encoder çıktıları mu, logvar ve eps ile z'yi yeniden parametreleme ile hesapla. Decoder doğrusal (z @ W). Yeniden kurma hatasını (kare hataların toplamı), KL'yi ve β = 1 ile β = 4 için toplam kaybı round(..., 3) ile aynı satırda yazdır.

Başlangıç kodu

model.py
import numpy as np

x = np.array([1.0, 2.0, 0.5])
mu = np.array([0.8, -0.2])
logvar = np.array([-1.0, -0.5])
eps = np.array([0.1, -0.3])
W = np.array([[1.0, 2.0, 0.5], [0.5, -1.0, 0.0]])

# buraya yaz

Örnek çözüm

model.py
import numpy as np

x = np.array([1.0, 2.0, 0.5])
mu = np.array([0.8, -0.2])
logvar = np.array([-1.0, -0.5])
eps = np.array([0.1, -0.3])
W = np.array([[1.0, 2.0, 0.5], [0.5, -1.0, 0.0]])

z = mu + np.exp(0.5 * logvar) * eps
x_hat = z @ W
yk = float(((x_hat - x) ** 2).sum())
kl = float(-0.5 * np.sum(1 + logvar - mu ** 2 - np.exp(logvar)))
print(round(yk, 3), round(kl, 3), round(yk + kl, 3), round(yk + 4 * kl, 3))

Beklenen çıktı

0.156 0.577 0.733 2.465

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Eğitimi kararlı, gizil uzayı düzgün ama örnekleri bulanık olan model hangisidir?

  • GAN
  • GPT
  • BERT
  • VAE Doğru cevap

Açıklama: VAE'nin yeniden kurma kaybı ortalama bir çıktıya yönelir.

2 Yeni örnek için gizil vektörü standart normalden çek.

Soru
z = rng.____(size=(16, 2))
Cevap
z = rng.normal(size=(16, 2))

Açıklama: Önsel dağılım N(0, I)'dir.

3 Eşleştir.

Kavram Anlamı
GAN Çekişmeli eğitim
VAE Olasılıksal otokodlayıcı
KL Önsele yakınlık
mod çökmesi GAN sorunu

Uzman bölümündeki tüm dersler