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”。
这里写图片描述
不过作者没有提出新的框架结构,而是以pre-trained的SEQ2SEQ模型为基本框架,以DRL的思路提出了一种启发式算法。
作者认为good conversation具有forward-looking, interactive, informative和coherence 的特征。

Reward

1.Ease of answering
r1=1NSsS1Nslogpseq2seq(s|a) r 1 = − 1 N S ∑ s ∈ S 1 N s l o g p s e q 2 s e q ( s | a )
在当前的action下产生无聊回答的平均log概率作为一个reward

2.Information Flow
r2=logcos(hpi,hpi+1)=loghpihpi+1||hpi||||hpi+1|| r 2 = − l o g c o s ( h p i , h p i + 1 ) = − l o g h p i ⋅ h p i + 1 | | h p i | | | | h p i + 1 | |

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

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

训练

作者不是直接使用一般的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} A = { a ^ | a ^   p R L } ,记mutual information score(MMI文章内容,可参考我的这篇博客)为 m(aˆ|,[pi,qi) m ( a ^ | , [ p i , q i )
作者用的是MLE和强化学习混合的训练方式。
对于长度为T的序列,前L个token使用MLE进行训练,后面T-L个token使用强化学习的方法。
使用退火算法,在训练过程中使得L逐步减小为0.
reward的expected为:
J(θ)=E[m(aˆ|,[pi,qi)] J ( θ ) = E [ m ( a ^ | , [ p i , q i ) ]
梯度
J(θ)=m(aˆ|,[pi,qi)logpRL(aˆ|,[pi,qi) ▽ J ( θ ) = m ( a ^ | , [ p i , q i ) ▽ l o g p R L ( a ^ | , [ p i , q i )
按这公式训练所需的SEQ2SEQ模型

强化学习阶段
贴公式:
reward的expected为:
JRL(θ)=EpRL(a1T)[i=Ti=1R(ai,[pi,qi])] J R L ( θ ) = E p R L ( a 1 : T ) [ ∑ i = 1 i = T R ( a i , [ p i , q i ] ) ]
梯度:
JRL(θ)i=1logp(ai,pi,qi)[i=Ti=1R(ai,[pi,qi])] ▽ J R L ( θ ) ≈ ▽ ∑ i = 1 l o g p ( a i , p i , q i ) [ ∑ i = 1 i = T R ( a i , [ p i , q i ] ) ]

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

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

本文完

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值