Generator

Bagian generator GAN belajar membuat data palsu dengan menggabungkan masukan dari pembeda. Hal ini belajar untuk membuat discriminator mengklasifikasikan outputnya sebagai nyata.

Pelatihan generator memerlukan integrasi yang lebih erat antara generator dan discriminator daripada yang diperlukan untuk pelatihan diskriminator. Bagian GAN yang melatih generator meliputi:

  • input acak
  • jaringan generator, yang mengubah input acak menjadi instance data
  • jaringan pembeda, yang mengklasifikasikan data yang dihasilkan
  • output discriminator
  • kerugian generator, yang mengganjar generator karena gagal menipu diskriminator

Diagram jaringan musuh generatif. Di bagian tengah diagram terdapat kotak berlabel 'discriminator'. Dua cabang dimasukkan ke kotak ini dari kiri.  Cabang atas dimulai di kiri atas diagram dengan kotak berlabel 'gambar dunia nyata'. Panah mengarah dari silinder ini ke kotak berlabel 'Contoh'. Panah dari kotak berlabel 'Sampel' feed ke kotak 'Discriminator'. Cabang bawah
          memasukkan ke kotak 'Discriminator' yang dimulai dengan kotak berlabel 'Input
          Acak'. Panah mengarah dari kotak 'Input Acak' ke kotak berlabel
          ##99;Generator'. Panah mengarah dari kotak 'Generator' ke kotak
          'Contoh' kedua. Panah mengarah dari kotak 'Contoh' ke
          kotak 'Discriminator. Di sisi kanan kotak 'Discriminator' dua
          panah mengarah ke dua
          kotak di sisi kanan diagram. Satu panah mengarah ke kotak
          berlabel 'Kehilangan diskriminasi'. Panah lainnya mengarah ke kotak berlabel ';Generator kerugian'. Kotak kuning yang diberi label dengan panah yang mengarah ke kiri dan kata 'Backpropagation' digambar di sekitar 'Input Acak' kotak;

Gambar 1: Propagasi mundur dalam pelatihan generator.

Input Acak

Jaringan neural memerlukan beberapa bentuk input. Biasanya, kita memasukkan data yang ingin digunakan untuk melakukan sesuatu, seperti instance yang ingin kami klasifikasikan atau buat prediksinya. Namun, apa yang kita gunakan sebagai input untuk jaringan yang menghasilkan instance data yang benar-benar baru?

Dalam bentuknya yang paling dasar, GAN menggunakan derau acak sebagai inputnya. Generator kemudian mengubah derau ini menjadi output yang bermakna. Dengan menggunakan derau, kita dapat memperoleh GAN untuk menghasilkan berbagai macam data, dengan 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 Discriminator untuk Melatih Generator

Untuk melatih jaringan neural, kami mengubah bobot net untuk mengurangi error atau hilangnya output-nya. Namun, di GAN kami, generator tidak terhubung langsung ke kerugian yang ingin kami pengaruhi. Generator memasukkan feed bersih, dan discriminator menghasilkan output yang mencoba kita pengaruhi. Kerugian generator menghukum generator karena menghasilkan sampel yang diklasifikasikan oleh jaringan diskriminator sebagai palsu.

Bagian jaringan tambahan ini harus disertakan dalam propagasi mundur. Propagasi balik menyesuaikan setiap bobot ke arah yang tepat dengan menghitung dampak bobot pada output — bagaimana output akan berubah jika Anda mengubah bobot. Namun, dampak bobot generator bergantung pada dampak bobot diskriminator yang dimasukkan feed tersebut. Jadi, propagasi mundur dimulai dari output dan mengalir kembali melalui discriminator ke generator.

Pada saat yang sama, kami tidak ingin diskriminator berubah selama pelatihan generator. Mencoba mencapai target yang bergerak akan membuat masalah yang lebih sulit bagi generator.

Jadi, kita melatih generator dengan prosedur berikut:

  1. Contoh kebisingan acak.
  2. Menghasilkan output generator dari sampel derau acak.
  3. Klasifikasikan "Real" atau "Palsu" untuk output generator.
  4. Hitung kerugian dari klasifikasi pembeda.
  5. Melakukan propagasi mundur melalui discriminator dan generator untuk mendapatkan gradien.
  6. Menggunakan gradien untuk mengubah bobot generator saja.

Ini adalah salah satu iterasi pelatihan generator. Di bagian berikutnya, kita akan melihat cara menyusun latihan generator dan diskriminator.