对话生成的新探索——从模仿学习到逆强化学习

对话生成的新探索——从模仿学习到逆强化学习论文解读:DialogueGeneration:FromImitationLearningtoInverseReinforcementLearning  对话生成是一个常见的自然语言处理任务,其在工业界广泛应用与智能客服,闲聊机器人等。现如今主要研究于如何提高对话的质量,多样性。本文则采用先进的技术试图解决这个问题。一、简要信息序号属性值1模型名称DG-AIRL2所属领域自然语言处理3研究内容对话生成4核心内容DialogueG

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

论文解读:Dialogue Generation: From Imitation Learning to Inverse Reinforcement Learning

  对话生成是一个常见的自然语言处理任务,其在工业界广泛应用与智能客服,闲聊机器人等。现如今主要研究于如何提高对话的质量,多样性。本文则采用先进的技术试图解决这个问题。

一、简要信息

序号 属性
1 模型名称 DG-AIRL
2 所属领域 自然语言处理
3 研究内容 对话生成
4 核心内容 Dialogue Generation,Imitation Learning, Inverse Reinforcement Learning, Adversarial Imitation Learning
5 GitHub源码
6 论文PDF https://arxiv.org/pdf/1812.03509

二、全文摘要翻译

  基于对抗学习的对话生成方法的性能依赖于判别器的奖励信号的质量,如果判别器不佳,则提供的奖励通常是稀疏的或不稳定,因此导致生成器容易陷入局部最优,或生成一些无含义的回复。为了缓解第一个问题,我们首先将最近提出的对抗对话生成方法拓展到对抗模仿学习方法,其次在对抗逆强化学习的框架基础上,我们提出一种新的奖励模型用于对话生成,使得判别器可以为生成器提供更加精确的奖励信号。我们评估我们的方法,使用自动评估和人工评估方法。实验表明我们的方法可以很好的生成高质量的恢复,并超越了先前的方法。

三、对话生成任务

  对话生成任务是指给定一个对话,返回对应的恢复。对话生成是一种特殊的文本生成任务。其不同于机器翻译、生成摘要、问答系统等,通常并没有非常显式的评价来判断生成的文本是否合理。例如当对话为“What’s your name?”,通常回复是千篇一律。因此目前解决对话生成任务可以分为两大类:

在这里插入图片描述
(1)通过设计一个规则或模板来生成具有约束的回复,这一类方法通常是无需学习的。但其会受到具体的业务限制,且并不灵活。
(2)另一类则是基于深度学习的方法,利用类似机器翻译的Seq2Seq的架构,输入一个句子,通过对模型进行学习生成对应的回复。然而这一类方法通常生成的句子语法或逻辑不符。

  为了解决普通的Seq2Seq的问题,现如今有工作利用强化学习或对抗学习进行文本生成,如图所示:
在这里插入图片描述
  第一类是深度强化学习,其主要思想是通过人工定义一种奖励函数来为每一个对话进行打分。通常这类奖励函数并不能很好的适应开放领域的对话,使得对话系统容易生成类似“I don’t know”等这一类回复。通常认为这一类回复是毫无意义的;另一类则是使用对抗生成网络进行学习,其主要思路是利用生成器来生成句子,企图骗过判别器来获得较高的得分;判别器则尽可能区分哪些是来自真实的分布,哪些是生成器生成的文本。然而生成对抗网络经常遭受训练不稳定等问题。

  基于上述的问题作为研究的动机,本文的主要贡献有:

  1. A novel reward model architecture to evaluate the reward of each word in a dialog,
    which enables us to have more accurate signal for adversarial dialogue training;
  2. A novel Seq2Seq model, DG-AIRL, for addressing the task of dialogue generation built
    on adversarial inverse reinforcement learning;
  3. An improvement of the training stability of adversarial training by employing causal
    entropy regularization;

四、模仿学习

  模仿学习是一种新的基于强化学习的方法(强化学习的相关定义及方法请阅读博文:强化学习)。给定一个专家数据,假设这个专家数据是完全正确的,因此我们认为专家数据中每一个文本都拥有最高的奖励。然后我们并不知道这个奖励函数,因此我们需要直接或间接的学习奖励函数,然后基于奖励函数来学习策略。
  模仿学习主要有三种方法:
在这里插入图片描述
(1)行为克隆(Behavior Clone):行为克隆是指在给定的一组专家数据,直接使用一个模型来分别学习,这即是传统的监督学习方法,即输入一个文本及对应的标签(回复),通过梯度下降方法学习模型的参数。行为克隆虽然简单,但通常许多应用领域内遭受数据缺失的问题,使得模型并不能充分的学习;
(2)逆强化学习(Inverse Reinforcement Learning):给定一个专家数据,逆强化学习的目标是首先学习潜在未知的reward function,而这个reward function一定是能够给专家数据高分。在寻找到这个reward function之后,再使用强化学习的方法通过不断的采样来学习策略;
(3)生成对抗模仿学习(Generative adversarial imitation learning):其结合了对抗学习的方法。将策略使用生成器来学习,将reward function使用判别器来学习,这样可以不需要显式的指导reward function,且每一轮迭代学习均可以不断的调整reward function以及策略。

