探索LLM的意图识别能力

不可否认的是,LLM(例如 OpenAI 的 GPT 系列)将在不断发展的对话式 AI 领域发挥重要作用。 关于使用 ChatGPT 执行各种任务的帖子和文章不计其数。 GPT 有几个关键功能值得进一步探索,例如其摘要、分类和生成文本的能力。 其中,出现了一个问题——“我们能否使用LLM来有效取代为大多数基于意图的聊天机器人提供支持的传统机器学习模型”?

当我们想到LLM时,我们可能会想到一个没有明确定义的真正“意图”的未来。 它也许能够处理严格的、预先计划的结构之外的任何要求。 然而,截至今天,我们的重点是LLM可以适应并增强当前架构。 考虑到这一点,我们通过将LLM的分类能力与现实生活中的聊天机器人进行比较,采用了宽松的科学方法。

首先,我们需要接受没有一个聊天机器人可以完美地识别意图,因此已经存在错误分类的因素。 长篇大论、多重意图和许多其他事情都可能导致用户走上错误的道路。 我们投入了大量时间来识别和减少这些类型的对话。 也许LLM可以帮助完成这个过程?

NSDT工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - Three.js虚拟轴心开发包

在我们的基准研究中,我们从生产客户服务聊天机器人中获取了数据,看看我们是否可以使用LLM来改进其意图识别。 为了实现基准比较,我们随机抽取了 400 个不同长度的真实用户输入,并用适当的意图手动标记这些输入。 接下来,我们针对机器人平台的机器学习模型运行了那些以前未见过的话语——准确率达到 60.5%。 虽然这可能看起来不太准确,但我们的聊天机器人解决方案也大量使用句法语言规则作为机器学习模型之上的额外层。 另一件需要考虑的事情是,人工标记也不是万无一失的,进行多次标记会减少那里的错误或偏差。 对于我们的小规模实验,我们只进行了一次标记。

常规 ML 模型的汇总结果:使用机器人平台的 ML 模型,涵盖 75 个意图的 9000 个训练问题返回 60.5% 的准确率

1、提示设计

我们写出了 75 个意图名称,并为每个意图添加了大约 5 - 7 个简洁的“主题”。 这些指令与用户话语一起在提示中传递以进行分类。 下面可以看到这些意图主题描述的示例。

我们还添加了一些护栏提示,以确保它仅从给定列表中选择一个意图,如果不确定,则返回“UNSUPPORTED”。 还有一些关于选择某些意图作为优先于其他意图的规则。

初步结果令人印象深刻,它成功预测了 64.5% 的话语意图,击败了常规 ML 模型。

提示设计的总结结果:使用 GPT-3.5 的提示设计可达到 64.5% 的准确率,其中包含 375 个“主题”摘要,涵盖 75 个意图,每个意图定义 4-6 个主题。

分类提示设计的思考

这种方法似乎是识别用户意图的一种非常有效的方法,但也有一些缺点。 对于每个话语,我们每次都需要提供完整的意图列表及其主题描述。 每个 API 调用的成本可能只有几分之一美元,但如果乘以数千个对话,加起来就可能是一个非常大的数字。

我们还发现“审查和改进”结果具有挑战性。 例如,如果特定的用户话语失败,那么在主题描述中要更改的内容并不总是显而易见的。 虽然维护常规的 ML 训练短语也是如此,但提示方法似乎更像是猜测,而不是正常的。

此外,该模型也无法返回其预测的“置信度”或“概率”水平。 我们发现,任何询问置信度百分比或前 3 个建议列表的尝试都会大大降低其准确性。

2、微调

微调(fine tuning)是一种向预训练模型添加另一层额外信息的方法,以便它可以“记住”一些事实。 当我们使用微调层对用户输入进行分类时,我们准备了带有模式的数据来告诉模型返回(完成)我们的分类。 在撰写本文时,微调仅适用于基本 GPT-3 模型 - Davinci 是其中最有能力的。

最初,我们使用了在提示方法中效果很好的主题。 370 个主题中的每一个及其相应的意图名称都用于创建自定义的微调达芬奇模型。 我们可以在下面看到一些微调数据的示例。

