天天看點

Hierarchical Recurrent Encoder-DecoderHierarchical Recurrent Encoder-Decoder

Hierarchical Recurrent Encoder-Decoder

Building End-to-End Dialogue Systems Using Generative Hierarchical Neural Network Models

Introduction

seq2seq的典型方法,用前N-1句話生成第N句話。假如說現在A, B對話内容是:a1,b1,a2,b2a1,b1,a2,b2, 其中每個都表示一句話

a1a1 -> [emb[word] for word in a1a1] -> RNN(a1a1) 
b1b1 -> [emb[word] for word in b1b1] -> RNN(b1b1) 
a2a2 -> [emb[word] for word in a2a2] -> RNN(a2a2) 
b2b2 -> [emb[word] for word in b2b2] -> RNN(b2b2)
           

本文重點是說,除了上面寫的每句一個RNN,還加了一個句子之間的RNN:

  • RNN(a1)預測 b1
  • RNN(a1, b1) 預測 a2
  • RNN(a1, b1, a2)預測 b2
  • 再過一個句子之間的RNN

model

Hierarchical Recurrent Encoder-DecoderHierarchical Recurrent Encoder-Decoder

Encoder RNN主要用于對輸入句子進行編碼,這裡跟普通的seq2seq沒有什麼差別,并且把最後一個時刻的隐層向量認為是輸入句子的編碼向量,當做下一層RNN的輸入向量。中間一層context RNN用來編碼整個對話的狀态、意圖等對話層面的資訊,而第一層RNN用來編碼一句話的句子層面資訊,中間層每個時刻輸入的第一層輸出的句子表示向量,這樣context RNN的隐藏層向量就可以記住之前的對話資訊,雙向rnn将有效地引入額外的短期依賴性,這在類似的體系結構中已被證明是有用的。

最後,将該編碼了之前對話資訊的向量作為decoder RNN的輸入向量,使得在解碼過程中除了使用回答句子本身資訊還會結合對話上下文資訊。

擴充閱讀

A Hierarchical Latent Variable Encoder-Decoder Model for Generating Dialogues

在HRED的基礎上,在decoder中加了一個隐藏變量。這個隐藏變量根據目前對話的前n-1句話建立多元正态分布,與前n-1句話&第n句話的前m-1個已生成word一起共同影響第n句話第m個word的生成。通過這個隐藏變量(表示隐狀态)可能可以提高整體dialog随機性。

繼續閱讀