AAAI2018會議中的應答生成

前言:本文將介紹2018AAAI中的五篇關於應答生成方面的論文,希望對大家有所啟發。

本文作者:李軍毅,2014級本科生,目前研究方向為機器學習,自然語言處理,來自中國人民大學信息學院社會大數據分析與智能實驗室。

備註:本文首發於知乎[RUC智能情報站],如需轉載請告知作者並註明本專欄文章地址。

論文一、《Hierarchical Recurrent Attention Network for Response Generation》

1、寫作動機

作者認為,雖然之前的論文對多輪對話的層次結構進行了建模,知道應答的生成應該考慮到上下文(context)信息,但是卻忽略了一個重要的事實,就是上下文中的句子(utterance)和單詞(word)對應答有著不同分量的影響。所以,作者提出了一種層次化的注意力機制來對多輪對話中不同層面的影響進行刻畫,分別是句子級注意力機制(utterance level attention)和單詞級注意力機制(word level attention)。

2、具體模型

問題定義:數據集 D={(U_i,Y_i)}^N_{i=1}U_i=(u_{i,1},u_{i,2},...,u_{i,m_i}) 表示上下文(context),每一個 u_{i,j} 表示一個句子, u_{i,j}=(w_{i,j,1},...,w_{i,j,T_{i,j}})w_{i,j,k}表示 u_{i,j}k個單詞,Y_i=(y_{i,1},y_{i,2},...,y_{i,T_i}) 表示應答。

Word Level Encoder:

對於一個 U=(u_1,...,u_m) ,論文使用雙向GRU將每個 u_i 編碼為 (h_{i,1},...,h_{i,T_i}) ,每個 h_{i,k}=concat(overrightarrow{h}_{i,k},overleftarrow{h}_{i,k})overrightarrow{h}_{i,k}overleftarrow{h}_{i,k} 分別表示GRU前向和後向的隱藏狀態。

Word Level Attention:

r_{i,t}=sum_{j=1}^{T_i}{alpha_{i,j,t}h_{i,j}} 表示Decoder第 t 步時,關於 u_i 的context vector。至於 alpha_{i,j,t}如何計算,後面介紹。

Utterance Level Encoder:

(r_{1,t},...,r_{m,t}) 將作為GRU的輸入,計算 (l_{1,t},...,l_{m,t})

Utterance Level Attention:

c_t=sum_{i=1}^{m}{eta_{i,t}l_{i,t}},表示Decoder在第 t 步時,關於整個 U 的context vector。至於 eta_{i,t}如何計算,後面介紹。

與傳統的attention機制不同,word level attention不僅依賴decoder,還依賴utterance level encoder。所以

alpha_{i,j,t}=frac{	ext{exp}(e_{i,j,t})}{sum_{k=1}^{T_i}{e_{i,k,t}}}

e_{i,j,t}=eta(s_{t-1},l_{i+1,t},h_{i,j})s_{t-1} 表示Decoder前一個狀態, l_{i+1,t} 表示utterance level encoder前一個狀態, h_{i,j} 表示word level encoder當前狀態。同理

eta_{i,t}=frac{	ext{exp}(e^{}_{i,t})}{sum_{k=1}^{m}{	ext{exp}(e^{}_{k,t})}}e^{}_{i,t}=eta(s_{t-1},l_{i,t})

論文二、《Augmenting End-to-End Dialog Systems with Commonsense Knowledge》

1、寫作動機

作者認為,在基於檢索的應答生成場景中,加入社會常識可以改善檢索結果的質量。

2、具體模型

上圖表示一個常識庫。它是一個語義網路,concept是它的節點,relation是它的邊,三元組 <concept1,relation,concept2> 稱為一個 assertion

問題定義:

x 是一個message(context), [y_1,y_2,...,y_K]in Y 是一個應答候選集。基於檢索的應答生成系統就是要選出最合適的 hat{y}=mathop{argmax}limits_{y in Y} f(x,y) ,其中 f(x,y) 是衡量 xy 之間的「相容性」的函數。

那麼,如何將常識庫融入我們的問題定義中呢?

