Lensa ML

Cara Kerja GAN

Langkah 1 dari 6: Si Pemalsu dan Si Detektif

Dua network dalam duel kreatif

Generator"Si Pemalsu"Jelas PalsuDiscriminator"Si Detektif"PALSU!
Kualitas palsu0.15
D(real)
0.92
D(fake)
0.10
Kualitas
15%

Jelas palsu: discriminator sangat yakin. GAN mengadu Generator (pemalsu) dengan Discriminator (detektif). Geser slider untuk melihat keyakinan discriminator berubah saat kualitas gambar palsu membaik.

Geser slider Kualitas palsu dari 0 ke 1. Gambar asli mendapat skor σ(2.5) ≈ 0.92 di sini, dan gambar palsu naik dari sekitar 0,05 ke 0,88. Secara formal, kedua network memainkan percontoh minimax pada satu value function: min_G max_D E[log D(x)] + E[log(1 − D(G(z)))]. D ingin nilai itu tinggi dan G ingin nilai itu rendah. Goodfellow dkk. memperkenalkan ide ini pada 2014. GAN adalah implicit model: ia bisa menghasilkan sampel tetapi tidak memberi likelihood untuk gambar tertentu, berbeda dengan VAE.

Langkah 2 dari 6: Generator

Mencipta dari noise acak

Noise zDenseReshapeConvT0%Output (8x8)Berantakan!Generator Network
Noise seed42
Training0
Noise seed
42
Training
0%
Kualitas
0.05

Generator mengubah noise vector acak menjadi gambar lewat layer-layer-nya. Geser slider training untuk melihat kualitas output membaik seiring proses belajar. Tiap noise seed menghasilkan output yang berbeda.

Geser slider Noise seed dari 1 ke 200, lalu geser Training dari 0 ke 100. Demo ini menampilkan 8 nilai noise; generator sungguhan memakai vector z berisi 100 sampai 512 angka yang diambil dari distribusi Gaussian. DCGAN (Radford dkk., 2015) menetapkan desain standar: transposed convolution yang menggandakan ukuran gambar di tiap layer, batch normalization, dan ReLU, dengan tanh di output sehingga pixel berada antara −1 dan 1. Generator tidak pernah melihat gambar asli. Semua yang dipelajarinya datang lewat gradient dari putusan discriminator.

Langkah 3 dari 6: Discriminator

Belajar mengenali yang palsu

Asli(dari dataset)Palsu(dari generator)DiscriminatorD(real)0.92BenarD(fake)0.15Benarthreshold = 0.50
Threshold0.50
D(real)
0.92
D(fake)
0.15
Akurasi
100%

Discriminator mengeluarkan probabilitas bahwa tiap input itu asli. Decision threshold menetapkan batas antara "asli" dan "palsu". Output-nya tetap di 0,92 dan 0,15 saat kamu menggesernya; hanya putusannya yang berubah. Batas berapa pun antara 0,15 dan 0,92 mengklasifikasikan keduanya dengan benar.

Geser slider Threshold dari 0,1 ke 0,99 dan lihat putusannya berubah sementara dua output D tetap. Threshold membantu membaca demo ini, tetapi training tidak pernah memakainya. Discriminator di-train dengan binary cross-entropy pada probabilitas mentahnya: −ln D(x) untuk gambar asli dan −ln(1 − D(G(z))) untuk gambar palsu. Dengan D = 0.92 pada gambar asli, loss-nya −ln 0.92 ≈ 0.08. Secara arsitektur, ini classifier gambar biasa, umumnya CNN dengan leaky ReLU dan strided convolution, yang berakhir di satu output sigmoid. Gradient-nya, bukan akurasinya, yang melatih generator.

Langkah 4 dari 6: Percontoh Adversarial

Tiap network membaik untuk mengalahkan yang lain

Mencocokkan Distribusi 2DPalsu (buatan)Asli (Gaussian)Kurva loss3.00Epochln(2)G lossD loss
Epoch0
Epoch
0
G loss
3.00
D loss
0.30

