基于seq2seq注意力模型實作聊天機器人
分類
根據應用目的劃分
-
垂直域聊天機器人
目标驅動型,有明确的服務目标及對象,如客服機器人,兒童教育機器人等訂業務機器人。
-
開放域聊天機器人
無目标驅動,閑聊機器人,手機助手及遊戲npc。
根據實作技術劃分
-
檢索式聊天機器人
事先存好一個對話庫,系統接收到使用者輸入的問句後搜尋對話庫中最為比對的回答。這要求對話庫覆寫的内容情形要足夠多。優點是回答品質好因為回答都是真實的人語回答非生成,表達自然。
-
生成式聊天機器人
根據使用者輸入的句子自動生成一句話作為應答。好處是可以覆寫任意話題的使用者問句,缺點是自動生成的句子品質比較低,可能有文法錯誤。
這裡的ChatBot實作是Generative_Model(生成模型),生成意料之外的答案
項目相關的神經網絡技術
RNN循環神經網絡
一般神經網絡沒有記憶功能,一樣的Input對應一樣的Output。
RNN則是一種對序列型資料進行模組化的深度模型。具有記憶功能,用隐狀态 h 記憶上一個輸入的影響,即判斷一個地點是目的地還是出發地時是根據其前一個詞來判斷的,而 h 就是記錄前一個詞是離開還是前往。
RNN變體結構
1. N:1
用于處理序列分類問題:文本分類,句子情感傾向分類,視訊分類
2. 1:N
圖像生成文字,從類别中生成音樂或語音;隻在序列開始時進行輸入計算,還有一種結構是吧輸入資訊x作為每個階段的輸入
3. N:M
不限制輸入和輸出序列長度是以應用範圍非常廣泛。機器翻譯,對話中的問題與回答都是不等長的。還有文本摘要,閱讀了解,語音識别(語音-文字)
Encoder-Decoder模型(Seq2Seq模型),可以了解為兩個RNN網絡構成。原始RNN中要求N與M序列要等長。
‘将輸入資料-問句(word2vec組成)-編碼成一個上下文向量c(Encoder),然後通過另一個RNN對c進行解碼(Decoder)成-回答-’這裡的c可以取最後一個隐狀态的值,也可以做變換。
LSTM
但是RNN有一個缺點就是前期層會因為梯度消失而停止學習,RNN會忘記在更長序列中看到的東西,進而隻擁有短期記憶。
為了解決長序列(長時間記憶問題)提出了LSTM/GRU。
LSTM/GRU相對于RNN增加了一個遺忘門,學會字保留相關關鍵資訊進行預測。
聊天機器人的搭建
####基于注意力機制的LSTM-Seq2Seq模型
-
用向量表示單詞
用第三方開源庫Gensim包含多種主題算法可訓練詞向量word2vec
-
注意力機制
由于在每個econder-decoder中的語義特征c長度不固定,有的表意複雜較長。是以引入Attention機制對每個時間輸入不同的c的來解決這個問題
兩種注意力機制:Luong型和Bahdanau型