该图显示了用于微调的 json 结构以及简短的主题示例

我们的基准测试结果是 44.25% 的准确率。 这并不奇怪,因为我们没有为模型提供太多可以“学习”的内容来对用户消息的意图进行分类。 我们还发现该模型会返回看似合理但虚构的意图名称,其格式与提供给它的名称类似。

微调主题的摘要结果:使用经过微调的 Ada 模型,准确率达到 44.25%,该模型包含 375 个“主题”摘要,涵盖 75 个意图,每个意图定义 4-6 个主题。

作为第二阶段测试,我们准备了用于 ML 模型的所有现有训练数据,并创建了另一个经过微调的 GPT-3 模型。 这相当于 9000 多个训练问题,因此为模型提供了更多现实生活中的示例。 现在,根据我们对 400 条以前未见过的话语进行的基准测试,它的预测正确率为 65%。 我们还发现它没有发明新的意图名称。 使用经过微调的达芬奇模型时,准确率提高到 70%。

微调训练短语的总结结果:使用经过微调的 Ada 模型(包含涵盖 55 个意图的 9000 个训练短语),准确率达到 65%;使用经过微调的达芬奇模型,包含涵盖 55 个意图的 9000 个训练短语,准确率达到 70%

关于分类微调的思考

这种方法需要将数据准备成“提示”和“完成”模式。 根据特定模型的代币使用情况,创建微调模型需要一次性付费。 与使用常规 GPT-3 基本模型相比,向该微调模型发送后续查询会产生更高的令牌费用。

我们发现的一个缺点是,我们无法在对用户的话语进行分类之前轻松添加这些额外的“规则”。 有一个相对较新的提示结构用于将指令与输入分开,称为 ChatML,但基本 GPT-3 模型似乎尚不支持此结构。

3、嵌入

最后一种方法称为嵌入(embedding), 它是一种将单词和句子转换为数字(向量)以比较相似度的方法。 嵌入向量通常用于语义搜索和从大型语料库中检索相关答案。 该过程涉及从文本块创建嵌入文件。 在大多数情况下,OpenAI 建议使用他们最快且最便宜的模型 Ada 来实现此目的。

创建嵌入时,它本质上是创建一个数字(向量)文本文件,可以在 OpenAI 基础设施之外下载和使用。 如果它非常大,可能需要将其集中托管在专用矢量数据库上。

我们选择嵌入大约 9000 个话语的训练数据。 因此,每个训练短语都会被嵌入,然后将 400 个测试话语中的每一个与这些嵌入进行比较以了解相似性。

结果是 60% 的准确率,实际上与常规 ML 模型本身相同。

嵌入的总结结果:使用 Ada 模型进行嵌入,具有涵盖 55 个意图的 9000 个训练短语,准确率达到 60%

关于分类嵌入的思考

一旦嵌入了自定义数据,拥有一个不会过期或产生使用费用的文件就很有吸引力。 然而,与嵌入数据进行比较的短语必须首先使用相同的模型嵌入。 嵌入似乎是一种基于语义相似性返回事实响应的可靠方法。 它不会“发明”新的意图,因为它会忠实地返回所提供的任何文本。 根据最可能的意图返回相似度分数。 然而,我们观察到的数字非常接近,有时在 0 到 1 的范围内仅相差 0.001。

在所有 3 种方法中,这种方法似乎是最复杂的,并且并没有比向提示本身添加简单主题产生更好的结果。

4、结束语

虽然我们的测试规模有限,但它们确实揭示了LLM如何适合意图分类。 为了更好地评估这些方法,让我们回到最初的问题“我们是否可以使用LLM来有效取代为大多数基于意图的聊天机器人提供支持的传统机器学习模型?”

微调提供了 70.5% 的最佳准确率,比常规 ML 模型高出 10%。 然而,这必须与维持训练短语和无法实施意图“优先”规则或“后备”响应的限制相平衡。 还值得注意的是,达芬奇模型的训练时间为 2 小时,成本为 21 美元。

