Catatan: repositori tidak dikelola. Jangan ragu untuk PM saya jika Anda ingin melakukan pemeliharaan.
Buat seq2seq untuk kerja keras. Dan cobalah juga beberapa implementasi seq2seq lainnya.
Kode tersebut meliputi:
Peringatan
Dokumen
Gambar yang bagus
Siapkan & Jalankan
git clone https://github.com/nicolas-ivanov/debug_seq2seq
cd debug_seq2seq
bash bin/setup.sh
python bin/train.py
kemudian
python bin/test.py
Hasil
Tidak ada hasil baik yang dicapai sejauh ini:
[why ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[who ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[yeah ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[what is it ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as as i]
[why not ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
[really ?] -> [i ' . . $$$ . $$$ $$$ $$$ $$$ as as as as i i]
Dugaan saya adalah ada beberapa masalah mendasar dalam pendekatan ini:
Karena vektor word2vec digunakan untuk representasi kata dan model mengembalikan vektor perkiraan untuk setiap kata berikutnya, kesalahan ini diakumulasikan dari satu kata ke kata lainnya dan dengan demikian mulai dari kata ketiga model gagal memprediksi apa pun yang berarti... Masalah ini mungkin diatasi jika kita mengganti perkiraan vektor word2vec setiap stempel waktu dengan vektor yang "benar", yaitu vektor yang sesuai dengan kata sebenarnya dari kamus. Apakah itu masuk akal? Namun Anda perlu menggali kode seq2seq untuk melakukan itu.
Masalah kedua berkaitan dengan pengambilan sampel kata: meskipun Anda berhasil menyelesaikan masalah yang disebutkan di atas, jika Anda tetap menggunakan argmax() untuk memilih kata yang paling mungkin setiap kali dicap, jawabannya akan terlalu sederhana dan tidak menarik, seperti:
are you a human? -- no .
are you a robot or human? -- no .
are you a robot? -- no .
are you better than siri? -- yes .
are you here ? -- yes .
are you human? -- no .
are you really better than siri? -- yes .
are you there -- you ' re not going to be
are you there?!?! -- yes .
Agar tidak menyesatkan Anda: hasil ini dicapai pada arsitektur seq2seq yang berbeda, berdasarkan tensorflow.
Pengambilan sampel dengan suhu dapat digunakan untuk mendiversifikasi hasil keluaran, namun hal itu sekali lagi harus dilakukan di dalam perpustakaan seq2seq.