GAN mencoba mereplikasi distribusi probabilitas. Oleh karena itu, GAN harus menggunakan fungsi loss yang mencerminkan jarak antara distribusi data yang dihasilkan oleh GAN dan distribusi data yang sebenarnya.
Bagaimana cara menangkap perbedaan antara dua distribusi dalam fungsi GAN loss? Pertanyaan ini adalah area riset aktif, dan banyak pendekatan telah digagas. Kita akan membahas dua fungsi loss GAN yang umum di sini, yang keduanya diimplementasikan di TF-GAN:
- kerugian minimax: Fungsi kerugian yang digunakan dalam makalah yang memperkenalkan GAN.
- Wasserstein loss: Fungsi kerugian default untuk Estimator TF-GAN. Pertama kali dijelaskan dalam makalah tahun 2017.
TF-GAN juga menerapkan banyak fungsi kerugian lainnya.
Satu Fungsi Kerugian atau Dua?
GAN dapat memiliki dua fungsi kerugian: satu untuk pelatihan generator dan satu lagi untuk pelatihan diskriminator. Bagaimana dua fungsi kerugian dapat bekerja sama untuk mencerminkan pengukuran jarak antara distribusi probabilitas?
Dalam skema kerugian yang akan kita lihat di sini, kerugian generator dan diskriminator berasal dari satu ukuran jarak antara distribusi probabilitas. Namun, dalam kedua skema ini, generator hanya dapat memengaruhi satu istilah dalam pengukuran jarak: istilah yang mencerminkan distribusi data palsu. Jadi, selama pelatihan generator, kita menghapus istilah lain, yang mencerminkan distribusi data sebenarnya.
Pada akhirnya, kerugian generator dan diskriminator terlihat berbeda, meskipun berasal dari satu formula.
Kerugian Minimax
Dalam makalah yang memperkenalkan GAN, generator mencoba meminimalkan fungsi berikut, sedangkan diskriminator mencoba memaksimalkannya:
Dalam fungsi ini:
D(x)
adalah estimasi diskriminator tentang probabilitas bahwa instance data yang sebenarnya x adalah nyata.- Ex adalah nilai yang diharapkan dari semua instance data sebenarnya.
G(z)
adalah output generator saat diberi derau z.D(G(z))
adalah estimasi diskriminator tentang probabilitas bahwa instance palsu adalah nyata.- Ez adalah nilai yang diharapkan dari semua input acak ke generator (pada dasarnya, nilai yang diharapkan dari semua instance palsu yang dihasilkan G(z)).
- Formula ini berasal dari entropi silang antara distribusi yang sebenarnya dan yang dihasilkan.
Generator tidak dapat secara langsung memengaruhi istilah log(D(x))
dalam fungsi, sehingga,
untuk generator, meminimalkan kerugian setara dengan meminimalkan log(1 -
D(G(z)))
.
Di TF-GAN, lihat minimax_discriminator_loss dan minimax_generator_loss untuk implementasi fungsi loss ini.
Kerugian Minimax yang Diubah
Makalah GAN asli mencatat bahwa fungsi loss minimax di atas dapat menyebabkan GAN terjebak di tahap awal pelatihan GAN saat tugas diskriminator sangat mudah. Oleh karena itu, makalah ini menyarankan untuk mengubah kerugian generator sehingga generator mencoba memaksimalkan log D(G(z))
.
Di TF-GAN, lihat modified_generator_loss untuk implementasi modifikasi ini.
Kerugian Wasserstein
Secara default, TF-GAN menggunakan Wasserstein loss.
Fungsi loss ini bergantung pada modifikasi skema GAN (disebut "Wasserstein GAN" atau "WGAN") yang diskriminatornya tidak benar-benar mengklasifikasikan instance. Untuk setiap instance, fungsi ini akan menghasilkan angka. Angka ini tidak harus kurang dari satu atau lebih besar dari 0, sehingga kita tidak dapat menggunakan 0,5 sebagai nilai minimum untuk memutuskan apakah instance itu nyata atau palsu. Pelatihan diskriminator hanya mencoba membuat output lebih besar untuk instance nyata daripada instance palsu.
Karena tidak dapat benar-benar membedakan antara yang asli dan yang palsu, diskriminator WGAN sebenarnya disebut "kritikus", bukan "diskriminator". Perbedaan ini memiliki kepentingan teoretis, tetapi untuk tujuan praktis, kita dapat memperlakukannya sebagai konfirmasi bahwa input ke fungsi kerugian tidak harus berupa probabilitas.
Fungsi kerugian itu sendiri terlihat sederhana:
Kekurangan Kritikus: D(x) - D(G(z))
Diskriminator mencoba memaksimalkan fungsi ini. Dengan kata lain, model ini mencoba memaksimalkan perbedaan antara outputnya pada instance sebenarnya dan outputnya pada instance palsu.
Kerugian Generator: D(G(z))
Generator mencoba memaksimalkan fungsi ini. Dengan kata lain, algoritma ini mencoba memaksimalkan output diskriminator untuk instance palsunya.
Dalam fungsi ini:
D(x)
adalah output kritikus untuk instance sebenarnya.G(z)
adalah output generator saat diberi derau z.D(G(z))
adalah output kritikus untuk instance palsu.- Output kritikus D tidak harus antara 1 dan 0.
- Formula ini berasal dari earth mover distance antara distribusi yang sebenarnya dan yang dihasilkan.
Di TF-GAN, lihat wasserstein_generator_loss dan wasserstein_discriminator_loss untuk implementasi.
Persyaratan
Justifikasi teoretis untuk Wasserstein GAN (atau WGAN) mengharuskan bobot di seluruh GAN dipangkas agar tetap berada dalam rentang yang dibatasi.
Manfaat
GAN Wasserstein kurang rentan terhadap macet dibandingkan GAN berbasis minimax, dan menghindari masalah dengan gradien yang menghilang. Jarak earth mover juga memiliki keunggulan sebagai metrik yang sebenarnya: ukuran jarak dalam ruang distribusi probabilitas. Dalam hal ini, entropi silang bukanlah metrik.