The kertas pada Gans mengatakan diskriminator menggunakan gradien berikut untuk kereta:
The nilai-nilai yang sampel, melewati generator untuk menghasilkan sampel data, dan kemudian diskriminator yang backpropogated menggunakan sampel data yang dihasilkan. Setelah generator menghasilkan data, generator tidak lagi berperan dalam pelatihan diskriminator. Dengan kata lain, generator dapat sepenuhnya dihapus dari metrik dengan membuatnya menghasilkan sampel data dan kemudian hanya bekerja dengan sampel.
Saya sedikit lebih bingung tentang bagaimana generator dilatih. Ini menggunakan gradien berikut:
Dalam hal ini, pembeda adalah bagian dari metrik. Itu tidak bisa dihapus seperti kasus sebelumnya. Hal-hal seperti kuadrat terkecil atau log kemungkinan dalam model diskriminatif biasa dapat dengan mudah dibedakan karena mereka memiliki definisi yang bagus, bentuknya dekat. Namun, saya agak bingung tentang bagaimana Anda melakukan backpropogate ketika metrik tergantung pada jaringan saraf lain. Apakah Anda pada dasarnya melampirkan output generator ke input diskriminator dan kemudian memperlakukan semuanya seperti satu jaringan raksasa di mana bobot dalam porsi diskriminator konstan?
sumber
D_loss
danG_loss
? Memaksimalkan ruang apa? IIUC,D_real
danD_fake
masing-masing batch, jadi kami memaksimalkan batch ??Singkatnya: Ya. (Saya menggali beberapa sumber GAN untuk memeriksa ulang ini)
Ada juga banyak lagi pelatihan GAN seperti: apakah kita harus memperbarui D dan G setiap kali atau D pada iterasi aneh dan G pada genap, dan banyak lagi. Ada juga makalah yang sangat bagus tentang topik ini:
https://arxiv.org/abs/1606.03498
sumber
Baru-baru ini saya telah mengunggah koleksi berbagai model GAN di github repo. Berbasis torch7, dan sangat mudah dijalankan. Kode ini cukup sederhana untuk dipahami dengan hasil eksperimen. Semoga ini bisa membantu
https://github.com/nashory/gans-collection.torch
sumber