下面主要介绍后两个方法:

4.1 最大熵逆强化学习

  最大熵逆强化学习(MaxEnt-IRL)是最经典的逆强化学习方法。给定一个专家数据(轨迹)
D d e m o = { ζ 1 , ζ 2 , . . . , ζ N } D_{demo} = \{\zeta_1, \zeta_2, …, \zeta_N\} Ddemo={
ζ1,ζ2,...,ζN}

其中 ζ i \zeta_i ζi 表示一个轨迹,在本任务中可以认为是一个句子配对(对话)。因此如何寻找一个reward function使得这些轨迹可以得到尽可能大的分数?我们使用如下公式来定量判断每一个轨迹出现的概率:

p ( ζ i ∣ θ ) = 1 Z ( θ ) e x p r θ ( ζ i ) = 1 Z ( θ ) e x p ∑ t = 1 ∣ ζ i ∣ − 1 r θ ( s t , a t ) p(\zeta_i|\theta) = \frac{1}{Z(\theta)}exp^{r_{\theta}(\zeta_i)} = \frac{1}{Z(\theta)}exp^{\sum_{t=1}^{|\zeta_i|-1}}r_{\theta}(s_t,a_t) p(ζiθ)=Z(θ)1exprθ(ζi)=Z(θ)1expt=1ζi1rθ(st,at)

其中 Z ( θ ) = ∫ e x p ( r θ ( ζ ) ) d ζ Z(\theta) = \int exp(r_{\theta}(\zeta))d\zeta Z(θ)=exp(rθ(ζ))dζ 是归一化因子。我们可知,如果轨迹的reward越高,其理应出现的概率越大,换句话说,如果专家数据中,某些轨迹出现的越频繁,则其对应的reward function也应该更大。因此如何能够获得对应的reward function?可知最能想到的就是参数估计方法——最大似然估计,因此对上式进行log运算,即:

L ( θ ) = − E ζ ∼ D d e m o r θ ( ζ ) + l o g Z ( θ ) L(\theta) = -\mathbb{E}_{\zeta\sim D_{demo}}r_{\theta}(\zeta) + logZ(\theta) L(θ)=EζDdemorθ(ζ)+logZ(θ)

然而 Z ( θ ) = ∫ e x p ( r θ ( ζ ) ) d ζ Z(\theta) = \int exp(r_{\theta}(\zeta))d\zeta Z(θ)=exp(rθ(ζ))dζ 很难对齐求导,因此MaxEnt-IRL利用一种重要度采样方法,通过另一个采样分布对其进行采样:

L ( θ ) = − E ζ ∼ p r θ ( ζ ) + l o g ∫ e x p ( r θ ( ζ j ) ) d ζ L(\theta) = -\mathbb{E}_{\zeta\sim p}r_{\theta}(\zeta) + log\int exp(r_{\theta}(\zeta_j))d\zeta L(θ)=Eζprθ(ζ)+logexp(rθ(ζj))dζ

L ( θ ) = − E ζ ∼ p r θ ( ζ ) + l o g ∫ e x p ( r θ ( ζ j ) ) q ( ζ j ) 1 q ( ζ j ) d ζ L(\theta) = -\mathbb{E}_{\zeta\sim p}r_{\theta}(\zeta) + log\int exp(r_{\theta}(\zeta_j))q(\zeta_j)\frac{1}{q(\zeta_j)}d\zeta L(θ)=Eζprθ(ζ)+logexp(rθ(ζj))q(ζj)q(ζj)1dζ

L ( θ ) = − E ζ ∼ p r θ ( ζ ) + l o g [ E ζ j ∼ q ( e x p ( r θ ( ζ j ) ) q ( ζ j ) ) ] L(\theta) = -\mathbb{E}_{\zeta\sim p}r_{\theta}(\zeta) + log [\mathbb{E}_{\zeta_j\sim q}(\frac{exp(r_{\theta}(\zeta_j))}{q(\zeta_j)})] L(θ)=Eζprθ(ζ)+log[Eζjq(q(ζj)exp(rθ(ζj)))]

4.2 生成对抗模仿学习

  生成对抗网络(GAN)主要包括生成器和判别器,生成器用于生成样本,判别器则用于判别生成的样本有多好。而生成对抗模仿学习则是利用生成对抗网络的特性来学习奖励函数。生成对抗网络如下图所示,GAN的详细讲解详见:生成对抗网络(GAN)之 Basic Theory 学习笔记
在这里插入图片描述
  在生成对抗模仿学习中,生成器相当于策略,判别器相当于奖励函数。首先是训练判别器,根据当前已训练好的生成器(策略)最大化真实经验数据的得分,最小化生成器生成样本的得分;在训练生成器时,固定判别器,此时生成器(策略)最大化判别器所给的分数。
  本文中,作者引入causal entropy来描述策略的优劣,一方面可以直接通过判别器的得分作为损失函数,而causal entropy则可以通过信息的不确定下来描述策略的性能。causal entropy公式如下:

