Introduction
VHRED 是為了解決 RNNLM 和 HRED 很難產生有意義的、高質量、多樣性的回覆而提出的。
批評傳統 Seq2Seq
- 有變化的地方只有 sample output
- encoder 和 decoder 過程要求確定性、fit database 的回覆,缺少對 response 語義訊息的理解,因此傾向於產生短的安全回答(safe response)
- 因 gradient vanishing 影響,hidden state 傾向短期記憶而不是全局
做法類似 VAE,在 HRED 基礎上引入了 VAE 的思想,出來的樣本具有更高的全局性。
不同 VAE 的是在 reconstruction 時生成的是下一個 utterance 而不是原來的 input。
前情提要
要了解公式,先要了解 VAE 的一些相關知識(參考台灣大學 李弘毅教授 [1])
首先要提到 Guessian mixture model
Guessian mixture model 用途是產生複雜的 distribution
圖 2 中黑色的 distribution 為 Guessian mixture model 組合而成
而 VAE 就是用來處理 Geessian distribution 如何分布
首先我們要從 normal distribution (或其他 distribution) sample 一個向量 z ,每一個 dimension 代表某種特質。
根據 z 可以得到 Geessian 的 $\mu$ 和 $\Sigma$,由於 z 有無窮多個可能,因此 $\mu$ 和 $\Sigma$ 也有無窮多個
要如何找到 $\mu$ 和 $\Sigma$ ? 我們可以利用一個 function 來得到,例如 neural network
z space 上 sample 幾個點,每個點都會對應一個 guessian distribution,而某一個點對應到哪一個 guessian 是經由 function 所決定的,如圖 4
$P(x)$ 公式如下:
我們目標就是找到一組 $\mu$ 和 $\Sigma$ 能夠 Maximize likelihood
x 為手上的 data
z 由 NN 所產出,因此藉由調整 NN 參數來達到 Maximize likelihood
除了 $p(x|z)$ 之外,還需要一個 distribution $q(z|x)$,一樣也是由 NN 產生
在 VAE 裡 $p(x|z)$ 為 decoder, $q(z|x)$ 為 encoder
回到 Maximize likelihood, $\log P(x)$ 可以寫成以下公式
$q(z | x)$ 為任意的 distribution
$\log P(x)$ 又可以換成以下公式
又 $\log(xy) = \log x + \log y$,可以換成
補充
紅線部分為 KL divergence (相對熵),意思是兩個 distribution 之間的距離,KL divergence 公式如下
由於是距離,因此紅線部分一定 >= 0
前面那一項可以換算成
因此我們可以得到 lower bound $L_b$ 為
總結以上公式:
在上述公式裡, $P(z|x)$ 和 $q(x|z)$ 是未知的
本來只要找 $P(z|x)$ Max $\log P(x)$,現在為找 $P(z|x)$ 和 $q(x|z)$ Max $L_{b}$
又 $\log(xy) = \log x + \log y$ ,$L_{b}$ 可以換算成
紅色部分也是一個 KL diversion
呼應 Max $L_{b}$ ,我們改成
調整參數, min $K L(q(z | x) | P(z))$
調整參數, max $\int_{z} q(z | x) \log P(x | z) d z$
- 由於 weighted sum 可以視為期望值 $E_{q(z | x)}[\log P(x | z)]$
- 由於 weighted sum 可以視為期望值 $E_{q(z | x)}[\log P(x | z)]$
Model
句子定義
$w_{1},…,w_{N}$ 為 $N$ 句 sub-sequences
$w_{n} = (w_{n,1},…,w_{n,M_{n}})$ 代表每一句有 M 個 token
目標函式
VHRED 使用 stochastic latent variable $\mathbf{z}_{n} \in \mathbb{R}^{d_{z}}$, 對於句子 $n = 1,…,N$,由第 $n$ 之前的句子生成,公式如下:
$\mathcal{N}(\boldsymbol{\mu}, \Sigma)$ 是 multivariate normal distribution , mean 為 $\mathbf{\mu}_{n} \in \mathbb{R}^{d_{z}}$,covariance matrix (共變異數矩陣) $\Sigma \in \mathbb{R}^{d_{z} \times d_{z}}$,covariance matrix 再轉成 diagonal matrix (對角矩陣)
給定 $z_{n}$ 與 $w_{1},…,w_{n-1}$,生成 $w_{n}$,公式如下:
意思是 : 給定之前的句子以及當句已生成的 token,來生成下一個 token
VHRED 架構
VHRED 架構有三個部分與 HRED 相同:
- encoder RNN: encode 一個 sub-sentence 成 context vector
- context RNN: encode 先前全部的 context vector 成另一個 fixed-size vector
- decoder
Latent variable
在前情提要中我們有提到 p(x|z) 和 q(z|x),在論文中
- prior : p(x|z)
- posterior : q(z|x)
Prior 部分
如前情提要,使用 NN 來計算 $\mu$ 和 $\Sigma$
將 context RNN 的 fixed-size vector 輸入至 2-layer feed forward neural network,並使用 tanh 當作 activate function,公式如下:
$h_{t, \operatorname{con}} \in \mathbb{R}^{d_{h, c o n}}$ 為 context RNN 的 hidden state, $H$ 為 feed forward network 參數
mean 與 covariance matrix 如下:
參數 size (很重要尤其在 implement 的時候)
- $H_{l_{1}, p r i o r} \in \mathbb{R}^{d_{z} \times d_{h, c o n}}$
- $H_{\Sigma, \text {prior}}, H_{\mu, \text {prior}}, H_{l_{2}, \text {prior}} \in \mathbb{R}^{d_{z} \times d_{z}}$
- $b_{l_{1}, \text { prior }}, b_{l_{2}, \text { prior }}, b_{\mu, \text { prior }}, b_{\Sigma, \text { prior }} \in \mathbb{R}^{d_{z}}$
解釋:
- $\mu_{t, \text { prior }}$ : 將 $h_{t, \operatorname{con}}$ input 到 feed forward network
- $\Sigma_{t, \text { prior }}$ : 將 $h_{t, \operatorname{con}}$ input 到 feed forward network,在經過 softplus function,轉成 diagonal matrix
補充:
- softplus : $f(x)=\ln (1+\exp x)$ >
圖 6、softplus 與 ReLu 比較
- diag() : 將非對角 element 設成 0
Max varient lower bound
回過頭來,如前情提要,目標式子為
我們目標是算出 lower bound, Max $L_{b}$
也就是 max
論文依照這個目標,對照公式如下
Posterior 部分
$Q_{\psi}\left(\mathbf{z}_{n} | \mathbf{w}_{1}, \ldots, \mathbf{w}_{n}\right)$ 的部分為 posterior,公式如下
$\boldsymbol{\mu}_{\text {posterior }}$ : approximate posterior mean
$\Sigma_{\text {posterior }}$ : approximate posterior covariance matrix (diagnol)
$\boldsymbol{\mu}_{\text {posterior }}$ 和 $\Sigma_{\text {posterior }}$ 計算方法與 prior 一樣
不一樣是 posterior 需要 $h_{t,con}$ 和 encoderRNN 的 hidden states 做 concatenate,符號為 $h_{t,p}$
參數 size
- $H_{l_{1}, p o s t e r i o r} \in \mathbb{R}^{d_{z} \times\left(d_{h, c o n}+d_{h, e n c}\right)}$
- $H_{\Sigma, \text {posterior}}, H_{\mu, \text {posterior}}, H_{l_{2}, \text {posterior}} \in \mathbb{R}^{d_{z} \times d_{z}}$
- $b_{l_{1}, \text { posterior }}, b_{l_{2}, \text { posterior }}, b_{\mu, \text { posterior }}, b_{\Sigma, \text { posterior }} \in \mathbb{R}^{d_{z}}$
Experimental Evaluation
Twitter Corpus (open domain)
- train : 749060
- valid : 93633
- test : 10000
每一句平均 6.27 utterances, 94.16 tokens
Ubuntu Corpus (closed domain)
500000 dialogue
Training detail
- optimizer : Adam
- early stop
- embedding size :
- ubuntu : 300
- twitter : 400
- learning rate : 0.0001 or 0.0002
- batch size : 40 or 80
initailize :
- feed forward nn :
- wieght : normal distributions mean 0, variance 0.01
- bias: 0
- feed forward nn :
diagnoal covariance matrices * 0.1 : 為了降低 variance,讓 training 穩定
beam search : 5 beams
Result
Result of Human Evaluation
和 HERD 比較
Reference
[1] 台灣大學 李弘毅教授 link
[2] Github Code link