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相关技术干货,请关注专栏腾讯技术工程

审核编辑 黄昊宇

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

    关注

    1791

    文章

    46820

    浏览量

    237456
  • 强化学习
    +关注

    关注

    4

    文章

    265

    浏览量

    11208
收藏 人收藏

    评论

    相关推荐

    如何使用 PyTorch 进行强化学习

    的计算图和自动微分功能,非常适合实现复杂的强化学习算法。 1. 环境(Environment) 强化学习中,环境是一个抽象的概念,它定义了智能体(agent)可以执行的动作(acti
    的头像 发表于 11-05 17:34 215次阅读

    谷歌AlphaChip强化学习工具发布,联发科天玑芯片率先采用

    近日,谷歌芯片设计领域取得了重要突破,详细介绍了其用于芯片设计布局的强化学习方法,并将该模型命名为“AlphaChip”。据悉,AlphaChip有望显著加速芯片布局规划的设计流程,并帮助芯片在性能、功耗和面积方面实现更优表现
    的头像 发表于 09-30 16:16 381次阅读

    人工智能如何强化智能家居设备的功能

    ,以配合用户的生活习惯与作息。本文将为您介绍人工智能将如何强化智能家居设备的功能,以及由芯科科技(Silicon Labs)所推出的解决方案,将如何增进智能家居设备的功能性与安全性。
    的头像 发表于 08-27 10:46 825次阅读
    人工<b class='flag-5'>智能</b>如何<b class='flag-5'>强化</b><b class='flag-5'>智能</b>家居设备的功能

    科大讯飞发布星火极速超拟人交互,重塑智能对话新体验

    8月19日,科大讯飞震撼宣布了一项关于其明星产品——星火语音大模型的重大革新,即将推出的“星火极速超拟人交互”功能,预示着人机交互的新纪元。该功能定于8月30日正式登陆讯飞星火App,面向广大用户开放体验,引领一场前所未有的智能对话风暴。
    的头像 发表于 08-20 16:46 313次阅读

    阿里巴巴将推出人工智能对话式采购引擎,重塑全球电商生态

    在数字化转型的浪潮中,阿里巴巴国际数字商业集团再次引领潮流,宣布将于今年9月面向全球商家推出一款革命性的“人工智能驱动的对话式采购引擎”。这一创新举措旨在简化繁琐的全球企业间电子商务流程,为商家带来前所未有的便捷与高效。
    的头像 发表于 08-05 14:19 553次阅读

    PythonAI中的应用实例

    Python人工智能(AI)领域的应用极为广泛且深入,从基础的数据处理、模型训练到高级的应用部署,Python都扮演着至关重要的角色。以下将详细探讨PythonAI中的几个关键应用实例,包括机器
    的头像 发表于 07-19 17:16 919次阅读

    人工智能对军事领域的影响有哪些

    智慧华盛恒辉人工智能对军事领域的影响深远且广泛,主要体现在以下几个方面: 智慧华盛恒辉一、作战效能与智能化 智慧华盛恒辉提升作战效能: 人工智能通过大数据分析和机器学习算法,能够快速处
    的头像 发表于 07-16 09:55 405次阅读

    通过强化学习策略进行特征选择

    更快更好地学习。我们的想法是找到最优数量的特征和最有意义的特征。本文中,我们将介绍并实现一种新的通过强化学习策略的特征选择。我们先讨论强化学习
    的头像 发表于 06-05 08:27 317次阅读
    通过<b class='flag-5'>强化学习</b>策略进行特征选择

    中美首次人工智能政府间对话瑞士日内瓦召开

    据外交部美大司官方微博“宽广太平洋”发布,中国与美国之间的人工智能政府间对话首次会议于2024年5月14日瑞士日内瓦召开。
    的头像 发表于 05-15 09:20 330次阅读

    浅谈AI技术SSD控制器中的应用

    当前AI技术蓬勃发展,深度学习强化学习等技术不断突破,使得AI图像识别、语音识别、自然语言处理等领域取得了显著成果。
    的头像 发表于 04-20 10:02 802次阅读
    浅谈AI技术<b class='flag-5'>在</b>SSD控制器中的应用

    用于对话式AI的高性能MEMS麦克风,助力改进用户体验

    对话式人工智能(AI)是一个快速发展的机器学习(ML)领域,旨在使人机交互更加自然直观。
    的头像 发表于 03-12 09:44 789次阅读
    用于<b class='flag-5'>对话</b>式AI的高性能MEMS麦克风,助力改进用户体验

    名单公布!【书籍评测活动NO.30】大规模语言模型:从理论到实践

    强化学习展开,详细介绍各阶段使用的算法、数据、难点及实践经验。 预训练阶段需要利用包含数千亿甚至数万亿单词的训练数据,并借助由数千块高性能GPU 和高速网络组成的超级计算机,花费数十天完成深度神经网络
    发表于 03-11 15:16

    一文详解Transformer神经网络模型

    Transformer模型强化学习领域的应用主要是应用于策略学习和值函数近似。强化学习是指让机器与环境互动的过程中,通过试错来
    发表于 02-20 09:55 1.2w次阅读
    一文详解Transformer神经网络模型

    拆解大语言模型RLHF中的PPO算法

    由于本文以大语言模型 RLHF 的 PPO 算法为主,所以希望你阅读前先弄明白大语言模型 RLHF 的前两步,即 SFT Model 和 Reward Model 的训练过程。另外因为本文不是纯讲强化学习的文章,所以我叙述的
    的头像 发表于 12-11 18:30 2048次阅读
    拆解大语言模型RLHF中的PPO算法

    ​cmp工艺是什么?化学机械研磨工艺操作的基本介绍

    化学机械研磨工艺操作的基本介绍以及其比单纯物理研磨的优势介绍
    的头像 发表于 11-29 10:05 1756次阅读