服务器 频道

智能判责在哈啰顺风车的应用

  智能判责任务简介

  智能判责定义  

  在普惠顺风车订单系统中,一旦司机和乘客建立订单关系后,若其中任何一方发起取消订单的请求,将触发判责算法,该算法将输出确定订单取消责任的一方。

  智能判责难点

  重要特征因子繁多:聊天记录、电话录音以及订单备注等皆属于最为关键的因素之一。然而,这些特征本身的形式多样,包括文字和录音等形式,因此其解读与消化变得相当困难。

  训练样本匮乏:当前可用的训练样本中,判责结果的准确率本就不尽人意。因此,基于这些样本训练出的模型的可靠性也较低。

  复杂的应用场景交叉:不同场景之间相互交织,例如订单取消可能因时间变更,也可能是因对方要求额外高速费或者额外增加人员等等问题。

  特征数量与判断难度正相关:传统的算法模型认为特征越多准确率越高,然而,在智能判责领域,特征的增多意味着事务变得更加复杂,从而增加了模型准确判断的难度。

  传统智能判责算法

  工程判责:

  判责介绍:利用一定的规则进行判责(容易被发现漏洞)

  算法判责1.0_趋近客服改判:

  训练数据集:客服改判结果

  特征因子:订单基本信息、司乘基本信息

  算法判责2.0_工程+客服改判:

  训练数据集:90%工程判责数据(用户有选择取消原因&未进入客服侧的工程判责数据)+10%客服改判数据(客服改判后用户未再进线的改判数据)

  算法判责3.0:

  训练数据集:数千条双盲精确打标数据

  特征因子:订单基本信息、司乘基本信息+85%准确率的聊天记录意图识别模型

  结合大模型的智能判责

  为什么要用大模型来进行判责

  目前,传统的智能责任判定算法在处理无沟通记录的情况下,准确率高达99.7%,但对于具有聊天记录和通话记录的案例,准确率稍有下降。而根据业务反馈,复杂案例需要自然人参与听取通话内容进行判定。

  为了进一步提高准确率,关键的提升点在于文本和语音的语义理解。目前的深度学习模型在此方面达到了大约80%的准确率,但在特征融合过程中存在着较大的信息损失。

  大模型在这方面具有独特的优势。同时,我们的责任判定场景有明确的SOP,可以通过一定手段来确保模型准确率达到可接受的水平。此外,大模型还能够提供责任判定的原因,这是以前的深度学习模型所无法实现的。

  一个例子感受下大模型的强大之处:  

  输入:订单的上下文信息和司乘聊天信息。  

  输出:明确按照我给的判责流程进行判责工作,并给出推理过程和判责依据。

  Prompt工程  

  Prompt工程是创建Prompt、提问或指导像ChatGPT这样的语言模型输出的过程。

  它允许用户控制模型的输出,生成符合其特定需求的文本。Prompt 工程的作用,通过提供清晰和具体的指令,可以引导模型的输出,确保其相关性。

  简单举例,想创建一个负责生成文本的机器人,提示词需要遵循以下四个要点:

  以第二人称而不是第三人称称呼机器人,让机器有自我认知

  措辞尽可能地清晰,减少误解

  可以在提示中使用方括号对指令进行扩展描述

  使用Markdown有时可以帮助机器人更好地理解复杂的指令  

  这里的关键不在技术,而在提示词的质量与创作者的脑洞,以及善于利用AI解决问题的能力——“人机交互”能力。

  随着使用越来越多大家也发现大模型直接给出答案似乎并不靠谱,那么是否可以让它像人类一样,一步一步思考呢?毕竟,人类在解决问题时,也是逐渐构建解决方案,而并非立即给出答案。因此,开始出现了一系列的尝试解法,比如思维链、多思维链、思维树和思维图等。  

  这可以通过两种方式实现,一种是具体说明,即要求模型详细地、一步步地思考;另一种是示例说明,即通过给定问题和答案的同时,提供思考过程。这样,当询问模型时,模型会模仿此过程,逐渐思考并给出答案。

  外挂知识库  

  步骤:

  将知识库的文本分块,并进行向量化(可以使用大模型的embedding也可以使用如BERT等方法)

  用户的query向量化,并在知识库中进行检索,返回最相关的TOPN的文本块

  采用合适的prompt + 上述步骤搜索到的文本,一并输入给LLM

  利用LLM的语义理解能力和知识问答能力,生成问题的答案

  缺点很明显:只是匹配到最相关部分,不是理解全部语义,准确率有损。

  Agent

  Agents=LLM + 任务规划(COT) + 记忆(LangChain) + 工具使用

  其中LLM是核心大脑,记忆、任务规划和工具使用则是Agents系统实现的三个关键组件。再加上行动端,形成一个完整的Agent System。  

  记忆(Memory)

  记忆可以定义为获取、存储、保留和稍后检索信息的过程,其中包括储存了Agent过去的观察、思考和行动序列的信息。

  短期记忆(Short-term memory)

  由于Transformer模型的上下文窗口有限,短期记忆是一种短暂且有限的记忆形式;为了应对这种限制,目前有以下解决方案:

  1. 扩展主干架构的长度限制:通过改进Transformer模型固有的序列长度限制问题来提高短期记忆的容量。比如gpt4-8k, gpt4-32k, gpt4-128k。

  2. 总结记忆(Summarizing):对记忆进行摘要总结,增强Agent从记忆中提取关键细节的能力,例如LangChain的Conversation Summary Buffer Memory

  长期记忆(Long-term memory)

  长期记忆是AI Agent可以在查询时处理的外部向量存储,可以通过快速检索访问,并使用适当的数据结构对记忆进行压缩,以提高记忆检索效率。

  工具使用(Tool Use)

  人类通过使用工具来完成超出我们身体和认知极限的任务。同样地,给LLM配备外部工具也可以显著扩展大模型的功能,使其能够处理更加复杂的任务。如联网工具、访问外部一切API的能力、访问业务服务API的能力。

  任务规划(Planning Skills)

  在具体实现中,规划可以包含两个步骤:

  1. 计划制定(Plan Formulation):代理将复杂任务分解为更易于管理的子任务。

  一次性分解再按顺序执行、逐步规划并执行、多路规划并选取最优路径等。

  在一些需要专业知识的场景中,代理可与特定领域的 Planner 模块(SOP)集成,提升能力。

  2. 计划反思(Plan Reflection):在制定计划后,可以进行反思并评估其优劣。这种反思一般来自三个方面:借助内部反馈机制;与人类互动获得反馈;从环境中获得反馈。  

  我们把Agent视作一个虚拟世界中的智能体,如MineCraft游戏中所设定的角色。这个角色可以沿着指定的路线,完成一些在环境中探索的任务,如建房子、挖矿、打怪等。这个角色首先需要被告知怎样去执行任务,例如自动训练课程计划的使用。然后逐步的完成任务,形成自己的执行代码库、技能库等,这样就算是在以后遇到相似的任务,它都能快速调用已有的技能和经验来完成任务。某种意义上,这就是一种强化学习的方式。

  结合大模型的智能判责

  之前的介绍的方案都是在不改变大模型原有参数的情况下。

  在我们探索大模型的应用过程中,从prompt工程转向微调方案是一个重要的步骤。这个转变涉及到模型的训练和优化方式的根本性改变。

  而微调方案都是在预训练模型的基础上,通过微调部分参数,来适应特定的任务。微调方案主要包括Freeze、prompt tuning、LoRA等。

  这两种方法各有优势,Prompt工程的优点在于其高效性和灵活性,而微调方案则可以更精细地调整模型以适应特定任务。而且通常是结合起来使用。

  Lora方法  

  LoRA(Low-Rank Adaptation of Large Language Models),直译为大语言模型的低阶自适应。LoRA 的基本原理是冻结预训练好的模型权重参数,在冻结原模型参数的情况下,通过往模型中加入额外的网络层,并只训练这些新增的网络层参数。由于这些新增参数数量较少,这样不仅 finetune 的成本显著下降,还能获得和全模型参数参与微调类似的效果。

  随着大语言模型的发展,模型的参数量越来越大,比如 GPT-3 参数量已经高达 1750 亿,因此,微调所有模型参数变得不可行。LoRA 微调方法由微软提出,通过只微调新增参数的方式,大大减少了下游任务的可训练参数数量。

  A的输入维度和B的输出维度分别与原始模型的输入输出维度相同,而A的输出维度和B的输入维度是一个远小于原始模型输入输出维度的值,这也就是low-rank的体现(有点类似Resnet的结构),这样做就可以极大地减少待训练的参数了。

  我们也尝试了lora微调实验,在同样的prompt和相同基座下准确率由之前的32%提升至微调后的60%。

0
相关文章