對話模型此前的研究大致有三個方向:基於規則、基於信息檢索、基於機器翻譯。基於規則的對話系統,顧名思義,依賴於人們周密設計的規則,對話內容限制在特定領域下,實際應用如智能客服,智能場館預定系統。基於信息檢索是指根據輸入語句,在回復候選集中匹配最相近的語句作為回復,涉及到特征與排序算法的選擇。優點是得到的回復通常語法正確、語義明確,但由於回復是事先存在的,因此不能很好的適應語境。還有一種思路源自機器翻譯,使用神經網絡encode-decode框架:將輸入語句映射為向量,根據向量生成回復。需要注意的是,對話生成與機器翻譯有明顯不同的地方:機器翻譯要求輸入與輸出的語義完全一致,但在對話中需要有話題深入等語義偏移的情況。
這里總結的4篇文章均基於機器翻譯的思路,使用神經網絡為對話生成建模。第一篇文章是最典型的encode-decode結構;第二篇文章在decode網絡輸入部分做了修改,建模“回復中的詞語各側重於上下文不同部分”這一情況;第三篇文章在encode網絡處做了修改,沒有使用與decode部分同類的網絡,輸入也換成了context與message的bag-of-word,直觀理解,更偏向於對輸入語句主題的提煉挖掘。第四篇文章修改了decode網絡的目標函數,意圖使系統生成更豐富的回答,而不是一些通用於各種語境的無效回復,如”I don’t know”。
1.《A Neural Conversational Model》
purely data driven approach without rules,采用了seq2seq框架,使用兩個LSTM,分別:將輸入語句映射為固定長度的向量,根據向量預測對話中的下一句話。在特定主題的數據集IT helpdesk troubleshooting和無特定主題的電影對白數據集OpenSubtitles上進行了實驗,可以回答某些簡單問題,但是與其他對話系統一樣,存在前后話題一致性的問題。
Overview:
2.《Neural Responding Machine for Short-Text Conversation》
同樣采用了seq2seq框架,使用的是兩個RNN:從輸入語句中習得潛在語義(encode),然后根據潛在語義生成應答語句(decode)。這篇論文創新之處在於decode網絡輸入變量的構造上——往常的seq2seq模型是將encode網絡的最后一個隱狀態作為decode網絡各個時刻的輸入;但在這里,是將encode網絡各個時刻的隱狀態加權之后,作為decode網絡不同時刻的輸入。不同時刻下,decode網絡中的輸入不同,因為對encode隱狀態使用的權值不同。直觀的理解是,對於decode網絡將生成的新詞,它對應的是上下文信息中的某一部分,而不是整個上下文信息,因此使用權重來加強對應的部分。這種思路最初見於《NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE》,並且在其中提到了權重的計算方法:需要計算此時decode網絡的前一個隱狀態和的encode網絡各隱狀態的“對齊”情況,單獨使用一個神經網絡訓練完成的。文中取的最好效果的模型還需要在上述方法中加一些改進:輸入到decode網絡各時刻的變量,由encode網絡各時刻隱狀態加權結果與encode網絡最后時刻隱狀態連接而成。
Overview:
Decoder:standard RNN
Global scheme
local scheme:
Combine global and local:
3.《A Neural Network Approach to Context Sensitive Generation of Conversational Responses》
encoder為多層前向網絡,decoder為RNN。論文中將對話分為context,message,response。其中,為了保持上下文信息,在encoder的輸入為對話中context和message的bag-of-word(文中考慮了context、message詞袋合並、分開兩種情況),並且encoder網絡最后一層的輸出向量參與到decoder的每個隱層計算中去。
4.《A Diversity-Promoting Objective Function for Neural Conversation Models》
對話模型傾向於生成一些通用的回答,譬如“I don’t know”,無論前一句是什么都適用。針對這個問題,作者提出了新的decode網絡目標函數,希望可以生成多樣化的回答。Decode網絡通常使用的目標函數是使得輸出句子在給定輸入時取得最大似然(見公式7),作者提出目標函數應使得輸入句與輸出句有最大互信息(見公式8),以此來限制通用的、與上下文無關的回答。
作者對公式8進行了兩種變形(公式9,公式10),對應着論文中的兩種實現思路,推導過程及結果見下圖。針對公式9,作者還進一步考慮了:頭幾個生成的詞語對整個輸出句子的影響很大,因此對頭幾個詞乘上懲罰系數,鼓勵那些概率不那么大的詞作為句首,希望借此生成更豐富的回答;鼓勵生成更長的句子,但設有上限(20個詞)。針對公式10,需要計算給定回復下得到輸入句的概率(P(S|T)),這要求先生成回復T,而T搜索空間極為巨大。故作者在實現時先使用P(S|T)求得N-best候選應答,然后在再根據完整的公式10重排,得到最佳應答(近似)。