最近學習了一篇ACL會議上的文章,講的是做一個短文對話的神經反映機,
原文:
會議:ACL(2015)
文章條目: Lifeng Shang, Zhengdong Lu, Hang Li:
Neural Responding Machine for Short-Text Conversation. 1577-1586
寫下學習筆記:
拓展:Attention Model 注意力模型,本文中提到所采用的Encoder-Decoder框架。

可以把它看作適合處理由一個句子(或篇章)生成另外一個句子(或篇章)的通用處理模型。
X表示輸出的句子,Y表示輸出的句子。
Encoder對輸入句子進行編碼,轉化成中間語義表示
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明顯好於其他方法。
