0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

强化学习在智能对话上的应用介绍

电子设计 来源:电子设计 作者:电子设计 2020-12-10 19:02 次阅读

本文主要介绍深度强化学习在任务型对话上的应用,两者的结合点主要是将深度强化学习应用于任务型对话的策略学习上
来源:腾讯技术工程微信号

背景

本文主要介绍深度强化学习在任务型对话上的应用,两者的结合点主要是将深度强化学习应用于任务型对话的策略学习上,目前工业界普遍使用的策略都是基于规则的,显然基于规则的方法有人力成本高、泛化能力差等缺点,而强化学习恰好能解决这些问题,而且强化学习只需要一些目标,无需大量的训练语料,避免了深度学习的一大缺点。

首先简单介绍一下强化学习和对话系统,然后再具体介绍一下深度强化学习在任务型对话中是怎么应用的,最后给出训练的结果和总结。以下举例部分都会以订餐场景为准。

强化学习

强化学习系统由智能体(Agent)、状态(state)、奖赏(reward)、动作(action)和环境(Environment)五部分组成。

Agent:智能体是整个强化学习系统核心。它能够感知环境的状态(State),并且根据环境提供的奖励信号(Reward),通过学习选择一个合适的动作(Action),来最大化长期的Reward值。简而言之,Agent就是根据环境提供的Reward作为反馈,学习一系列的环境状态(State)到动作(Action)的映射,动作选择的原则是最大化未来累积的Reward的概率。选择的动作不仅影响当前时刻的Reward,还会影响下一时刻甚至未来的Reward,因此,Agent在学习过程中的基本规则是:如果某个动作(Action)带来了环境的正回报(Reward),那么这一动作会被加强,反之则会逐渐削弱,类似于物理学中条件反射原理。

Environment:环境会接收Agent执行的一系列的动作(Action),并且对这一系列的动作的好坏进行评价,并转换成一种可量化的(标量信号)Reward反馈给Agent,而不会告诉Agent应该如何去学习动作。Agent只能靠自己的历史(History)经历去学习。同时,环境还像Agent提供它所处的状态(State)信息

Reward:环境提供给Agent的一个可量化的标量反馈信号,用于评价Agent在某一个时间步所做action的好坏。强化学习就是基于一种最大化累计奖赏假设:强化学习中,Agent进行一系列的动作选择的目标是最大化未来的累计奖赏。

State:状态指Agent所处的环境信息,包含了智能体用于进行Action选择的所有信息,它是历史(History)的一个函数:St = f(Ht)。

可见,强化学习的主体是Agent和环境Environment。Agent为了适应环境,做出的一系列的动作,使最终的奖励最高,同时在此过程中更新特定的参数。实际上可以把强化学习简单理解成是一种循环,具体的工作方式如下:

智能体从环境中获取一个状态St;

智能体根据状态St采取一个动作at;

受到at的影响,环境发生变化,转换到新的状态St+1;

环境反馈给智能体一个奖励(正向为奖励,负向则为惩罚)。

对话系统

对话系统是为了某种目的设计的用以与人类对话的机器,这种目的可以是为了特定的任务,也可以是简单的与人聊天,前者就是任务型对话,后者为非任务型对话系统。

任务型的对话主要为了一个特定的目标进行对话,比如常见的订飞机票、订餐等。对于任务型对话工业界主要实现方案还是为pipeline的方式,即按照SLU、DST、DPL和NLG的方式组织整个对话系统,在学术界上end-to-end的方式也越来越受到关注,与pipeline不同,end-to-end模型使用一个模块,并与结构化的外部数据库交互。

非任务型的对话则类似于微软小冰和人进行一些聊天。非任务型的对话主流实现方案有两种:生成式和检索式。随着seq2seq模型的越来越成熟,生成式方案也越来越受到关注,这种方法是把对话任务看成是一种翻译任务,认为Q(人说的话)和A(机器的回复)是两种语言。检索式则是系统有很多训练数据,其中包括扩展问题(每个问题都对应一个标准问)、答案(每个标准问对应一个答案),当用户说一句话时,则系统用这句话作为query在训练集中进行检索和排序得到匹配的问题,最后根据这个问题的标准问查询答案。当然也有这两种方式的结合,即使用生成式生成候选的答案,再使用检索式进行匹配和排序得到精准回答。

DQN+任务型对话

DQN

Q-learning是强化学习中的一种,在Q-learning中,我们维护一张Q值表,表的维数为:状态数S * 动作数A,表中每个数代表在态s下可以采用动作a可以获得的未来收益的折现和——Q值。我们不断的迭代我们的Q值表使其最终收敛,然后根据Q值表我们就可以在每个状态下选取一个最优策略。由于这里主要介绍强化学习的在任务型对话中的应用,不进行详细的介绍,具体的可参照《极简Qlearning教程