嵌入方法提供的结果通常与传统机器学习模型的准确性一致,但它们仍然需要大量精选的训练短语。 从我们的测试来看,它们似乎不适合更好的意图识别或改进的工作流程。 事实上,对训练问题进行更改比在机器人平台本身上重新训练“内置”机器学习模型需要更长的时间。

然而,我们可以看到使用提示设计方法的用例。 创建意图列表相对较快,无需使用任何其他数据或 API。 它确实可以加速构建第一个迭代聊天机器人,或者可能是 PoC 或演示。 不需要预先拥有大量训练数据,任何人都可以填写“主题”来描述意图的目的。 对于这种情况,我们认为更少的意图很可能会带来更高的准确性,而低使用率将使其成为一种具有成本效益的选择。 通过护栏“规则”来“指导”分类的能力也是非常有益的。

还值得考虑的是,如果 API 在任意时间段内不可用,任何使用外部 LLM 作为意图分类“管理器”的聊天机器人都将遭受巨大损失。 在本文中,我们仅关注 OpenAI/GPT,但当然也可以使用其他 LLM,它们可能具有不同的可靠性因素,或者它们可能与我们测试过的那些不同,适合此任务。

我们还注意到,在所有测试的许多情况下,虽然意图被错误分类,但提出的意图却非常合理且合理。 例如,这些话语包含多种意图,或者它们在没有明确说明的情况下表明了特定的意图——这是人类(目前)更擅长的!


原文链接:LLM的意图识别能力 - BimAnt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/374066.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【软考设计师笔记】一篇文章带你了解数据库

【考证须知】IT行业高含金量的证书(传送门)💖 【软件设计师笔记】计算机系统基础知识考点(传送门) 💖 【软件设计师笔记】程序语言设计考点(传送门) 💖 【软件设计师笔记】操作系统考点(传送门)💖 【软件设计师笔记】什么是软…

SQL,HQL刷题,尚硅谷

目录 相关表数据: 题目及思路解析: 汇总分析 1、查询编号为“02”的课程的总成绩 2、查询参加考试的学生个数 分组 1、查询各科成绩最高和最低的分,以如下的形式显示:课程号,最高分,最低分 2、查询每门课程…

Python中的for循环用法详解,一文搞定它

文章目录 for循环1.for循环的基本语法(1)遍历不等长多级容器(2)遍历不等长多级容器(3)遍历等长的容器 2.变量的解包3.for...else【详细讲解】4.range对象5.总结6.打印 1 ~ 10 跳过57.打印菱形小星星 for循环…

多彩贵州人文山水展风采,微环境监测智能调控护古韵

一、人文山水时光峰峦——多彩贵州历史文化展 2月3日,贵州省博物馆向公众开放《人文山水时光峰峦——多彩贵州历史文化展》。6000平方米展厅里,从石器时期开始,通过六个篇章,用3503件文物的回忆链,系统化的向观众揭开…

Android9~Android13 某些容量SD卡被格式化为内部存储时容量显示错误问题的研究与解决方案

声明:原创文章,禁止转载! Android9~Android13 某些容量SD卡被格式化为内部存储时容量显示错误问题的研究与解决方案 分析Android11 系统对于EMMC/UFS作为内部存储、SD卡被格式化为内部存储、SD卡/U盘被格式化为便携式存储的不同处理 一.现象描述 实测Android9 Android10 A…

2024Node.js零基础教程(小白友好型),nodejs新手到高手,(五)NodeJS入门——http模块

044_http模块_创建HTTP服务端 hello,大家好,那这个小节我们来使用 nodejs 创建一个 http 的服务,有了这个 http 服务之后,我们就可以处理浏览器所发送过来的请求,并且还可以给这个浏览器返回响应。 顺便说一下&#x…

【傻瓜式教程】docker运行facechain

首选,为了防止后期docker满,Docker容器 - 启动报错:No space left on device,更换一下docker存储位置 1、停止Docker服务 首先停止Docker守护进程,可以使用以下命令: sudo systemctl stop docker 备份现有…

abap - 发送邮件,邮件正文带表格和excel附件

