Repositori ini berisi metode pelatihan permusuhan baru untuk Agen Percakapan Generatif (GCA) kami.
Rincian lebih lanjut mengenai metode pelatihan baru ini dapat ditemukan dalam makalah Oswaldo Ludwig, "Pembelajaran Adversarial End-to-end untuk Agen Percakapan Generatif," arXiv:1711.10122 cs.CL, Nov 2017. Dalam hal publikasi menggunakan ide atau potongan kode dari repositori ini, mohon kutip makalah ini.
Metode kami mengasumsikan GCA sebagai sebuah generator yang bertujuan untuk mengelabui pihak yang melakukan diskriminasi yang melabeli dialog sebagai dialog yang dibuat oleh manusia atau dibuat oleh mesin. Dalam pendekatan kami, diskriminator melakukan klasifikasi tingkat token, yaitu menunjukkan apakah token saat ini dihasilkan oleh manusia atau mesin. Untuk melakukan hal ini, diskriminator juga menerima konteks ucapan (sejarah dialog) dan jawaban yang tidak lengkap hingga token saat ini sebagai masukan. Pendekatan baru ini memungkinkan pelatihan end-to-end dengan propagasi mundur. Proses percakapan mandiri memungkinkan untuk menghasilkan sekumpulan data yang dihasilkan dengan lebih banyak keragaman untuk pelatihan permusuhan. Pendekatan ini meningkatkan kinerja pada pertanyaan yang tidak terkait dengan data pelatihan.
Model terlatih yang tersedia di sini menggunakan kumpulan data yang dikumpulkan dari dialog kursus bahasa Inggris online, tersedia di sini.
Model GCA kami dapat dijelaskan dengan diagram alur berikut:
sedangkan pseudocode berikut menjelaskan algoritma GCA kami:
Pelatihan permusuhan ujung ke ujung kami yang baru dapat dijelaskan dengan model Keras berikut (diimplementasikan dalam file train_bot_GAN.py), yang disusun oleh generator dan diskriminator. Blok kuning milik GCA (generator), sedangkan blok hijau milik diskriminator. Blok putih dibagi antara generator dan diskriminator:
sedangkan pseudocode berikut menjelaskan algoritma baru (lihat makalah untuk definisi variabel):
Untuk mengobrol dengan model terlatih:
Untuk mengevaluasi baris dialog menggunakan diskriminator terlatih:
Untuk melatih end-to-end menggunakan metode adversarial baru:
Jika Anda ingin memulai pelatihan permusuhan dari awal, buat file bobot my_model_weights.h5 (yang telah dilatih sebelumnya dengan metode permusuhan baru) sama dengan my_model_weights20.h5 (yang telah dilatih sebelumnya oleh pemaksaan guru) dan jalankan train_script.py.