Generator

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

Diagram jaringan saraf generatif berlawanan. Di tengah diagram
          terdapat kotak berlabel 'pemisah'. Dua cabang masuk ke kotak
          ini dari sebelah kiri.  Cabang atas dimulai di kiri atas diagram dengan kotak berlabel 'gambar dunia nyata'. Panah mengarah
          dari silinder ini ke kotak berlabel 'Sample'. Panah dari kotak
          berlabel 'Sample' masuk ke kotak 'Discriminator'. Cabang bawah
          dimasukkan ke dalam kotak 'Discriminator' yang dimulai dengan kotak berlabel 'Random
          Input'. Panah mengarah dari kotak 'Input Acak' ke kotak berlabel
          'Generator'. Panah mengarah dari kotak 'Generator' ke kotak
          'Sample' kedua. Panah mengarah dari kotak 'Sample' ke kotak 'Discriminator'. Di sisi kanan kotak 'Discriminator', dua
          panah mengarah ke dua
          kotak di sisi kanan diagram. Satu panah mengarah ke kotak
          berlabel 'Discriminator loss'. Panah lainnya mengarah ke kotak berlabel
          'Generator loss'. Kotak kuning berlabel dengan panah yang mengarah ke kiri dan
          kata 'Backpropagation' digambar di sekitar kotak 'Random Input',
          kotak 'Generator', kotak 'Sample' bawah, kotak 'Discriminator',
          kotak berlabel 'Real' dan 'Fake', serta kotak 'Generator
          loss' untuk menunjukkan bahwa backpropagation beroperasi pada bagian
          sistem yang tertutup dalam kotak kuning.

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:

  1. Contoh derau acak.
  2. Menghasilkan output generator dari sampel derau acak.
  3. Dapatkan klasifikasi diskriminator "Asli" atau "Palsu" untuk output generator.
  4. Menghitung kerugian dari klasifikasi diskriminator.
  5. Lakukan backpropagation melalui diskriminator dan generator untuk mendapatkan gradien.
  6. 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.