DQN是深度学习与强化学习的结合,即使用神经网络代替Q-learning中Q表。在普通的Q-learning中,当状态和动作空间是离散且维数不高时可使用Q-Table储存每个状态动作对的Q值,但是当状态和动作空间是高维或者连续时,使用Q-Table不现实,而神经网络恰好擅长于此。因此将Q-Table的更新问题变成一个函数拟合问题,相近的状态得到相近的输出动作。具体来说,比如我们现在还有一个Q值表,神经网络的作用就是给定一个状态s和动作a,预测对应的Q值,使得神经网络的结果与Q表中的值接近。不过DQN的方式肯定不能继续维护一个Q表,所以将上次反馈的奖励作为逼近的目标,如下式,通过更新参数 θ 使Q函数逼近最优Q值 。因此,DQN就是要设计一个神经网络结构,通过函数来拟合Q值,即:

当然这也会带来一些问题:

神经网络需要大量带标签的样本进行监督学习,但是强化学习只有reward返回值,如何构造有监督的数据成为第一个问题,而且伴随着噪声、延迟(过了几十毫秒才返回)、稀疏(很多State的reward是0)等问题;

神经网络的前提是样本独立同分布,而强化学习前后state状态和反馈有依赖关系——马尔科夫决策;

神经网络的目标分布固定,但是强化学习的分布一直变化,比如你玩一个游戏,一个关卡和下一个关卡的状态分布是不同的,所以训练好了前一个关卡,下一个关卡又要重新训练;

过往的研究表明,使用非线性网络表示值函数时出现不稳定等问题。

针对以上问题的具体解决方案如下:

构造标签:通过Q-Learning使用reward来构造标签(对应问题1),如上所述,用神经网络来预测reward,将问题转化为一个回归问题;

经验回放:通过experience replay(经验池)的方法来解决相关性及非静态分布问题(对应问题2、3);

网络结构:使用一个神经网络产生当前Q值,使用另外一个神经网络产生Target Q值(对应问题4)。

构造标签

对于函数优化问题,监督学习的一般方法是先确定Loss Function,然后求梯度,使用随机梯度下降等方法更新参数。DQN则基于Q-Learning来确定Loss Function。我们想要使q-target值和q-eval值相差越小越好。DQN中的损失函数是:

这里yi先可以认为是状态s和动作a对应的标准Q值,实际根据后面的双网络结构,yi是根据上一个迭代周期或者说target-net网络的参数计算出的q-target值,跟当前网络结构中的参数无关,yi的计算如下,然后整个目标函数就可以通过随机梯度下降方法来进行优化

经验回放

经验池的功能主要是解决相关性及非静态分布问题。具体做法是把每个时间步agent与环境交互得到的转移样本 (st, at, rt, st+1) 储存到回放记忆单元,要训练时就随机拿出一些(minibatch)来训练。(其实就是将对话的过程打成碎片存储,训练时随机抽取就避免了相关性问题),上面的代码是将每次神经网络预测的结果保存在经验池中,下面则是在每次训练的时候从经验池中随机取出一个batch进行训练。

双网络结构

双网络结构即构建两个神经网络:target_net和eval_net,eval_net用来进行参数训练和预测Q值,而target_net是eval_net的一个副本,这个网络使用来预测目标Q值(构造标签中的yi),相当于监督训练中的label。target_net是每隔一定时间更新为eval_net的参数,这样在一段时间里目标Q值使保持不变的,一定程度降低了当前Q值和目标Q值的相关性,提高了算法稳定性。

任务型对话

任务型对话的主要目标是完成一个任务如订餐、订票等,在这种场景下仅仅给用户一个回答是远远不够的,还需要真正的理解一个用户的意图,以及这个意图相关的信息,如果一个用户想订餐,那么需要知道用户的就餐具体日期、用餐人数等等,所以就需要进行槽提取等等,同时还需要关注当前的获取的信息量以及未获取的信息等。

SLU:语言理解,把用户的自然语言表述的文本处理成预先设计好的机器能够理解的形式,通常为意图和槽值对。如用户输入“我想订一个明天的位子”,则SLU的输出应该是intent=订餐,slot=date:明天(实际中提取出的槽值需要做标准化处理)。这个部分意图识别可作为分类任务或者检索任务,而槽提取一般可用作为NER问题。

DST:对话状态跟踪,根据对话历史管理每一轮对话的输入,并且预测当前对话的状态。比如使用规则的方法:有哪些槽已经填充,哪些未填充等、哪些已经问过usr、问过多少次等等。

