Apa itu generative adversarial network (GAN)?
Generative adversarial network (GAN) adalah sepasang neural network yang di-train saling berlawanan: generator mengubah noise acak menjadi data palsu, dan discriminator berusaha membedakan data palsu dari data asli. Generator membaik dengan belajar mengelabui discriminator, dan discriminator membaik dengan menangkapnya. Kalau training berhasil, output generator jadi sulit dibedakan dari training set.
GAN menghasilkan wajah sintetis resolusi tinggi pertama yang meyakinkan, dan dipakai untuk super-resolution gambar, image-to-image translation (sketsa ke foto, siang ke malam), data augmentation, dan pengeditan gaya. Generator yang sudah dilatih membuat gambar dalam satu forward pass, sehingga GAN cukup cepat untuk pemakaian real-time. Adversarial loss-nya juga muncul di dalam sistem lain, misalnya untuk mempertajam decoder pada autoencoder gambar.
Ide utama
- GAN melatih generator dan discriminator saling berlawanan.
- Generator memetakan noise acak z menjadi sampel dan tidak pernah melihat data asli secara langsung.
- Discriminator adalah binary classifier yang mengeluarkan probabilitas bahwa sebuah input itu asli.
- Pada equilibrium ideal, distribusi hasil generator cocok dengan data dan D mengeluarkan 0,5 di semua titik.
- Training tidak stabil: satu network bisa mengalahkan yang lain, dan generator bisa menyempit ke sedikit output.
- Generator yang sudah dilatih membuat sampel dalam satu forward pass.
Pertanyaan umum
Apa bedanya GAN dan VAE?
VAE dilatih merekonstruksi input-nya lewat latent code probabilistik dan memberi perkiraan likelihood, tetapi sampelnya cenderung buram. GAN tidak merekonstruksi apa pun; ia belajar hanya dari umpan balik discriminator, yang menghasilkan sampel lebih tajam, tetapi training-nya kurang stabil dan tanpa likelihood. Sebagian model menggabungkan keduanya, yaitu VAE dengan adversarial loss pada decoder-nya.
Apakah GAN masih dipakai setelah ada diffusion model?
Diffusion model kini unggul untuk text-to-image umum karena training-nya lebih andal dan cakupan datanya lebih luas. GAN tetap umum ketika kecepatan penting, seperti super-resolution real-time, filter video, dan pengeditan wajah. Adversarial loss juga dipakai untuk men-distill diffusion model menjadi generator cepat yang hanya butuh beberapa langkah.
Bisakah GAN menghasilkan teks?
Tidak mudah. Teks terdiri dari token diskret, dan memilih token bukan operasi yang differentiable, sehingga gradient discriminator tidak bisa mengalir kembali ke generator. Solusinya memakai reinforcement learning atau continuous relaxation seperti Gumbel-softmax, tetapi model bahasa autoregressive jauh lebih baik untuk teks.
Apa itu CycleGAN?
CycleGAN belajar menerjemahkan gambar antara dua domain, seperti kuda dan zebra, tanpa contoh berpasangan. Model ini melatih dua generator, satu untuk tiap arah, ditambah cycle-consistency loss: menerjemahkan gambar ke domain lain lalu kembali harus menghasilkan gambar aslinya. Dengan begitu, ia bisa belajar dari dua kumpulan gambar yang tidak saling cocok.
Penjelasan terkait
- Autoencoder & VAE · Dari kompresi ke generasi: autoencoder standar dan variational
- Diffusion Model · Hasilkan gambar dengan belajar membalik proses penambahan noise yang bertahap
- Convolutional Neural Network · Cara CNN melihat dan memahami gambar
- Loss Function · Cara network mengukur kesalahannya
- KL Divergence · Mengukur seberapa berbeda dua distribusi
- Data Augmentation · Perbanyak data training secara buatan dengan salinan hasil transformasi untuk mengurangi overfitting
Referensi
- Goodfellow et al. (2014), "Generative Adversarial Nets", NeurIPS
- Radford, Metz & Chintala (2015), "Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks"
- Gulrajani et al. (2017), "Improved Training of Wasserstein GANs"
- Karras, Laine & Aila (2019), "A Style-Based Generator Architecture for Generative Adversarial Networks", CVPR
Terakhir diperbarui