在AI大模型领域,多轮对话是一个难点,主要包括五种挑战。 挑战一,上下文理解:随着对话轮次的增加,模型需要处理的上下文信息越来越多,这可能导致信息遗忘或混淆。此外,模型的上下文窗口大小有限,可能无法容纳整个对话历史。 挑战二,对话状态跟踪:在多轮对话中,用户的意图和话题可能会随着对话的进行而发生变化。模型需要跟踪对话的状态,包括用户的意图、当前的话题、已提供的信息等。 挑战三,推理与规划:在多轮对话中,模型可能需要结合先前的对话内容、常识知识和外部信息进行推理。此外,模型还需要规划对话的流程,以确保对话能够顺利进行。 挑战四,对生成一致性:在多轮对话中,模型可能会面临多种情况和语境。为了保持对话的一致性,模型需要仔细选择合适的回应,确保对话生成在内容、风格和语气上的一致性。 挑战五,对抗性问题:用户可能会提出一些具有挑战性或误导性的问题,试图测试模型的能力或寻找其弱点。模型需要具备一定的鲁棒性和应对策略,以应对这些对抗性问题。
大模型或者智能体要做到
-
一个引导性:主流程引导能力(营销流程的推动:收集客户信息,分析客户需求,给出解决方案,找到合适的销售产品)。
-
两个一致性:情绪氛围的一致性、话题的一致性。
《Learning Efficient Dialogue Policy from Demonstrations through Shaping》
使用强化学习训练任务导向型对话代理的成本非常高,因为它需要大量的用户交互。人类示范可以用来加速学习进程。然而,如何有效地利用示范来学习对话策略仍然是一个尚未充分探索的领域。在本文中,我们提出了一种通过策略塑造和奖励塑造从示范中高效学习对话策略的方法。我们使用模仿模型从示范中提取知识,策略塑造估计代理在策略空间中应如何行动的反馈。引入奖励塑造,在价值空间中对与示范相似的状态-动作进行奖励,从而鼓励更好的探索。提出了S^2 Agent。
对话策略优化是对话建模中最关键的任务之一。其中,最直接的方法之一是基于规则的方法 ,这种方法包含一组由专家定义的规则来进行对话建模。尽管基于规则的对话系统在某些场景中表现良好,但人工设计这些规则既耗时又难以扩展。
[注:基于规则的方法(Rule-based Method)是一种通过预定义的规则和逻辑来控制对话系统的响应方式的技术。开发者根据领域知识和专家经验,手动编写一系列规则来处理不同的用户输入并生成相应的系统输出。这些规则通常以“条件-动作”对的形式存在,例如:
-
如果用户说“我想订一张去北京的机票”,则回复“请问您想订哪一天的机票?”
-
如果用户说“我不需要了”,则回复“好的,如果您有其他需求,请随时告诉我。”
优点:可解释性强、开发周期短、性能稳定
缺点:扩展性差、灵活性不足、开发成本高。
适用场景:小规模、特定领域的对话系统;高准确性要求的场景;初始原型开发(开发初级阶段快速搭建一个基础框架,用于验证概念或收集用户数据)。
改进方法:
-
统计学习方法 :利用机器学习算法从数据中自动学习对话策略,减少对手动规则的依赖。
-
强化学习方法 :通过与环境交互不断优化对话策略,适合处理复杂和动态的对话场景。
-
混合方法 :结合基于规则的方法和其他智能方法(如深度学习),既保留规则的可控性,又提升系统的灵活性和泛化能力。]
对话策略学习常被形式化为一个强化学习问题,并通过深度强化学习模型加以解决。
基于RL的智能体需要一个环境来进行操作,同时需要与人类用户进行交互,并以在线方式更新其策略,这要求智能体从训练开始就具备良好的在线表现。此外,RL方法还面临奖励稀疏问题,需要数量庞大的交互才能达到可接受的性能,带来显著的成本开销。目前的研究方法就是提高学习效率并解决奖励稀疏问题。
本文主要研究如何高效利用招募专家收集的智能体行为的示范数据,来缓解奖励稀疏问题并提高策略学习的质量。
回放缓冲区预填充(Replay Buffer Spiking, RBS),将人类示范数据预先填充到经验回放缓冲区中,在训练初期表现出良好性能。 基于示范的深度Q学习(Deep Q-learning from Demonstrations, DQfD)方法,结合了时间差分更新与示范中动作的监督分类损失,提高在游戏领域中的学习效率。
在本文提出了一种利用人类示范数据高效学习对话策略的新策略,称对话智能体为S2Agent,它通过策略塑造(Policy Shaping)和奖励塑造(Reward Shaping)从示范数据中学习对话策略。
策略塑造,将先验知识引入策略学习。利用人类反馈指导策略如何像专家一样表现,从人类示范数据中估计状态-动作对的反馈,并利用这些反馈来协调任何基于强化学习(RL)的智能体的策略。使用深度神经网络,通过函数逼近来表示状态-动作空间并从人类示范数据中提取知识,从而估计反馈。利用策略塑造来引导搜索过程,使其偏向于与文本更兼容的语义解析。
奖励塑造,利用先验知识为学习智能体提供一个额外的中间奖励 ( F ),以补充环境奖励 ( R ),从而使系统能够从复合信号 ( R + F ) 中进行学习,解决奖励稀疏性问题。对与示范数据相似的状态-动作对进行奖励,引导策略探索朝向人类专家可能采取的动作。但除了基于势函数的奖励塑造,无法保证在奖励塑造的情况下,马尔可夫决策过程(MDP)仍然能够拥有与原始问题相同的最优策略。因此,可以直接从示范数据中估计基于势函数的奖励函数。
S2Agent如图所示,由四个模块组成:1)对话策略模型,根据当前对话状态选择最佳的下一个动作;2)模仿模型,被描述为一个分类任务,以对话状态作为输入并预测相应的对话动作从人类示范中提炼行为模式;3)策略调整模块,提供关于策略应如何模仿示范的反馈,并基于策略模型和模仿模型的动作协调出最终动作,生成更可靠的探索轨迹;4)奖励调整模块,通过提供额外的内在奖励信号,鼓励与示范相似的状态-动作对。
1)对话策略模型:负责根据当前对话状态选择最佳的下一行动。视为一个马尔可夫决策过程( MDP )问题,并利用深度Q网络( DQN )对策略进行改进。
在每一轮中,智能体观察对话状态(s),然后通过\epsilon-贪婪探索策略执行动作(a),即以概率\epsilon选择一个随机动作,或者采用贪婪策略a = \underset{a'}{\text{argmax}} Q(s, a'; \theta),其中Q(s, a'; \theta)近似表示值函数,由参数\theta参数化的多层感知机(MLP)来实现。然后,智能体获得奖励(r),感知到用户对动作a_{u}的下一个回应,并将状态更新为s'。元组(s, a, r, s')被存储在经验回放缓冲区D_{a}中。这个循环会一直持续,直到对话结束。Q(s, a'; \theta)的参数通过使用随机梯度下降法最小化以下均方损失来进行更新。
2)模仿模型:学习人类演示中的行为来提高模型的有效性,预测给定对话状态的相应对话动作。
人类示范D_{e}通常由一组状态 - 动作对[(s_{1}, a_{1}), (s_{2}, a_{2}), \ldots, (s_{n}, a_{n})]组成。由于D_{e}常是有限的,无法涵盖所有状态,对状态和动作之间的关系进行参数化,推广到未见过的状态。将这个任务表述为一个分类问题。以对话状态s_{i}作为输入,并使用交叉熵进行训练,以最小化动作a_{i}和预测动作\hat{a}之间的损失。
3)策略塑造:将人的反馈融入强化学习中,加快其学习进度,在策略空间中引导模型学习更有效的对话策略。
策略塑造估计人类的贝叶斯最优反馈政策,将反馈策略与潜在的强化学习模型的策略相结合。评估当前政策与人类专家示例的相似性,从而动态调整最终选择的动作。结合从模仿模型策略中的采样,计算来自人类演示的正反馈和负反馈。将策略模型和模仿模型相乘,实现政策的调和。
4)奖励塑造:与人类演示相似的状态-行动对提供额外的奖励,旨在缓解稀疏奖励问题,鼓励更好的探索。
奖励塑造通过计算与示例一致的状态-行动对 FD,并将其加入到环境奖励 r 中,从而形成一个复合奖励信号 R+FD。这个新信号被用于更新代理的价值函数,促进更好的学习。在实际操作中,当代理执行与示例相似且有效的状态-行动时,给予额外的正向奖励,这样代理在学习过程中更可能有效地选择这些高潜力的动作。
《Bootstrapped Policy Learning for Task-oriented Dialogue through Goal Shaping》
报错:UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 3: ordinal not in range(128)
探讨如何在任务导向对话(ToD)系统中优化对话策略,提出了新框架自助式策略学习(Bootstrapped Policy Learning, BPL),通过目标塑造提升对话策略的训练效率。
[注:原有的常见架构为pipeline和端到端。pipeline级联的子模块有自然语言理解(NLU)、状态追踪、对话策略(DP)和自然语言生成(NLG),DP在基于对话状态输入的系统响应中起关键作用。端到端框架面临可控性和可解释性挑战。]
解决强化学习在优化对话策略方面奖励稀疏性的问题。课程学习依赖于目标难度逐步增加的假设,以确保在不同复杂度之间实现平稳的知识迁移。在缺乏中间目标的复杂对话环境中,实现无缝的知识迁移很困难。
提出自举策略学习(Bootstrapped Policy Learning, BPL)框架,通过目标塑造为目标自适应地设计逐步具有挑战性的子目标课程,从而确保知识的平稳迁移。目标塑造包括目标分解与演化,将复杂目标分解为可解决的最大难度的子目标,并随着策略的改进逐步提高难度。识别出两种普适的课程模式,增强BPL在不同环境中的适应性。
主要包括两个方面:课程学习以及基于pipeline的任务导向策略中的目标分解。
[课程学习:模仿人类学习过程,通过将学习内容按照从简单到复杂的顺序排列,逐步引导模型学习,从而提高模型的性能和泛化能力。引入各种优化算法(如bandit算法、元学习、超参优化等)以及优化目标(如数据权重、损失函数、模型假设空间等)来设计更有效的课程学习算法。
在基于流水线的任务导向策略中,目标分解是指将复杂的目标任务拆解为一系列可操作的子目标或步骤,以便更高效地实现整体任务]。以往的研究主要集中在课程策略学习中精细的目标排序,本论文的研究目的是为每个复杂目标动态创建一个内在的子目标课程。
-
用户目标G:描述用户需求和对话目标,由约束C和请求R构成。约束条件是用户提供的信息,请求是用户需要获取的信息。假设有一组槽名称 S 以及每个槽名称 s 对应的值域 V(s)。用户提供的一个信息约束表示为 s=v 的形式,其中 s∈S 且 v∈V(s),表示槽 s 的值为 v。而用户请求则被视为用户想要获取值的一组槽名称。
-
[注:槽slot,用于表示用户目标的细节。槽名称表示槽的类型或含义,如“出发地”、“目的地”;槽值是用户提供的具体信息,如“北京”。在对话系统中通常以键值对形式表达。]
-
子目标:如果一个用户目标 g2 的约束条件和请求都是另一个用户目标 g1 的子集,那么 g2被认为是 g1的子目标。
-
完整目标:在对话策略训练开始之前未经过形状调整的用户目标。
-
当前用户目标:在对话开始时采样的用户(子)目标。
-
目标难度:由约束条件和请求的槽位数量决定。D(gi)=∣Ci∣+∣Ri∣,槽位数量越少,目标难度越低。
BPL由分解器Decomposer和进化器Evolver构成。分解器用于减少用户目标中的槽数以降低难度,进化器用于增加用户目标中的槽数以增加其难度。训练过程:
-
初始化:用户模拟器从训练集中随机选择一个用户目标 gi开始对话。对话策略在对话过程中没有真实的用户目标信息。
-
对话过程:用户模拟器与对话策略进行交互,生成对话轨迹,对话策略根据当前状态生成系统响应。
-
目标分解,如果对话失败,进行目标分解,具体包括边界状态检测、目标分解。目标替换。
-
目标进化,如果对话成功,进行目标进化,具体包括进化分割、子目标进化和目标替换。
-
Decomposer(分解器):在对话失败时激活,负责将复杂的目标分解为具有可解最大难度的子目标。它通过分析失败的对话轨迹,找到一个“边界状态”,并基于此状态将用户目标分解为边界子目标和未成功部分的子目标。
边界状态检测:在gi的失败对话轨迹中,识别出最接近的目标状态s4;目标分解:根据s4将当前目标gi分解为对应的边界子目标;目标替换:将当前目标替换为边界子目标。
[边界状态是对话轨迹中与目标状态最接近的状态,需要满足边界状态中的所有槽值对在目标状态中,并且边界状态与目标状态之间的距离最短。距离由不匹配的槽值对的数量决定。]
目标分解:目标被分解为边界子目标(包含边界状态中的槽)和失败子目标(包含用户目标中的剩余槽)。对复杂目标,通过三种分解调节指导识别分解最佳时机。
-
随时失败A:用户目标失败时激活。适用于目标难度较高,即使在早期对话轮次中也可能失败的情况。可以快速降低目标难度,帮助对话系统更快地学习。
-
训练N个周期后失败T:如果用户目标在经过N个训练周期后仍然失败,则进行分解。适用于目标难度适中,对话系统需要一定时间来学习和适应的情况。可以避免过早分解简单目标,同时确保复杂目标在多次失败后得到分解。
-
连续失败M次M:如果用户目标连续失败M次,则触发分解。适用于目标难度较高,对话系统在多次尝试后仍然无法完成的情况。连续失败表明当前目标超出了对话系统的能力范围,需要通过分解来降低难度。
目标替换:用进化后的新目标替换原始用户目标gi。
-
-
Evolver(进化器):在对话成功时激活,负责逐步增加子目标的难度,直到对话策略掌握整个目标。它通过评估对话策略的能力,决定将失败子目标中的哪些槽值对分配到进化部分,从而生成新的子目标。
进化分解:根据对话策略的表现,随机将失败的子目标划分为用于子目标进化的进化部分和用于下一次迭代的保留部分。表现更好的策略会将更多的槽值对分配到进化部分,此部分由子目标累计奖励与最大奖励来确定。使用评估分割策略的方法以保证平衡。
子目标进化:将进化部分与当前目标 gi合并,形成一个新的目标。
目标替换:用进化后的新目标替换原始用户目标gi。
论文分析了在不同难度数据集上最优的BPL组合模式。
-
低难度数据集:早期分解(条件A)优于延迟分解(T和C),结合条件A和进化分割(R或E)在低难度数据集中效果显著。
-
中等难度数据集:条件A表现不如T和C,因为中等难度数据集中包含简单和复杂的用户目标,需要逐步增加难度的进化分割(F)效果优于R或E。
-
高难度数据集:早期分解(条件A)对提高学习效率和最终性能至关重要,进化分割应逐步增加难度,因此R或E不适合高难度数据集。