Training berjalan bergantian: Discriminator belajar mendeteksi yang palsu, lalu Generator belajar mengelabuinya. Titik palsu (ungu) bergerak ke distribusi asli (hijau). Pakai Putar, Satu Langkah, atau slider Epoch untuk mengikuti training.

Tekan Putar, atau pakai Satu Langkah dan slider Epoch, untuk mengikuti 50 epoch. Training sungguhan bergantian: satu langkah pada D dengan G dibekukan, lalu satu langkah pada G dengan D dibekukan. Minimax loss asli hampir tidak memberi gradient ke G di awal, ketika D mudah menolak gambar palsu dan log(1 − D(G(z))) nyaris datar. Karena itu, dalam praktik G meminimalkan −log D(G(z)). Non-saturating loss ini memberi gradient kuat justru saat gambar palsunya buruk. G loss di demo ini mulai dari 3,0, dekat dengan −ln(0.05).

Langkah 5 dari 6: Mencapai Equilibrium

Saat generator mengelabui discriminator pada 50% percobaan

Keseimbangan GAND50%G50%EquilibriumKeyakinan D pada gambar palsutarget 0.500.50
Keseimbangan0.50
Keyakinan D
0.50
G loss
0.70
D loss
0.69
Kondisi
Equilibrium

Mendekati Nash equilibrium: Discriminator mengeluarkan ~0,50 untuk semua input. Kedua network saling mendorong untuk membaik. Loss konvergen di dekat ln(2) ≈ 0.693.

Geser slider Keseimbangan dari ujung ke ujung dan perhatikan kartu Kondisi. Goodfellow dkk. membuktikan bahwa untuk G tetap, discriminator terbaik adalah D∗(x) = p_data(x) / (p_data(x) + p_g(x)). Kalau p_g sama dengan p_data, nilainya 0,5 di semua titik, dan value function mencapai −2 ln 2 ≈ −1.386. Dalam praktik, titik itu sulit dicapai. Penstabil yang umum antara lain Wasserstein loss dengan gradient penalty (WGAN-GP), spectral normalization, dan learning rate terpisah untuk G dan D. Mode collapse, ketika G hanya menghasilkan sedikit jenis output, adalah kegagalan paling umum.

Langkah 6 dari 6: Apa yang Bisa Dibuat GAN

Gambar, musik, teks, dan lainnya

Menjelajahi latent spacez1 (gaya)z2 (konten)Output yang dihasilkanStyleGANPix2PixSRGANCycleGAN
z1 (gaya)0.50
z2 (konten)0.50
z1
0.50
z2
0.50
Output seed
100

GAN mempelajari latent space yang mulus, tempat titik yang berdekatan menghasilkan output yang mirip. Geser kedua slider untuk bergerak di latent space 2D dan lihat output berbaur mulus di antara keempat sudut.

Geser z1 (gaya) dan z2 (konten) untuk bergerak di latent grid. Di sini kedua sumbu adalah campuran tetap dari empat seed. Pada GAN hasil training, arah yang bermakna harus dicari setelah training. StyleGAN (Karras dkk., 2019) memudahkan hal ini dengan memetakan z lewat network 8 layer ke style vector w yang mengendalikan tiap layer, sehingga layer awal menentukan pose dan layer akhir menentukan warna dan tekstur. Conditional GAN menerima label atau gambar sebagai input tambahan: pix2pix mengubah sketsa menjadi foto, dan SRGAN mempertajam gambar beresolusi rendah.

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

Referensi

  1. Goodfellow et al. (2014), "Generative Adversarial Nets", NeurIPS
  2. Radford, Metz & Chintala (2015), "Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks"
  3. Gulrajani et al. (2017), "Improved Training of Wasserstein GANs"
  4. Karras, Laine & Aila (2019), "A Style-Based Generator Architecture for Generative Adversarial Networks", CVPR

Terakhir diperbarui