Seq2Seq模型进阶之TA-Seq2Seq
1. TA-Seq2Seq简介
《Topic Aware Neural Response Generation》为2017年AAAI论文,论文的目的是让聊天机器人的回复更加具有营养,例如下面的场景,我们的Chatbot要尽量避免‘我也是’
、‘明白了’
、‘不知道’
这种没有信息量的回复,而是可以给出一些建议和方案等:
问题输入:“现在”、“我”、“在”、“努力学习”、“英文”、“,”、“我”、“想”、“成为”、“一名”、“翻译”、“。”
主题判断:
WordEmbedding
->LDA Topic Words
->工作
回输出:“嗯”、“,”、“你”、“是”、“大有”、“前途”、“的”、“。”、“追逐”、“你”、“的”、“梦想”、“,”、“永不”、“放弃”、“。”
1.1 模型回顾
论文的具体思路是输入句子后,先预测句子所在的topics,再根据 topics 生成回复。文章中通过建立 topic aware sequence-to-sequence (TA-Seq2Seq) 模型来实现这个过程。
TA-Seq2Seq 建立于Seq2Seq基础上,再加上一个联合注意力机制。
1.2 Seq2Seq
Seq2Seq是个Encoder-Decoder
结构,两部分都是RNN模型,RNN可以选择LSTM
或者 GRU
,目的是要最大化条件概率函数,其中c为Encoder
所编码输出的隐藏层向量。
P ( y 1 , … , y T ′ ∣ x 1 , … , x T ) = ∏ t ′ = 1 T ′ P ( y t ′ ∣ y 1 , … , y t ′ − 1 , x 1 , … , x T ) = ∏ t ′ = 1 T ′ P ( y t ′ ∣ y 1 , … , y t ′ − 1 , c ) , \begin{aligned} \mathbb{P}(y_1, \ldots, y_{T'} \mid x_1, \ldots, x_T) &= \prod_{t'=1}^{T'} \mathbb{P}(y_{t'} \mid y_1, \ldots, y_{t'-1}, x_1, \ldots, x_T)\\ &= \prod_{t'=1}^{T'} \mathbb{P}(y_{t'} \mid y_1, \ldots, y_{t'-1}, \boldsymbol{c}), \end{aligned} P(y1,…,yT′∣x1,…,xT)=t′=1∏T′P(yt′∣y1,…,yt′−1,x1,…,xT)=t′=1∏T′P(yt′∣y1,…,yt′−1,c),
并得到该输出序列的损失
− log P ( y 1 , … , y T ′ ∣ x 1 , … , x T ) = − ∑ t ′ = 1 T ′ log P ( y t ′ ∣ y 1 , … ,