DPL,对话策略学习,根据当前对话状态做出下一步的反应。比如根据DST知道有哪些槽未填充,用规则的方法选取一个优先级最高的槽提问。DPL的任务是一个序列决策的过程,因此常用的方法有规则方法、CRF,以及本文的重点:强化学习方法。

NLG,自然语言生成,根据系统得到的动作生成客户易理解的自然语言文本。这个很容易理解,如果DPL的动作是问用户就餐人数,在系统里面可能是类似request{“num”:“UNK”},NLG的作用就是把这个转换成“请问有几个人就餐呢”。

应用

将强化学习应用于任务型对话的主要是把强化学习应用于DPL学习对话的动作决策,即强化学习中的Action对应于对话中的下一步动作,比如是回答用户的某个问题还是问用户下一个槽相关的问题等等。用强化学习的一个好处就是不需要训练数据,因为训练过程中只需要Simulator根据设置的goal进行回答和提问就可以了。实际应用中将DM作为强化学习中的Agent,反馈一些信息给用户。DQN中的reward是根据对话的结果进行提供,分为两个阶段,一个是在对话未完成的时候,每增加一轮对话就给一个-1的奖励,另外就是在对话完成时,如果完成任务则给一个(max_turn-turn)的奖励,否则奖励为-(2* max_turn)。

另外,在训练强化学习的过程中,实际上并不需要用到SLU和NLG,在Agent和User Simulator之间只需要通过结构化的数据进行交流,而不需要转换成自然语言,比如:


表示“2019年2月18日和2019年2月19还有空位置”:


则表示“我想订一个5人的位子,什么时间有空位子?”。

Simulator:模拟用户行为,Simulator的主要做法就是针对Agent反馈的信息,结合自身的goal进一步与Agent进行交互,比如是回答Agent问题,还是进行反问,是完成goal结束对话,还是拒绝。这相当于使用的是规则的方式,不过也有使用模型的方式构建一个world model来模型用户。

Goal:任务的目标,在订餐任务中我们设置的目标形式如下图。强化学习能够很好的应用于任务型对话的一大原因就是这些goal本身并不需要人为一个个编写,只需要根据业务需求根据各个槽完成生成即可,这就避免了大量的训练预料。

除了以上,还需要根据实际的情况虚构一个数据库以模拟实际使用中的数据查询,如餐厅在某些条件下是不是有剩余位子等。

效果

成功率

奖励

对话轮数

举例(此处不考虑SLU和NLG,在真正训练过程中都是使用了结构化的数据),假设我们的goal如下:

使用强化学习的的结果如下:

人工翻译过来(其实就是基于模板方法的NLG)如下:

上面的结果还是很好的,与针对这个场景精心设计的规则的方法基本上能保持一致:

总结

可以加入额外惩罚和奖励,加快收敛,比如上一章节中的效果是不加任何额外惩罚和奖励,可以看出大概在5000个epoch的时候就已经收敛,但是如果加入一些答非所问、回答重复问题等惩罚则不到1000个epoch就会收敛,另外加入这些惩罚和奖励也会让网络朝着我们想要的方向进行训练,得到更好的结果。

目前我们主要在订餐的任务上进行了试验,这个任务还比较简单,需要找一个更为复杂的场景进行验证。

训练过程中只是使用了slot是否填充等,对于已经填充的slot未利用slot的值,对此需要进一步探究slot的值对于DPL的决策是否有影响。

一旦在线上使用的槽的个数需要发生变化就必须重新进行训练,非常耗时。

Goal和Simulator还是一种比较“僵硬”的做法,需要在实际线上的使用过程中不断训练,这样可以使得对话决策更智能更符合用户预期。

更多腾讯AI相关技术干货,请关注专栏腾讯技术工程

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 人工智能
    +关注

    关注

    1776

    文章

    43871

    浏览量

    230621
  • 强化学习
    +关注

    关注

    4

    文章

    259

    浏览量

    11114
