HRED+VHRED+AWI模型介紹

這次會介紹三篇文章,因爲原理比較相似,都是採用分層架構來解決多輪對話問題,三篇論文如下所示:

  • Building End-To-End Dialogue Systems Using Generative Hierarchical Neural Network Models(HRED)
  • A Hierarchical Latent Variable Encoder-Decoder Model for Generating Dialogues(VHRED)
  • Attention with Intention for a Neural Network Conversation Model(AWI)

前面兩篇出自Serban,文章思路和方法大體一致,後者在第一篇文章的基礎上加入了變分編碼機的思路,改善了模型的效果。而第三篇論文將Attention機制融合到分層seq2seq模型中,同樣是引入了高層變量的方法。下面分別介紹三篇文章的具體細節:

HRED

模型的系統架構圖如下所示:

簡單來說就是使用分層的seq2seq模型構造多輪對話,Encoder RNN主要用於對輸入句子進行編碼,這裏跟普通的seq2seq沒有什麼區別,並且把最後一個時刻的隱層向量認爲是輸入句子的編碼向量,當做下一層RNN的輸入向量。中間一層context RNN用來編碼整個對話的狀態、意圖等對話層面的信息,而第一層RNN用來編碼一句話的句子層面信息,中間層每個時刻輸入的第一層輸出的句子表示向量,這樣context RNN的隱藏層向量就可以記住之前的對話信息,所以成爲上下文向量。最後,將該編碼了之前對話信息的向量作爲decoder RNN的輸入向量,使得在解碼過程中除了使用回答句子本身信息還會結合對話上下文信息。這就是整體的架構,還有幾個小的點需要注意一下:

  • Encoder和Decoder RNN每個句子是一個RNN,而Context RN只有一個RNN;
  • 在編碼和解碼階段,處理每個句子的RNN結構完全相同而且共享參數(“The same encoder RNN and decoder RNN parameters are used for every utterance in a dialogue”),目的是爲了生成一般化的語言模型;
  • 在解碼階段,每個時刻都會把Context RNN的輸出與該時刻的輸入並聯一塊作爲輸入,目的是是的每個解碼時刻都可以引入上下文信息。

但是論文中也有提到這種方法效果並不是很好,反而會受預訓練模型的影響比較嚴重,比如與訓練的詞向量和適用別的任務對參數預訓練,這些預訓練的參數對模型的準確度提升有着顯著效果。

VHRED

前面說了HRED模型效果一般,所以作者後面提出在Context RNN環節引入一個高斯隨機變量來改善模型產生回答的多樣性。其模型架構圖如下所示:

作者認爲在傳統的seq2seq模型中唯一變化的因素就是輸出序列概率分佈的不同導致輸出發生變化,這在多輪對話中顯然是無法滿足對話響應的多樣性需求。因爲一旦輸出的第一個詞確定之後,後面的單詞基本上都是根據語言模型確定,而且每個編碼時刻的隱層向量hm更傾向於記住短期依賴而不是全局信息。因此爲了引入更多的變化因素,作者引入變分編碼的思想,在Context RNN環節加入一個高斯隨機變量zn,以增加響應的多樣性。

Zn的均值和方差都是根據Context RNN的隱藏層向量計算的,現將其傳入一個兩層神經網絡增加一定的變化性,然後將該神經網絡的輸出與一個矩陣相乘得到均值,再將該輸出與另一個矩陣相乘經過一個softplus函數得到方差。有了均值和方差之後便可以經過採樣得到高斯變量Zn,將其與Context RNN拼接就相當於加入了噪聲,可以一定程度上增加模型的變化性。

Attention with Intention

跟上面兩個模型的思路很想,本文也是使用分層的seq2seq模型來解決多輪對話問題,但是跟上面不一樣的是融入了Attention機制,以改善模型的效果。模型主要包括Encoder RNN、Intention RNN、Decoder RNN三個模塊,架構圖如下所示:

其實整體流程與HRED相似,這裏就只介紹幾個需要注意的細節就行了:

  • 每個句子的Encoder RNN的初始化狀態都是前面一個Decoder RNN的最後一個隱層狀態,這樣做是爲了在encoder階段把前面時刻的對話狀態引入進去;
  • Encoder是輸出可以使用最後一個時刻的隱層狀態,也可以使用Attention機制對每個時刻隱層狀態進行加權求和,然後作爲Intention RNN的輸入;
  • Intention RNN在每個時刻除了會考慮Encoder的輸出還會結合前一時刻Decoder的輸出;
  • Decoder RNN的初始化狀態是該時刻Intention RNN的輸出

總結

其實三篇論文都是使用分層seq2seq模型實現多輪對話,這樣做的好處是中間層可以實現對對話意圖、目的等高層信息的學習和記憶,有點類似於對話狀態跟蹤模塊之類的效果,但是整體上來講這種結構還是沒有辦法很好的解決多輪對話答案空間的多樣性問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章