关键词
reinforcement learing,seq2seq
来源
EMNLP 2016.06.05
问题
目前的 seq2seq 模型做对话生成存在两个问题:
- 当前的 seq2seq 模型是这么去训练的,在给定对话上下文后,用最大似然估计作为目标函数,预测下一轮对话。但是 MLE 训练出来的模型并不能够产生有趣、多样、有信息量的反馈。
- 另一方面基于 MLE 的 seq2seq 模型不能够排除重复回复,这就导致对话进入无限循环。
这些挑战使得我们需要一个框架能够
- 集成开发者定义的奖励函数更好的优化训练目标
- 对持续中对话所产生的响应进行建模,捕捉长距离依赖关系
文章思路
文中提出的系统包含两个机器人,用
p
表示第一个机器人生成的句子,用
-
RL 基本元素按如下定义
- Action:a 是产生的响应,生成的句子可以是任意长度。
- State:上一轮两个机器人的对话 [pi,qi] 。对话历史通过将 pi 和 qi 拼接起来,利用 LSTM 编码。
- Policy:指给定 State 之后各个 Action 的概率分布,也就是 pRL(pi+1|pi,qi)
-
Reward:由三部分组成
- Ease of answering:确定所生成的一轮对话时候容易回答,用如下公式计算
r1=−1NS∑s∈S1Nslogpseq2seq(s|a)
给定这个响应之后,生成的下一个句子是 dull 的概率大小。这里所谓的 dull 就是指一些没有意义的回复,比如“I don’t know what you are talking about”,作者手工构建了这样的一个dull 列表。 - Information Flow:希望每轮产生的响应能够推动对话前进,避免一些重复序列,按如下公式计算
r2=−logcos(hpi,hpi+1)=−logcoshpi⋅hpi+1∥hpi∥∥hpi+1∥ - Semantic Coherence: 这个指标是用来避免生成的回复拥有很高的 reward 但是 ungrammatical 和 not coherent。
r3=1Nalogpseq2seq(a|pi,qi)+1Nqilogpbackwardseq2seq(qi|a)
最终的 reward 由这三部分加权得到。
仿真阶段
- Ease of answering:确定所生成的一轮对话时候容易回答,用如下公式计算
- 第一阶段,先监督学习。将已有数据中的每轮对话当做 target,将之前的两句对话当做 source 进行 seq2seq 训练得到模型,这一步的结果作为第二步的初值。
-
第二阶段,进行强化学习。因为 seq2seq 模型会容易生成 dull 响应,如果直接用 seq2seq 的结果将会导致增强学习这部分产生的响应缺乏多样性,从而无法产生高质量的响应。所以,这里用 MMI(Maximum Mutual Information 来生成更加多样化的响应。将生成最大互信息响应的问题看做是一个强化学习问题,这里的互信息作为 reward 的一部分。用第一步训练好的模型来初始化 policy 模型,给定输入 [pi,qi] ,生成一个候选 action
列表,对于集合中的每个响应都计算出其最大互信息得分,这个得分作为 reward 反向传播回 encoder-decoder 模型中,进行训练。
资源
论文地址:https://arxiv.org/abs/1606.01541
数据集地址:http://www.opensubtitles.org/zh
相关工作
当前构建对话系统的主流方法有两类:
- 将对话生成看做是源端到目标端的转化问题,一般需要从大规模语料中学习输入信息和响应之间的映射规则。代表工作 phrasal SMT-based conversation system
- 构建一个 tast-oriented 对话系统来解决 domain-specific 任务。代表模型 MDP、POMDP
简评
最后的结果对比
本文是将 seq2seq 和 RL 结合起来,利用 RL 的优势:一方面,我们可以自己设计真实世界的奖励函数(有趣 VS. 无趣;有信息量 VS. 无信息量),另一方面,我们可以捕获到这次对话对未来的影响。这样多轮对话后,仍然能够产生有意义的回复。