以上圖為例。首先,事先定義好一個 Assertion={c:<c1,relation,c2>} 詞典,它的key是concept c ,value是三元組 assertion <c1,relation,c2> ,其中 c=c1 或者 c=c2 。然後,論文里又定義一個 A_x ,表示所有與message(context) x 有關的 assertion 三元組。這個 A_x 的建立規則是:對message文本取n-gram(所有uni-gram,bi-gram,...,n-gram)短語,然後從 Assertion 詞典選取那些與n-gram短語匹配的key所對應的value,加入到 A_x 中。至此,我們就得到了所有與message有關的常識。

Dual-LSTM Encoder:

上圖中下面的方框。利用LSTM結構對message x 和response y 進行編碼,得到 overrightarrow{x}overrightarrow{y} 向量, f(x,y)=sigma(overrightarrow{x}^TWoverrightarrow{y}) 計算兩者之間的「相容性」。

Tri-LSTM Encoder:

上圖中上面的方框。因為 c1c2 都有可能是幾個單詞通過下劃線連在一起的concept,所以我們將 c1 拆成 [c_{11},c_{12},c_{13},...]c2 拆成 [c_{21},c_{22},c_{23},...] ,至於為什麼不拆 relation ?因為concept是由多個常見詞連接起來的單詞,如果將這個合成詞直接作為詞典中的單詞,那麼詞典將會很大,而relation則沒有幾種。最終,三元組 <c1,r,c2> 將變為 [c_{11},c_{12},c_{13},...,r,c_{21},c_{22},c_{23},...] 的序列,我們對每個 assertion 序列利用LSTM進行編碼,得到 overrightarrow{a}_i 向量,然後,我們取response與所有常識「相容性」最大的值 max limits_{a in A_x} overrightarrow{a}^TW_aoverrightarrow{y}

最後,將兩個Encoder的「相容性」值加起來,最終選擇總和最大的response。

論文三、《Neural Response Generation with Dynamic Vocabularies》

1、寫作動機

作者認為,以前的生成模型在生成單詞時,模型需要遍歷整個詞典。如果詞典非常大,那麼每次遍歷都非常耗時。所以,作者提出,每次生成單詞時,都可以根據輸入的情況靈活地選擇需要遍歷的詞典的大小以及它裡面的詞,這樣將可以節省大量時間。

2、具體模型

問題定義:

數據集 D={(X_i,Y_i)}^N_{i=1}X_i 表示message, Y_i 表示response,生成 T_i 的目標詞典為 T_i=(t_{i,1},...,t_{i,|V|})|V| 表示詞典的大小,t_{i,j} in {0,1} ,0表示單詞不在詞典中,1表示單詞在詞典中。 T_i 是從多元伯努利分布 (eta_{i,1},...,eta_{i,|V|}) 中隨機採樣得到, eta_{i,j}=p(t_{i,j}=1)

那麼 eta_{i,j}=p(t_{i,j}=1) 又是怎麼得到呢?

如上圖,在詞典 V 中,單詞可以分為兩類:function words和content words。其中,function words出現10次以上,除了名詞、動詞、形容詞、副詞,它們保證了response的語法正確性和流暢性,在每個response中都可能出現,所以,這些單詞的 eta_{I(c)}=1I(c) 是這些單詞的索引;content words則是詞典中其他的詞,它們的 eta_{I(c)}=sigma(W^	ext{T}_ch_t+b_c)。最後,根據得到的多元伯努利分布 (eta_{i,1},...,eta_{i,|V|}) 隨機採樣得到 T_i ,進而得到目標詞典。得到詞典後,剩下的過程則和以前傳統的過程類似了。

論文四、《Customized Nonlinear Bandits for Online Response Selection in Neural Conversation Models》

1、寫作動機

這篇論文解決的問題是,基於檢索的應答生成場景下如何從候選應答集選擇合適應答的難題。論文使用的方法是多臂老虎機模型。

2、多臂老虎機模型

一個賭徒,要去搖老虎機,走進賭場一看,一排老虎機,外表一模一樣,但是每個老虎機吐錢的概率不一樣,他不知道每個老虎機吐錢的概率分布是什麼,那麼想最大化收益該怎麼辦?這就是多臂賭博機問題(Multi-armed bandit problem, K-armed bandit problem, MAB)。

如何解決呢?論文中使用的是湯普森抽樣方法。

假設每個臂產生收益的概率為p

我們不斷地試驗,去估計出一個置信度較高的*概率p的概率分布*就能近似解決這個問題了。

