debug_seq2seq
1.0.0
注意:儲存庫不被維護。如果您想承擔維護工作,請隨時私訊我。
使 keras 的 seq2seq 工作。並嘗試一下 seq2seq 的其他一些實作。
代碼包括:
警告
文件
漂亮的圖片
設定&運行
git clone https://github.com/nicolas-ivanov/debug_seq2seq
cd debug_seq2seq
bash bin/setup.sh
python bin/train.py
進而
python bin/test.py
結果
目前還沒有取得好的結果:
[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]
我的猜測是這種方法存在一些基本問題:
由於word2vec 向量用於單字表示,並且模型為每個下一個單字返回一個近似向量,因此此錯誤從一個單字累積到另一個單詞,因此從第三個單字開始,模型無法預測任何有意義的內容. .....這個問題可能是如果我們用「正確」向量(即對應於字典中實際單字的向量)替換每個時間戳的近似 word2vec 向量,則可以克服這個問題。這樣有道理嗎?然而,您需要深入研究 seq2seq 程式碼才能做到這一點。
第二個問題與單字取樣有關:即使您設法解決上述問題,如果您堅持使用 argmax() 來每次時間戳選擇最可能的單字,答案也會太簡單且無趣,例如:
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 .
不要誤導您:這些結果是在基於張量流的不同 seq2seq 架構上實現的。
可以使用溫度採樣以使輸出結果多樣化,但這同樣應該在 seq2seq 庫內完成。