发送内容 的数据获取: 正文部分使用cl_document_bcs>create_document静态方法实现 传入参数为html内表结构 CLEAR lo_document .lo_document cl_document_bcs>create_document(i_type HTMi_text lt_htmli_length conlengthsi_subject lv_subje…

深入理解vqvae

深入理解vqvae TL; DR:通过 vector quantize 技术,训练一个离散的 codebook,实现了图片的离散表征。vqvae 可以实现图片的离散压缩和还原,在图片自回归生成、Stable Diffusion 中,有重要的应用。 从 AE 和 VAE 说起 …

如何在电脑上恢复查看iPhone短信?4个有效方法给你!

在当今科技发达的世界,能够在计算机上查看 iPhone 短信将彻底改变游戏规则。无论是存档珍贵的对话还是管理与工作相关的聊天,这都是一项至关重要的技能。在本指南中,我们将引导您了解如何在计算机上查看 iPhone 短信的四种高效方法。通过执行…

AI专题:AI应用落地的商业模式探索

今天分享的是AI 系列深度研究报告:《AI专题:AI应用落地的商业模式探索》。 (报告出品方:国金证券) 报告共计:27页 AI基座模型提供按量收费服务 以 ChatGPT 为代表的大模型能力涌现,为基座模型厂商带来增…

C++类和对象入门(三)

顾得泉:个人主页 个人专栏:《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂,年薪百万! 前言 在c中,类型分为两类,一类是内置类型,另一类是自定义类型。 1.内置类型&#xf…

作业:单身狗1

思路: 一:题目一开始就规定了这个数组的标准——只有一个数字出现一次,其他数字都是成对出现的,因此,重点就是如何排除成对的数,和保留单独的数 二:^的特点:相同为0,不…

docker自定义镜像并使用

写在前面 本文看下如何自定义镜像。 ik包从这里 下载。 1:自定义带有ik的es镜像 先看下目录结构: /opt/program/mychinese [rootlocalhost mychinese]# ll total 16 -rw-r--r-- 1 root root 1153 Feb 5 04:18 docker-compose.yaml -rw-rw-r-- 1 el…

Web课程学习笔记--CSS选择器的分类

CSS 选择器的分类 基本规则 通过 CSS 可以向文档中的一组元素类型应用某些规则 利用 CSS,可以创建易于修改和编辑的规则,且能很容易地将其应用到定义的所有文本元素 规则结构 每个规则都有两个基本部分:选择器和声明块;声明块由一…

06-Java适配器模式 ( Adapter Pattern )

原型模式 摘要实现范例 适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁 适配器模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能 举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内…

2、ChatGPT 在数据科学中的应用

ChatGPT 在数据科学中的应用 ChatGPT 可以成为数据科学家的绝佳工具。以下是我所了解到的关于它擅长的地方和不那么擅长的地方。 我从使用 ChatGPT 中学到了一个教训。它在数据科学中非常有帮助,但你必须仔细检查它输出的所有内容。它非常适合某些任务,并且可以非常快速准确…

Linux Rootkit实验|01 基于修改系统调用表的Hook

Linux Rootkit实验|01 基于修改系统调用表的Hook 文章目录 Linux Rootkit实验|01 基于修改系统调用表的Hook实验说明实验环境实验过程一 基于修改sys_call_table的系统调用挂钩1 寻找sys_call_table内存地址2 关掉写保护3 修改sys_call_table 二 基于系统…

告别mPDF迎来TCPDF和中文打印遇到的问题

mPDF是一个用PHP编写的开源PDF生成库。它最初由Claus Holler创建,于2004年发布。原来用开源软件打印中文没有问题,最近发现新的软件包中mPDF被TCPDF代替了,当然如果只用西文的PDF是没有发现问题,但要打印中文就有点抓瞎了如图1&am…

【python数据分析基础】—dataframe中index的相关操作(添加、修改index的列名、修改index索引值等)

文章目录 前言一、添加、修改index的列名二、修改index索引值 前言 本文主要讲dataframe结构中index的相关操作,index相当于是数据表的行。 一、添加、修改index的列名 新建一个dataframe表,我们可以自定义index的值,如下: imp…