最近學習了一篇ACL會議上的文章,講的是作一個短文對話的神經反映機,網絡
原文:框架
會議:ACL(2015)post
文章條目: Lifeng Shang, Zhengdong Lu, Hang Li:學習
Neural Responding Machine for Short-Text Conversation. 1577-1586編碼
寫下學習筆記:翻譯
拓展:Attention Model 注意力模型,本文中提到所採用的Encoder-Decoder框架。設計
能夠把它看做適合處理由一個句子(或篇章)生成另一個句子(或篇章)的通用處理模型。3d
X表示輸出的句子,Y表示輸出的句子。code
Encoder對輸入句子進行編碼,轉化成中間語義表示orm
Decoder對中間語義及已經生成的歷史信息y1,y2,…生成i時刻要生成的單詞yi,不少個yi串起來就造成了Y,即輸出的句子。
其中編碼和解碼都有不少可用的神經網絡模型,如CNN/RNN/LSTM/深度LSTM等等,有不少種組合能夠嘗試。在文本處理中比較常見的Endocer和Decoder都採用RNN模型。
而本文也採用了seq2seq(Sequence to Sequence)模型,該模型能夠運用在不少地方,好比說文章自動摘要、機器翻譯、人機對話等等。(其實就是一個Encoder和Decoder模型,而後Encoder和Decoder用的都是RNN中的GRU網絡)。所以本文中的Encoder-Decoder模型本質上來講應該是這樣的:
Short-Text Conversation(STC)指的是單輪對話任務——也就是對於每個輸入post給出一個對應的response。以往的STC方法主要有兩種:檢索式的方法(retrieval-based method)和統計機器翻譯(statistical machine learning, SMT)。可是檢索式的事先都固定好了,太缺少多樣性,而統計機器翻譯將它做爲一個翻譯任務,而有時候post和respond是徹底沒有一點語義關係的。
本文采起通用的Encoder-Decoder模型,同時利用了seq2seq模型,在編碼和解碼的過程當中都用的是循環神經網絡CNN中的GRU(沒有用LSTM是由於LSTM的參數太多,用GRU相對簡單一些而且效果還不錯),並設計了一個基於神經網絡的短文對話響應機NRM(至關於機器對話),訓練數據是經過微博收集的大量一輪的對話。
首先獲取數據,聽從經典的步驟,首先是刪除無心義詞如」wow」;篩除廣告;只留前30我的的回覆。
接下來轉化的模型:
主要是這個L很重要,要可以表示輸入句子的特性,這裏要用到注意力模型肯定h中的哪一步分須要着重考慮。由輸入數據和y1,y2,…yi-1決定。
解碼用到下面的模型:
虛線表明 g(.) ,實線表明 f(.)
編碼方案提出了三種:
global scheme(NRM-glo):
簡單定義 hT 爲Ct
local scheme(NRM-loc):
這裏用到了注意力模型(AM模型),動態決定 ,而,
hybrid scheme combines the aforementioned 2(NRM-hyb):
第一種全局的方法能抓住post的全局特徵,而第二種局部的方法能倚靠AM模型選擇不一樣位置的單詞做爲重要特徵,所以第三種方法能夠混合一下前兩種方法。模型以下:
實驗證實檢索式的方法效果和NRM-glo差很少,由於它基本使用的都是預約義的responses,不會有一些語法上的問題,同時匹配特徵保證了responses和post的相關性,
所以從表面上看來這是最合適的回答,可是實際上它只是重複了post說的內容而已,而NRM-hyb結合了global和local的優勢以後,performance明顯好於其餘方法。