怎麼估計概率p的概率分布呢? 假設概率p的概率分布符合beta(wins, lose)分布,它有兩個參數: wins, lose。

每個臂都維護一個beta分布的參數。每次試驗後,選中一個臂,搖一下,有收益則該臂的wins增加1,否則該臂的lose增加1。

每次選擇臂的方式是:用每個臂現有的beta分布產生一個隨機數b,選擇所有臂產生的隨機數中最大的那個臂去搖。

3、具體模型

如上圖,左邊是context,使用雙向LSTM編碼, c_i 表示context向量,等於所有單詞向量 c^k_i 的平均和。右邊是response,也使用雙向LSTM編碼, u_j 表示response向量,等於所有單詞向量 u^k_j 的平均和。如果是傳統的離線學習過程,那麼訓練過程應該為:

p(label_{i,j}=1|c_i,u_j)=sigma(c_iMu^	ext{T}_j) L=-sum_{i,j}^{}{log p(label_{i,j}=1|c_i,u_j)}

對損失做反向傳播即可。

但本文解決的是在線學習場景,模型隨機選擇一個context,然後檢索到一個response,用戶對這個選擇做出打分,正確則reward=1,錯誤則reward=0。然後,作者企圖利用線性邏輯回歸湯普森採樣對reward進行擬合, r_{i,j}=sigma(x_tw)x_t=[c_i,u_j]

論文五、《Elastic Responding Machine for Dialog Generation with Dynamically Mechanism Selecting》

1、寫作動機

作者覺得,生成response時應該生成多種style的response,所以,作者提出了一種Elastic Responding Machine(ERM)模型,生成多種類型的response。

2、具體模型

  • Encoder-Decoder
  • Encoder-Diverter-Decoder

這個模型來自Zhou et al. 2017的《Mechanism-Aware Neural Machine for Dialogue Response Generation》。 S={m_i}^M_{i=1} 表示 M 個mechanism的集合,mechanism可以理解為style。Diverter的作用是選出最適合context c 的mechanism,通過公式 p(m_i|x)=frac{exp g(m_i,c)}{sum_{k=1}^{M}{exp g(m_k,c)}}

選擇評分最高的mechanism。最終生成response y 的概率為

p(y|x)=sum_{i=1}^{M}{p(y,m_i|x)}=sum_{i=1}^{M}{p(m_i|x)p(y|m_i,x)}

  • Encoder-Diverter-Filter-Decoder

本文作者在前文的基礎上,又加入了Filter模塊,作者的目的是從所有mechanism集合中選出一個子集 S_x ,包含足夠多的mechanism,能夠生成多種style的response。這個子集 S_x 需要滿足兩個條件:1)包含足夠多的mechanism;2)子集的mechanism沒有太高的重複性,沒有冗餘。選中了子集 S_x 後,生成response y 的概率為

p(y|x)=frac {sum_{m in S_x}^{}{p(m|x)p(y|m,x)}}{sum_{m in S_x}^{}{p(m|x)}}

那麼,怎麼選擇子集 S_x 呢?

論文使用的是強化學習的方法。

  • Action: a_t 表示停止動作, a_c 表示繼續動作。
  • State: S^{(k)}_x 表示子集中包含topk個mechanism的狀態。
  • Policy: pi(a_t|S^{(k)}_x)=frac {p(m_0|x)}{1-sum_{m in S^{(k)}_x}^{}{p(m|x)}}pi(a_c|S^{(k)}_x)=1-pi(a_t|S^{(k)}_x)m_0 表示停止的mechanism
  • Reward:作者認為,如果子集沒有達到要求的 K 個mechanism的規模,則沒有獎勵。 r_K=log p(y|x;S^{(K)}_x)r_k=0(k=1,2,...,K-1)

選出包含 K個mechanism之後,依次將 cm_i(m_i in S_x) 連接在一起輸入到decoder中生成各自mechanism對應的response。下面是具體的演算法流程:

推薦閱讀:

你家產品在用戶心裡算哪壺?——用語義分析透鏡瞧一瞧
tensorflow用高級api實現文本分類初嘗試
自然語言處理透析希拉里和特朗普各自的「演講范兒」
<DepthLGP : Learning Embeddings of Out-of-Sample Nodes in Dynamic Networks>筆記
constituent parsing & dependency parsing

TAG:自然語言處理 |