Bagian generator GAN belajar membuat data palsu dengan menggabungkan masukan dari diskriminator. Model ini belajar membuat diskriminator mengklasifikasikan output-nya sebagai nyata.
Pelatihan generator memerlukan integrasi yang lebih ketat antara generator dan diskriminator daripada yang diperlukan pelatihan diskriminator. Bagian GAN yang melatih generator mencakup:
- input acak
- jaringan generator, yang mengubah input acak menjadi instance data
- jaringan diskriminator, yang mengklasifikasikan data yang dihasilkan
- output diskriminator
- kerugian generator, yang menghukum generator karena gagal mengelabui diskriminator
Gambar 1: Backpropagation dalam pelatihan generator.
Input Acak
Jaringan saraf memerlukan beberapa bentuk input. Biasanya, kita memasukkan data yang ingin kita lakukan sesuatu, seperti instance yang ingin kita klasifikasikan atau buat prediksinya. Namun, apa yang kita gunakan sebagai input untuk jaringan yang menghasilkan instance data yang sepenuhnya baru?
Dalam bentuknya yang paling dasar, GAN menggunakan derau acak sebagai inputnya. Generator kemudian mengubah derau ini menjadi output yang bermakna. Dengan memasukkan derau, kita dapat membuat GAN menghasilkan berbagai data, mengambil sampel dari berbagai tempat dalam distribusi target.
Eksperimen menunjukkan bahwa distribusi derau tidak terlalu penting, sehingga kita dapat memilih sesuatu yang mudah diambil sampelnya, seperti distribusi yang seragam. Untuk memudahkan, ruang tempat pengambilan sampel derau biasanya memiliki dimensi yang lebih kecil daripada dimensi ruang output.
Menggunakan Diskriminator untuk Melatih Generator
Untuk melatih jaringan saraf, kita mengubah bobot jaringan untuk mengurangi error atau hilangnya output-nya. Namun, dalam GAN, generator tidak terhubung langsung ke hilangnya yang kita coba pengaruhi. Generator memasukkan data ke dalam jaringan diskriminator, dan diskriminator menghasilkan output yang ingin kita pengaruhi. Loss generator menghukum generator karena menghasilkan sampel yang diklasifikasikan oleh jaringan diskriminator sebagai palsu.
Bagian jaringan tambahan ini harus disertakan dalam backpropagation. Backpropagation menyesuaikan setiap bobot ke arah yang benar dengan menghitung dampak bobot terhadap output — bagaimana output akan berubah jika Anda mengubah bobot. Namun, dampak bobot generator bergantung pada dampak bobot diskriminator yang dimasukkan. Jadi, backpropagation dimulai dari output dan mengalir kembali melalui diskriminator ke generator.
Pada saat yang sama, kita tidak ingin diskriminator berubah selama pelatihan generator. Mencoba mencapai target yang bergerak akan membuat masalah yang sulit menjadi lebih sulit bagi generator.
Jadi, kita melatih generator dengan prosedur berikut:
- Contoh derau acak.
- Menghasilkan output generator dari sampel derau acak.
- Dapatkan klasifikasi diskriminator "Asli" atau "Palsu" untuk output generator.
- Menghitung kerugian dari klasifikasi diskriminator.
- Lakukan backpropagation melalui diskriminator dan generator untuk mendapatkan gradien.
- Gunakan gradien untuk hanya mengubah bobot generator.
Ini adalah satu iterasi pelatihan generator. Di bagian berikutnya, kita akan melihat cara melakukan pelatihan generator dan diskriminator.