本文結(jié)構(gòu):
- 模型效果
- 模型
- 模塊細節(jié)
今天的論文是 《Topic Aware Neural Response Generation》
https://arxiv.org/pdf/1606.08340.pdf
這篇論文的目的是讓聊天機器人的回復更有營養(yǎng)凛捏,例如下面這種場景曙砂,要盡量避免‘我也是’‘明白了’‘不知道’這種沒有信息量的回復蛮拔,而是可以給出一些建議和方案等:
模型
思路是輸入句子后隘擎,先預測 topics浅妆,再根據(jù) topics 生成回復丑婿。
文章中通過建立 topic aware sequence-to-sequence (TA-Seq2Seq) 模型來實現(xiàn)這個過程朽们。
TA-Seq2Seq 建立于 sequence-to-sequence 基礎上的烁,再加上一個聯(lián)合注意力機制奶镶。
關(guān)于 seq2seq 的模型細節(jié)可以看這兩篇文章:
seq2seq 入門
seq2seq 的 keras 實現(xiàn)
簡單回顧迟赃,
1. seq2seq
是個 encoder-decoder 結(jié)構(gòu),兩部分都是 RNN 模型厂镇,RNN 可以選擇 LSTM 或者 GRU纤壁;
輸入句子 X = (x1, x2, . . . , xT ) ,
輸出句子 Y = (y1 , y2 , . . . , yT` )
目標是要最大化條件概率:
其中 c 為 encoder 的 RNN 模型得到的 context vector捺信。
2. 注意力機制
簡單講酌媒,就是一般的 seq2seq 中,回復句子的所有單詞都是由同樣的語境生成迄靠,而加入注意力機制后秒咨,回復中的每個單詞是由輸入句子的不同部分生成的。
即 Y 中的每個單詞 yi 由語境向量 ci 影響掌挚,其中 ci 是隱向量的加權(quán)平均:
模塊細節(jié)
接下來根據(jù)前面的 TA-Seq2Seq 模型結(jié)構(gòu)圖看一下細節(jié)雨席。
TA-Seq2Seq 的 encoder 和 decoder:
1. 在 encoding 中,
- message encoder 通過一個雙向的 GRU 模型吠式,將輸入 X 表示成隱向量 ht陡厘。
- 再用提前訓練好的 Twitter LDA 模型獲得 topic words 的向量表示:
Twitter LDA 模型的參數(shù)根據(jù) collapsed Gibbs 采樣算法求得,
Twitter LDA 會給輸入 X 分配主題 z奇徒,選擇概率最高的前 100 個單詞雏亚,并且移除 “謝謝” “你” 等普遍的詞,最終得到 X 的主題詞 K摩钙。
這里 K 的向量表達由每個主題詞 w 的分布計算得到:
其中 Cwz 為 w 被分配到主題 z 的次數(shù)罢低。
2. 在 decoding 中,
每個單詞都通過一個聯(lián)合注意力機制,由輸入句子和主題共同影響生成网持,這樣生成的句子不僅和輸入有關(guān)宜岛,而且和相關(guān)主題有關(guān)。
decoding 時功舀,每一步時隱向量 h 被轉(zhuǎn)化為 ci:
主題向量 k 也被線性組合為 oi萍倡,每個 kj 對應的系數(shù)為:
其中 hT 是輸入句子的最終隱藏層狀態(tài),η0 是一個多層感知器辟汰,這么做可以削弱與主題無關(guān)的詞的影響列敲,加強相關(guān)詞的影響度,即 oi 與輸入的內(nèi)容更相關(guān)帖汞,減少了很多噪音戴而。
然后由 ci 和 oi 聯(lián)合影響著生成句子的概率,
即每個單詞的生成概率定義為:
p(yi) = pV (yi) + pK (yi),
其中 V 是回復詞匯表翩蘸,f 是一個 GRU 模型所意, Z 是正規(guī)化因子,并且:
這里的 σ(·) 為 tanh催首,w 為單詞的 one-hot 表達扶踊,其余的 W 和 b 為參數(shù)。
這個生成概率定義的作用是郎任,
對于非主題詞秧耗,pV (yi) 就和 seq2seq + joint attention mechanism 類似,
但對于主題詞涝滴,就有額外的一項 pK(yi) 可以增加主題詞在回復中出現(xiàn)的概率绣版。
這種聯(lián)合影響還有一個好處胶台,
一般的 seq2seq 生成回復中第一個詞只由 c0 決定歼疮,這里是由 c0 和 o0 共同作用,使得回復的第一個詞更加貼切主題诈唬,第一個詞準了對后面生成詞的影響也很重要韩脏。
推薦閱讀 歷史技術(shù)博文鏈接匯總
http://www.reibang.com/p/28f02bb59fe5
也許可以找到你想要的:
[入門問題][TensorFlow][深度學習][強化學習][神經(jīng)網(wǎng)絡][機器學習][自然語言處理][聊天機器人]