GAN: Generator dan Diskriminator
Teori permainan minimaks, ketidakstabilan pelatihan GAN, keruntuhan mode, implementasi DCGAN.
GAN: Generator dan Diskriminator adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa Itu GAN?
Jaringan Adversarial Generatif mempertemukan dua jaringan: Generator yang membuat data palsu dan Discriminator yang menilai data nyata dan palsu. Keduanya bersaing, dan Generator belajar menghasilkan sampel yang meyakinkan.
Permainan Adversarial
Bayangkan seorang pemalsu (Generator) dan seorang detektif (Discriminator). Pemalsu memperbaiki hasil palsunya agar dapat menipu detektif; detektif semakin terlatih dalam mengenalinya. Perlombaan ini mendorong keduanya untuk terus membaik hingga hasil palsu terlihat nyata.
Generator
Generator memetakan vektor derau acak menjadi gambar palsu. Generator belajar mengubah angka acak yang tidak bermakna menjadi data yang terstruktur dan tampak realistis.
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)Vektor Derau
Masukan z diambil sampelnya dari distribusi normal standar. Vektor derau yang berbeda menghasilkan gambar yang berbeda, sehingga derau menjadi "benih" pembangkitan. Dimensinya (di sini 100) merupakan ukuran laten.
z = torch.randn(batch_size, 100)
fake_images = generator(z)Discriminator
Discriminator menerima sebuah gambar dan menghasilkan satu probabilitas: seberapa besar kemungkinan gambar tersebut nyata. Sigmoid menghasilkan nilai dalam [0,1], dengan 1 berarti nyata dan 0 berarti palsu.
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()
)Melatih Discriminator
Latih Discriminator menggunakan satu kelompok gambar nyata berlabel 1 dan gambar palsu berlabel 0. Discriminator belajar menaikkan skor gambar nyata dan menurunkan skor gambar palsu menggunakan entropi silang biner.
d_real = criterion(D(real), ones)
d_fake = criterion(D(fake.detach()), zeros)
d_loss = d_real + d_fake
d_loss.backward()Mengapa fake.detach()?
Saat melatih Discriminator, kita menggunakan fake.detach() agar gradien tidak mengalir ke Generator. Pada langkah ini kita hanya memperbarui Discriminator; Generator mendapat gilirannya secara terpisah.
Melatih Generator
Sekarang latih Generator untuk menipu Discriminator: masukkan data palsu ke Discriminator dan berikan penghargaan kepada Generator saat Discriminator menghasilkan keluaran nyata (label 1). Generator membaik dengan membuat Discriminator percaya bahwa hasil palsunya nyata.
g_loss = criterion(D(fake), ones) # want D to say "real"
g_loss.backward()
g_optimizer.step()Pelatihan Bergantian
Setiap iterasi dilakukan secara bergantian: pertama perbarui Discriminator, lalu perbarui Generator. Menjaga keduanya tetap seimbang merupakan hal penting; jika Discriminator terlalu kuat, Generator tidak menerima gradien yang berguna, sedangkan jika terlalu lemah, Generator tidak mendapat tantangan.
# per step
# 1) update Discriminator
# 2) update GeneratorKeruntuhan Mode
Kegagalan klasik adalah keruntuhan mode: Generator menemukan satu atau beberapa keluaran yang dapat menipu Discriminator lalu hanya menghasilkan keluaran tersebut, dengan mengabaikan keragaman data. Gejalanya: setiap sampel yang dihasilkan terlihat hampir sama.
Ketidakstabilan Pelatihan
GAN terkenal tidak stabil: nilai fungsi kerugian berosilasi, salah satu jaringan dapat mengalahkan jaringan lainnya, dan konvergensinya rapuh. Trik seperti LeakyReLU, laju pembelajaran yang cermat, dan penghalusan label membantu menstabilkan pelatihan.
Uji Singkat
Uji pemahaman Anda tentang GAN.
Ringkasan: GAN
Anda mempelajari susunan adversarial: Generator mengubah vektor derau menjadi data palsu, Discriminator menghasilkan probabilitas nyata atau palsu, dan keduanya dilatih secara bergantian, yaitu Discriminator lalu Generator. Anda juga mempelajari cara mengenali keruntuhan mode serta ketidakstabilan umum yang membuat GAN sulit dilatih.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “GAN: Generator dan Diskriminator” gratis?
Ya — teks lengkap “GAN: Generator dan Diskriminator” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “GAN: Generator dan Diskriminator”?
Teori permainan minimaks, ketidakstabilan pelatihan GAN, keruntuhan mode, implementasi DCGAN. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “GAN: Generator dan Diskriminator” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Autoencoder untuk Pembelajaran Representasi
- Variational Autoencoder (VAE)
- GAN: Generator dan Diskriminator
- GAN Kondisional dan Transfer Gaya