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
在当前的action下产生无聊回答的平均log概率作为一个reward
2.Information Flow
我的理解是Encoder的上一轮和这一轮的隐层的向量(如果有误,恳请指出),这个是计算上一轮的输出和当前轮次的输出求余弦相似,给出一个reward. 避免产生infinite loop of repetitive responses。
需要注意地就是cos取值范围是[-1,1],log中定义就要保证,事实上必然满足。理由就是, 实际上是LSTM的隐状态向量。如下是LSTM的cell state计算公式
其中的就是sigmoid 函数,它的取值就是[0,1]。forget门和input门的取值也是[0,1]。因此向量均是正的,其余弦值也就是正的了。
3.Semantic Coherence
三个reward取的是加权平均
训练
作者不是直接使用一般的pre-trained的SEQ2SEQ,因为一般的会产生dull&generic response, e.g. “i don’t know”。作者借用了自己以前论文用到的MMI公式代替MLE,假设pre-trained SEQ2SEQ产生了一个candidate list(比如 N-best list)记为,记mutual information score(MMI文章内容,可参考我的这篇博客)为
作者用的是MLE和强化学习混合的训练方式。
对于长度为T的序列,前L个token使用MLE进行训练,后面T-L个token使用强化学习的方法。
使用退火算法,在训练过程中使得L逐步减小为0.
reward的expected为:
梯度
按这公式训练所需的SEQ2SEQ模型
强化学习阶段
贴公式:
reward的expected为:
梯度:
文章中,实验测试阶段,作者使用beam search的技术(训练时好像不需要使用beam search?)就不展开了。
数据集为OpenSubtitle,实验部分本文不涉及。
本文完