H ( π ) = E π [ − l o g π ( a ∣ s ) ] H(\pi) = E_{\pi}[-log\pi(a|s)] H(π)=Eπ[logπ(as)]

因此对抗模仿学习的两个训练过程可以描述为如下公式:

max ⁡ r ∈ R ( min ⁡ π ∈ Π − λ H ( π ) − E π [ r ( s , a ) ] ) + E π E [ r ( s , a ) ] \max_{r\in R}(\min_{\pi\in\Pi} -\lambda H(\pi) – E_{\pi}[r(s,a)]) + E_{\pi_{E}}[r(s,a)] rRmax(πΠminλH(π)Eπ[r(s,a)])+EπE[r(s,a)]

= min ⁡ π ∈ Π [ − l o g ( D ( s , a ) ) ] + E π E [ − l o g ( 1 − D ( s , a ) ) ] − λ H ( π ) =\min_{\pi\in\Pi}[-log(D(s, a))] + E_{\pi_{E}}[-log(1-D(s, a))] – \lambda H(\pi) =πΠmin[log(D(s,a))]+EπE[log(1D(s,a))]λH(π)

4.3 对抗模仿学习用于对话生成

在这里插入图片描述
如上图,是判别器结构,主要用于判断给定的两个句子得分,其中Input Encoder和Context Encoder部分均为GRU单元。生成器和判别器的梯度更新如下图所示:

在这里插入图片描述

在这里插入图片描述

判别器(奖励函数)的梯度更新如下:
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/191947.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Lighttpd 插件mod_h264 streaming (mp4)安装

    Lighttpd 插件mod_h264 streaming (mp4)安装

    2022年3月5日
    39
  • matlab灰度化处理函数_matlab中imfinfo的用法

    matlab灰度化处理函数_matlab中imfinfo的用法Matlabinfl()依次使用函数IM=imreconstruct(marker,mask)有关算法的详细信息,请参见Soille,P.,《形态图像分析:原理和应用》,SpringerVerlag,1999年,第208-209页。第6.3.7节“填充孔”部分importnumpyasnpfromskimage.morphologyimportreconstructionimpor…

    2025年11月10日
    3
  • 锁定计算机 最新的,锁定计算机的方法

    锁定计算机 最新的,锁定计算机的方法您可能感兴趣的话题:锁定计算机核心提示:我们在用电脑时,电脑开着有时候会短暂的离开下电脑,而电脑上有些东西不想让其他的看到或是操作。本教程为大家介绍一些锁定计算机的方法。我们在用电脑时,电脑开着有时候会短暂的离开下电脑,而电脑上有些东西不想让其他的看到或是操作。可以设置一下安全保护方法。暂时锁定计算机。1.Win+L键法在WindowsXP中在任何时候按下Win+L(L是LockStation之…

    2022年7月21日
    15
  • Prometheus TSDB存储原理

    Prometheus TSDB存储原理Python 微信订餐小程序课程视频 https blog csdn net m0 article details Python 实战量化交易理财系统 https blog csdn net m0 article details Prometheus 包含一个存储在本地磁盘的时间序列数据库 同时也支持与远程存储系统集成 比如 grafanacloud 提供的免费云存储 API 只需将 remote write 接口信息填写在 Prome

    2025年7月16日
    4
  • rpm卸载命令_yum卸载软件包的命令

    rpm卸载命令_yum卸载软件包的命令可以先用rpm-q’xxx’或者rpm-qf’xxx/bin/xxxx.xx’来查询一下所属的rpm包的名字。然后用rpm-e’xxxxxx’来删之。’xxx/bin/xxxx.xx’是一个包中任意的文件’xxxxxx’是查询得到的rpm包的名称    rpm-e的时候后面的文件名不用加版本号安全地卸载RPM卸载

    2025年12月10日
    4
  • 350页前端校招面试题直击大厂:前端基础、前端核心、计算机基础、项目、Hr面…「建议收藏」

    350页前端校招面试题直击大厂:前端基础、前端核心、计算机基础、项目、Hr面…「建议收藏」前言考虑到关注的小伙伴们也会有在校生或应届生,要参加校招的同学,一直挺想总结一些关于校招面试题,赶在春招结束前终于写完了,除了写到前端方面的面试题外,项目、职业发展、H面等高频问题也会有,写的很详细,全方面做好准备,为同学们的校招保驾护航!目录1.HTML2.CSS3.前端基础4.前端核心5.前端进阶6.移动端开发7.计算机基础8.算法与数据结构9.设计模式10.项目11.职业发展12.Hr面正文HTML1.浏览器页面有哪三层构成,分别是什么,作用是什么?2.HTML5的

    2022年6月19日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号