收藏 人收藏

    评论

    相关推荐

    什么是强化学习

    强化学习是机器学习的方式之一,它与监督学习、无监督学习并列,是三种机器学习训练方法之一。 在围棋上击败世界第一李世石的 AlphaGo、在《
    的头像 发表于 10-30 11:36 1648次阅读
    什么是<b class='flag-5'>强化学习</b>

    NeurIPS 2023 | 扩散模型解决多任务强化学习问题

    扩散模型(diffusion model)在 CV 领域甚至 NLP 领域都已经有了令人印象深刻的表现。最近的一些工作开始将 diffusion model 用于强化学习(RL)中来解决序列决策问题
    的头像 发表于 10-02 10:45 448次阅读
    NeurIPS 2023 | 扩散模型解决多任务<b class='flag-5'>强化学习</b>问题

    模拟矩阵在深度强化学习智能控制系统中的应用

    讯维模拟矩阵在深度强化学习智能控制系统中的应用主要是通过构建一个包含多种环境信息和动作空间的模拟矩阵,来模拟和预测深度强化学习智能控制系统在不同环境下的表现和效果,从而优化控制策略和提
    的头像 发表于 09-04 14:26 330次阅读
    模拟矩阵在深度<b class='flag-5'>强化学习</b><b class='flag-5'>智能</b>控制系统中的应用

    语言模型做先验,统一强化学习智能体,DeepMind选择走这条通用AI之路

    智能体的开发中,强化学习与大语言模型、视觉语言模型等基础模型的进一步融合究竟能擦出怎样的火花?谷歌 DeepMind 给了我们新的答案。 一直以来,DeepMind 引领了强化学习(RL)
    的头像 发表于 07-24 16:55 334次阅读
    语言模型做先验,统一<b class='flag-5'>强化学习</b><b class='flag-5'>智能</b>体,DeepMind选择走这条通用AI之路

    基于强化学习的目标检测算法案例

    摘要:基于强化学习的目标检测算法在检测过程中通常采用预定义搜索行为,其产生的候选区域形状和尺寸变化单一,导致目标检测精确度较低。为此,在基于深度强化学习的视觉目标检测算法基础上,提出联合回归与深度
    发表于 07-19 14:35 0次下载

    强化学习 - 无模型设定(2)#人工智能

    人工智能
    未来加油dz
    发布于 :2023年07月18日 23:00:17

    强化学习 - 无模型设定(1)#人工智能

    人工智能
    未来加油dz
    发布于 :2023年07月18日 22:59:54

    45. 5 2 强化学习(深度强化学习) #硬声创作季

    机器学习
    充八万
    发布于 :2023年07月07日 01:56:26

    什么是深度强化学习?深度强化学习算法应用分析

    什么是深度强化学习? 众所周知,人类擅长解决各种挑战性的问题,从低级的运动控制(如:步行、跑步、打网球)到高级的认知任务。
    发表于 07-01 10:29 1187次阅读
    什么是深度<b class='flag-5'>强化学习</b>?深度<b class='flag-5'>强化学习</b>算法应用分析

    人工智能强化学习开源分享

    电子发烧友网站提供《人工智能强化学习开源分享.zip》资料免费下载
    发表于 06-20 09:27 1次下载
    人工<b class='flag-5'>智能</b><b class='flag-5'>强化学习</b>开源分享

    利用强化学习来探索更优排序算法的AI系统

    前言 DeepMind 最近在 Nature 发表了一篇论文 AlphaDev[2, 3],一个利用强化学习来探索更优排序算法的AI系统。 AlphaDev 系统直接从 CPU 汇编指令的层面入手
    的头像 发表于 06-19 10:49 397次阅读
    利用<b class='flag-5'>强化学习</b>来探索更优排序算法的AI系统

    基于深度强化学习的视觉反馈机械臂抓取系统

    机械臂抓取摆放及堆叠物体是智能工厂流水线上常见的工序,可以有效的提升生产效率,本文针对机械臂的抓取摆放、抓取堆叠等常见任务,结合深度强化学习及视觉反馈,采用AprilTag视觉标签、后视经验回放机制
    的头像 发表于 06-12 11:25 1417次阅读
    基于深度<b class='flag-5'>强化学习</b>的视觉反馈机械臂抓取系统

    ICLR 2023 Spotlight|节省95%训练开销,清华黄隆波团队提出强化学习专用稀疏训练框架RLx2

    大模型时代,模型压缩和加速显得尤为重要。传统监督学习可通过稀疏神经网络实现模型压缩和加速,那么同样需要大量计算开销的强化学习任务可以基于稀疏网络进行训练吗?本文提出了一种强化学习专用稀疏训练框架
    的头像 发表于 06-11 21:40 404次阅读
    ICLR 2023 Spotlight|节省95%训练开销,清华黄隆波团队提出<b class='flag-5'>强化学习</b>专用稀疏训练框架RLx2

    彻底改变算法交易:强化学习的力量

    强化学习(RL)是人工智能的一个子领域,专注于决策过程。与其他形式的机器学习相比,强化学习模型通过与环境交互并以奖励或惩罚的形式接收反馈来学习
    发表于 06-09 09:23 370次阅读

    基于多智能体深度强化学习的体系任务分配方法

    为了应对在未来复杂的战场环境下,由于通信受限等原因导致的集中式决策模式难以实施的情况,提出了一个基于多智能体深度强化学习方法的分布式作战体系任务分配算法,该算法为各作战单元均设计一个独立的策略网络
    的头像 发表于 05-18 16:46 2681次阅读
    基于多<b class='flag-5'>智能</b>体深度<b class='flag-5'>强化学习</b>的体系任务分配方法