Deep Reinforcement Learning for Dialogue Generation

关键词

reinforcement learing,seq2seq

来源

EMNLP 2016.06.05

问题

目前的 seq2seq 模型做对话生成存在两个问题:

  • 当前的 seq2seq 模型是这么去训练的,在给定对话上下文后,用最大似然估计作为目标函数,预测下一轮对话。但是 MLE 训练出来的模型并不能够产生有趣、多样、有信息量的反馈。
  • 另一方面基于 MLE 的 seq2seq 模型不能够排除重复回复,这就导致对话进入无限循环。

这些挑战使得我们需要一个框架能够

  • 集成开发者定义的奖励函数更好的优化训练目标
  • 对持续中对话所产生的响应进行建模,捕捉长距离依赖关系

文章思路

文中提出的系统包含两个机器人,用 p 表示第一个机器人生成的句子,用 q 表示第二个机器人生成的句子。

RL 基本元素按如下定义
Action:a 是产生的响应,生成的句子可以是任意长度。
State:上一轮两个机器人的对话 [pi,qi] 。对话历史通过将 pi qi 拼接起来,利用 LSTM 编码。
Policy:指给定 State 之后各个 Action 的概率分布,也就是 pRL(pi+1|pi,qi)

Reward:由三部分组成

  • Ease of answering:确定所生成的一轮对话时候容易回答,用如下公式计算
    r1=1NSsS1Nslogpseq2seq(s|a)

    给定这个响应之后,生成的下一个句子是 dull 的概率大小。这里所谓的 dull 就是指一些没有意义的回复,比如“I don’t know what you are talking about”,作者手工构建了这样的一个dull 列表。
  • Information Flow:希望每轮产生的响应能够推动对话前进,避免一些重复序列,按如下公式计算
    r2=logcos(hpi,hpi+1)=logcoshpihpi+1hpihpi+1
  • Semantic Coherence: 这个指标是用来避免生成的回复拥有很高的 reward 但是 ungrammatical 和 not coherent。
    r3=1Nalogpseq2seq(a|pi,qi)+1Nqilogpbackwardseq2seq(qi|a)

    最终的 reward 由这三部分加权得到。
仿真阶段
第一阶段,先监督学习。将已有数据中的每轮对话当做 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. 无信息量),另一方面,我们可以捕获到这次对话对未来的影响。这样多轮对话后,仍然能够产生有意义的回复。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值