DRL for Dialogue Generation论文学习零散记录

Deep Reinforcement Learning for Dialogue Generation
这是一篇将策略梯度(policy gradient)引入Seq2Seq来进行多轮对话的文章。

使用策略梯度从三方面来reward: informativity,coherence, and ease of answering。

作者提到将SEQ2SEQ模型用于dialogue generation存在两个问题:其一,SEQ2SEQ模型使用的是最大释然估计(MLE)的目标函数,然而MLE会倾向选择高频的generic response比如“I don’t know”(dull utterances),很难产生interesting,diverse和informative的feedback来保持对话的继续;另外,可能陷入infinite loop of repetitive responses, 比如“A: see you later. B: see you later”然后A再回复“see you later”。
DRL for Dialogue Generation论文学习零散记录
不过作者没有提出新的框架结构,而是以pre-trained的SEQ2SEQ模型为基本框架,以DRL的思路提出了一种启发式算法。
作者认为good conversation具有forward-looking, interactive, informative和coherence 的特征。

Reward

1.Ease of answering
r1=1NSsS1Nslogpseq2seq(s|a)
在当前的action下产生无聊回答的平均log概率作为一个reward

2.Information Flow
r2=logcos(hpi,hpi+1)=loghpihpi+1||hpi||||hpi+1||

hpi,hpi+1我的理解是Encoder的上一轮和这一轮的隐层的向量(如果有误,恳请指出),这个是计算上一轮的输出和当前轮次的输出求余弦相似,给出一个reward. 避免产生infinite loop of repetitive responses。
需要注意地就是cos取值范围是[-1,1],log中定义就要保证cos(hpi,hpi+1)>0,事实上hpi必然满足0hpi1。理由就是, hpi实际上是LSTM的隐状态向量。如下是LSTM的cell state计算公式
ct=fct1+iσ(W1xt1+W2ht1+b)
其中的σ()就是sigmoid 函数,它的取值就是[0,1]。forget门和input门的取值也是[0,1]。因此向量hpi,hpi+1均是正的,其余弦值也就是正的了。
3.Semantic Coherence
r3=1Nalogpseq2seq(a|qi,pi)+1Nqilogpseq2seqbackward(qi|a)

三个reward取的是加权平均
r(a,[pi,qi])=λ1r1+λ2r2+λ3r3

训练

作者不是直接使用一般的pre-trained的SEQ2SEQ,因为一般的会产生dull&generic response, e.g. “i don’t know”。作者借用了自己以前论文用到的MMI公式代替MLE,假设pre-trained SEQ2SEQ产生了一个candidate list(比如 N-best list)记为A={a^|a^ pRL},记mutual information score(MMI文章内容,可参考我的这篇博客)为m(a^|,[pi,qi)
作者用的是MLE和强化学习混合的训练方式。
对于长度为T的序列,前L个token使用MLE进行训练,后面T-L个token使用强化学习的方法。
使用退火算法,在训练过程中使得L逐步减小为0.
reward的expected为:
J(θ)=E[m(a^|,[pi,qi)]
梯度
J(θ)=m(a^|,[pi,qi)logpRL(a^|,[pi,qi)
按这公式训练所需的SEQ2SEQ模型

强化学习阶段
贴公式:
reward的expected为:
JRL(θ)=EpRL(a1T)[i=1i=TR(ai,[pi,qi])]
梯度:
JRL(θ)i=1logp(ai,pi,qi)[i=1i=TR(ai,[pi,qi])]

文章中,实验测试阶段,作者使用beam search的技术(训练时好像不需要使用beam search?)就不展开了。

数据集为OpenSubtitle,实验部分本文不涉及。

本文完