0Pricing
Learn AI with Python · Ders

GAN'ler: Üretici ve Ayrıştırıcı

Min-maks oyun teorisi, GAN eğitim kararsızlığı, kip çökmesi, DCGAN uygulaması.

GAN'ler: Üretici ve Ayrıştırıcı, CoddyKit'te ücretsiz bir Learn AI with Python dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn AI with Python öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn AI with Python kursu toplamda 4 dersten oluşur.

GAN Nedir?

Bir Üretici Çekişmeli Ağ, iki ağı karşı karşıya getirir: sahte veriler oluşturan bir Generator ve gerçek ile sahte verileri ayırt eden bir Discriminator. Bu iki ağ rekabet eder ve üretici, ikna edici örnekler oluşturmayı öğrenir.

Çekişmeli Oyun

Bir sahteciyi (üretici) ve bir dedektifi (ayırt edici) düşünün. Sahteci, dedektifi kandırmak için sahte verilerini geliştirir; dedektif ise ayırt etme becerisini keskinleştirir. Bu rekabet, sahte veriler gerçek görünene kadar ikisinin de gelişmesini sağlar.

Üretici

Üretici, rastgele bir gürültü vektörünü sahte bir görüntüye eşler. Anlamsız rastgele sayıları yapılandırılmış ve gerçekçi görünen verilere dönüştürmeyi öğrenir.

class Generator(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(100, 256), nn.ReLU(),
            nn.Linear(256, 784), nn.Tanh()
        )
    def forward(self, z):
        return self.net(z)

Gürültü Vektörü

z girdisi standart normal dağılımdan örneklenir. Farklı gürültü vektörleri farklı görüntüler üretir; bu nedenle gürültü, üretimin "tohumudur". Boyutu (burada 100), gizil boyuttur.

z = torch.randn(batch_size, 100)
fake_images = generator(z)

Ayırt Edici

Ayırt edici, bir görüntüyü alır ve tek bir olasılık üretir: görüntünün gerçek olma olasılığı. Sigmoid, [0,1] aralığında bir değer verir; burada 1 gerçek, 0 ise sahte anlamına gelir.

class Discriminator(nn.Module):
    def __init__(self):
        super().__init__()
        self.net = nn.Sequential(
            nn.Linear(784, 256), nn.LeakyReLU(0.2),
            nn.Linear(256, 1), nn.Sigmoid()
        )

Ayırt Ediciyi Eğitme

D'yi, 1 etiketi verilmiş bir grup gerçek görüntü ve 0 etiketi verilmiş sahte görüntüler üzerinde eğitin. İkili çapraz entropiyi kullanarak gerçek puanlarını yükseltmeyi, sahte puanlarını ise düşürmeyi öğrenir.

d_real = criterion(D(real), ones)
d_fake = criterion(D(fake.detach()), zeros)
d_loss = d_real + d_fake
d_loss.backward()

Sahte Verilerde detach() Neden Kullanılır?

D'yi eğitirken fake.detach() kullanırız; böylece gradyanlar üreticiye akmaz. Bu adımda yalnızca ayırt ediciyi güncelleriz; üretici sırasını ayrı olarak alır.

Üreticiyi Eğitme

Şimdi G'yi D'yi kandıracak şekilde eğitin: sahte verileri D'den geçirin ve D gerçek (1 etiketi) çıktısı verdiğinde üreticiyi ödüllendirin. Üretici, D'yi sahte verilerinin gerçek olduğuna inandırarak gelişir.

g_loss = criterion(D(fake), ones)  # want D to say "real"
g_loss.backward()
g_optimizer.step()

Dönüşümlü Eğitim

Her yinelemede sırayla ilerlenir: önce D, ardından G güncellenir. İkisini yaklaşık olarak dengede tutmak çok önemlidir; D fazla güçlenirse G yararlı bir gradyan alamaz, fazla zayıf kalırsa G'nin karşısında yeterli bir zorluk olmaz.

# per step
# 1) update Discriminator
# 2) update Generator

Mod Çökmesi

Klasik bir başarısızlık türü mod çökmesidir: üretici, D'yi kandıran bir veya birkaç çıktı bulur ve verilerin çeşitliliğini göz ardı ederek yalnızca bunları üretir. Belirti şudur: üretilen her örnek neredeyse birbirinin aynısı görünür.

Eğitim Kararsızlığı

GAN'ler kötü şöhretli biçimde kararsızdır: kayıplar salınır, bir ağ diğerine üstün gelebilir ve yakınsama hassastır. LeakyReLU, dikkatle seçilmiş öğrenme oranları ve etiket yumuşatma gibi yöntemler eğitimi kararlı hâle getirmeye yardımcı olur.

Hızlı Kontrol

GAN anlayışınızı sınayın.

Özet: GANs

Çekişmeli yapıyı öğrendiniz: bir üretici gürültü vektörünü sahte verilere dönüştürür, bir ayırt edici gerçek/sahte olasılığı üretir ve bu iki ağ önce D, sonra G olacak şekilde dönüşümlü eğitilir. Ayrıca mod çökmesini ve GAN'leri eğitmeyi zorlaştıran genel kararsızlığı fark etmeyi öğrendiniz.

Sıkça Sorulan Sorular

“GAN'ler: Üretici ve Ayrıştırıcı” dersi ücretsiz mi?

Evet — “GAN'ler: Üretici ve Ayrıştırıcı” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn AI with Python kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn AI with Python kursu toplamda 4 dersten oluşur.

“GAN'ler: Üretici ve Ayrıştırıcı” dersinde ne öğreneceğim?

Min-maks oyun teorisi, GAN eğitim kararsızlığı, kip çökmesi, DCGAN uygulaması. Learn AI with Python ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn AI with Python öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn AI with Python, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“GAN'ler: Üretici ve Ayrıştırıcı” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn AI with Python dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn AI with Python dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Gösterim Öğrenmesi için Otokodlayıcılar
  2. Varyasyonel Otokodlayıcılar (VAE)
  3. GAN'ler: Üretici ve Ayrıştırıcı
  4. Koşullu GAN'ler ve Stil Aktarımı
← Learn AI with Python Sayfasına Dön