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

审核编辑 黄昊宇

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

    关注

    1813

    文章

    49752

    浏览量

    261624
  • 强化学习
    +关注

    关注

    4

    文章

    269

    浏览量

    11905
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何训练好自动驾驶端到端模型?

    [首发于智驾最前沿微信公众号]最近有位小伙伴在后台留言提问:端到端算法是怎样训练的?是模仿学习强化学习和离线强化学习这三类吗?其实端到端(end-to-end)算法自动驾驶、
    的头像 发表于 12-08 16:31 938次阅读
    如何训练好自动驾驶端到端模型?

    今日看点:智元推出真机强化学习;美国软件公司SAS退出中国市场

    智元推出真机强化学习,机器人训练周期从“数周”减至“数十分钟”   近日,智元机器人宣布其研发的真机强化学习技术,已在与龙旗科技合作的验证产线中成功落地。据介绍,此次落地的真机强化学习
    发表于 11-05 09:44 905次阅读

    自动驾驶中常提的“强化学习”是个啥?

    下,就是一个智能环境里行动,它能观察到环境的一些信息,并做出一个动作,然后环境会给出一个反馈(奖励或惩罚),智能体的目标是把长期得到的奖励累积到最大。和监督学习不同,
    的头像 发表于 10-23 09:00 333次阅读
    自动驾驶中常提的“<b class='flag-5'>强化学习</b>”是个啥?

    沐曦助力上海创智学院siiRL 2.0全面升级

    人工智能加速迈向大模型与智能体时代的今天,强化学习(Reinforcement Learning,RL)已经成为推动智能系统演化的关键技术
    的头像 发表于 09-29 11:38 568次阅读
    沐曦助力上海创智学院siiRL 2.0全面升级

    【「DeepSeek 核心技术揭秘」阅读体验】书籍介绍+第一章读后心得

    相对策略优化**(GRPO)算法、奖励模型**等关键技术的深入剖析,可以帮助读者了解 DeepSeek 强化学习领域的创新性探索。对DeepSeek-R1 的训练过程和推理能力的蒸馏等内容的详细阐述
    发表于 07-17 11:59

    NVIDIA Isaac Lab可用环境与强化学习脚本使用指南

    Lab 是一个适用于机器人学习的开源模块化框架,其模块化高保真仿真适用于各种训练环境,Isaac Lab 同时支持模仿学习(模仿人类)和强化学习尝试和错误中进行
    的头像 发表于 07-14 15:29 1841次阅读
    NVIDIA Isaac Lab可用环境与<b class='flag-5'>强化学习</b>脚本使用指南

    【书籍评测活动NO.62】一本书读懂 DeepSeek 全家桶核心技术:DeepSeek 核心技术揭秘

    。DeepSeek-V3 的发布几乎没有预热和炒作,仅凭借其出色的效果和超低的成本迅速走红。 DeepSeek-R1 则是 DeepSeek-V3 的基础构建的推理模型,它在后训练阶段大规模使用强化学习技术
    发表于 06-09 14:38

    能对话电网、指挥储能的双向计量电能表

    能对话电网、指挥储能的双向计量电能表
    的头像 发表于 04-27 17:35 592次阅读
    <b class='flag-5'>能对话</b>电网、指挥储能的双向计量电能表

    正点原子 AI BOX0 智能伴侣,1.54寸高清屏+长效续航,语音畅聊,情景对话,知识科普,多色可选,随身携带!

    正点原子 AI BOX0携小智AI来袭,专属你的智能伴侣!你的全能AI伙伴,懂你更贴心 正点原子ESP32 AI BOX0 — 不只是桌面摆件,更是能思考、会学习的AI灵魂伴侣!搭载前沿大语言模型
    发表于 04-24 16:11

    18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现

    本来转自:DeepHubIMBA本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。为确保内容
    的头像 发表于 04-23 13:22 1316次阅读
    18个常用的<b class='flag-5'>强化学习</b>算法整理:从基础方法到高级模型的理论技术与代码实现

    详解RAD端到端强化学习后训练范式

    受限于算力和数据,大语言模型预训练的 scalinglaw 已经趋近于极限。DeepSeekR1/OpenAl01通过强化学习后训练涌现了强大的推理能力,掀起新一轮技术革新。
    的头像 发表于 02-25 14:06 1024次阅读
    详解RAD端到端<b class='flag-5'>强化学习</b>后训练范式

    Deepseek单片机?RT-Thread跑通大语言模型

    前言单片机也能聊天?RT-Thread跑通大语言模型RT-Thread论坛忽然看到了单片机和大模型对话的文章,想着春节期间看到大语言模型的热度持续攀升,恰巧手头有块RA8D1Vi
    的头像 发表于 02-07 18:59 2378次阅读
    Deepseek<b class='flag-5'>上</b>单片机?RT-Thread<b class='flag-5'>上</b>跑通大语言模型

    HarmonyOS NEXT 应用开发练习:AI智能对话

    显示发送的时间戳,以便用户了解消息的发送时间。 这个DEMO展示了如何使用ArkTS和扩展后的ChatUI框架(或类似功能的库)HarmonyOS NEXT创建一个功能丰富的AI智能对话框。我们可以根据需要进一步定制和扩展这
    发表于 01-03 11:29

    唯创知音WT3000A AI智能对话方案介绍

    AI
    WT-深圳唯创知音电子有限公司
    发布于 :2025年01月02日 11:02:41

    【「具身智能机器人系统」阅读体验】+初品的体验

    动态互动的。 该理论强调智能行为源于智能体的物理存在和行为能力,智能体必须具备感知环境并在其中执行任务的能力。具身智能的实现涵盖了机器学习
    发表于 12-20 19:17