Deep Reinforcement Learning for Dialogue Generation

本文將會分享一篇深度增強學習在bot中應用的文章,增強學習在很早的時候就應用於bot中來解決一些實際問題,最近幾年開始流行深度增強學習,本文作者將其引入到最新的bot問題中。paper的題目是Deep Reinforcement Learning for Dialogue Generation,作者是Jiwei Li,最早於2016年6月10日發在arxiv上。

現在學術界中bot領域流行的解決方案是seq2seq,本文針對這種方案拋出兩個問題:

1、用MLE作為目標函數會導致容易生成類似於「呵呵呵」的reply,grammatical、safe但是沒有營養,沒有實際意義的話。

2、用MLE作為目標函數容易引起對話的死循環,如下圖:

解決這樣的問題需要bot框架具備以下的能力:

1、整合開發者自定義的回報函數,來達到目標。

2、生成一個reply之後,可以定量地描述這個reply對後續階段的影響。

所以,本文提出用seq2seq+增強學習的思路來解決這個問題。

說到增強學習,就不得不提增強學習的四元素:

  • Action

這裡的action是指生成的reply,action空間是無限大的,因為可以reply可以是任意長度的文本序列。

  • State

這裡的state是指[pi,qi],即上一輪兩個人的對話表示。

  • Policy

policy是指給定state之後各個action的概率分布。可以表示為:pRL(pi+1|pi, qi)

  • Reward

reward表示每個action獲得的回報,本文自定義了三種reward。

1、Ease of Answering

這個reward指標主要是說生成的reply一定是容易被回答的。本文用下面的公式來計算容易的程度:

其實就是給定這個reply之後,生成的下一個reply是dull的概率大小。這裡所謂的dull就是指一些「呵呵呵」的reply,比如「I don』t know what you are talking about」等沒有什麼營養的話,作者手動給出了這樣的一個dull列表。

2、Information Flow

生成的reply盡量和之前的不要重複。

這裡的h是bot的reply表示,i和i+1表示該bot的前後兩輪。這個式子表示同一個bot兩輪的對話越像reward越小。

3、Semantic Coherence

這個指標是用來衡量生成reply是否grammatical和coherent。如果只有前兩個指標,很有可能會得到更高的reward,但是生成的句子並不連貫或者說不成一個自然句子。

這裡採用互信息來確保生成的reply具有連貫性。

最終的reward由這三部分加權求和計算得到。

增強學習的幾個要素介紹完之後,接下來就是如何模擬的問題,本文採用兩個bot相互對話的方式進行。

step 1 監督學習。將數據中的每輪對話當做target,將之前的兩句對話當做source進行seq2seq訓練得到模型,這一步的結果作為第二步的初值。

step 2 增強學習。因為seq2seq會容易生成dull reply,如果直接用seq2seq的結果將會導致增強學習這部分產生的reply也不是非常的diversity,從而無法產生高質量的reply。所以,這裡用MMI(Maximum Mutual Information,這裡與之前Jiwei Li的兩篇paper做法一致)來生成更加diversity的reply,然後將生成最大互信息reply的問題轉換為一個增強學習問題,這裡的互信息score作為reward的一部分(r3)。用第一步訓練好的模型來初始化policy模型,給定輸入[pi,qi],生成一個候選列表作為action集合,集合中的每個reply都計算出其MMI score,這個score作為reward反向傳播回seq2seq模型中,進行訓練。整個模擬過程如下圖:

兩個bot在對話,初始的時候給定一個input message,然後bot1根據input生成5個候選reply,依次往下進行,因為每一個input都會產生5個reply,隨著turn的增加,reply會指數增長,這裡在每輪對話中,通過sample來選擇出5個作為本輪的reply。

接下來就是評價的部分,自動評價指標一共兩個:

1、對話輪數。

很明顯,增強學習生成的對話輪數更多。

2、diversity。

增強學習生成的詞、片語更加豐富和多樣。

下圖給出了一個MMI seq2seq與RL方法的對比結果:

RL不僅僅在回答上一個提問,而且常常能夠提出一個新的問題,讓對話繼續下去,所以對話輪數就會增多。原因是,RL在選擇最優action的時候回考慮長遠的reward,而不僅僅是當前的reward。

本文是一篇探索性的文章,將seq2seq與RL整合在一起解決bot的問題是一個不錯的思路,很有啟發性,尤其是用RL可以將問題考慮地更加長遠,獲得更大的reward。用兩個bot相互對話來產生大量的訓練數據也非常有用,在實際工程應用背景下數據的缺乏是一個很嚴重的問題,如果有一定質量的bot可以不斷地模擬真實用戶來產生數據,將deep learning真正用在bot中解決實際問題就指日可待了。

RL解決bot問題的文章在之前出現過一些,但都是人工給出一些feature來進行增強學習,隨著deepmind用seq2seq+RL的思路成功地解決video games的問題,這種seq2seq的思想與RL的結合就成為了一種趨勢,朝著data driven的方向更進一步。

一點思考,歡迎交流。


推薦閱讀:

盤點丨2016年機器學習十大文章整理
Bagging
驗證式開發——簡論演算法開發的正確姿勢
我們離機器人理財還有多遠?

TAG:自然语言处理 | 深度学习DeepLearning | 机器学习 |