前沿重器[37] | 大模型对任务型对话的作用研究
前沿重器
栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经是20年的事了!)
2023年文章合集发布了!在这里:又添十万字-CS的陋室2023年文章合集来袭
往期回顾
- 前沿重器[32] | 域外意图检测——解决“没见过”的问题 
- 前沿重器[33] | 试了试简单的prompt 
- 前沿重器[34] | Prompt设计——LLMs落地的版本答案 
- 前沿重器[35] | 提示工程和提示构造技巧 
- 前沿重器[36] | ACL23-基于检索的大语言模型-报告阅读 
大模型的多轮,我们一般想到的方案都是比较大胆地把历史记录都交给大模型让大模型来做生成,这个在比较自由、开放的聊天中,肯定是有效的,但是在实际场景中,我们往往希望模型能够在一定程度控制对话的流程,我是在找类似的文章的。
这篇文章应该是我最近找的比较贴切的一篇了,所以做了精读,任务型对话是各种多轮对话里最要求主动控制对话流程的一类,因此这篇文章里面的研究应该对我想研究的部分应该也有不少用的。
论文:
- Are Large Language Models All You Need for Task-Oriented Dialogue? 
- https://arxiv.org/abs/2304.06556 
懒人目录:
- 关键贡献。 
- 流程任务架构。 
- 方案细节。 
- 实验解析和分析 
- 文章结论。 
- 个人思考。 
关键贡献
文章验证了大模型在任务型对话中多个模块中起到的作用,主要有如下结果:
- 建立了一套基于大模型的任务型对话pipline。 
- 大模型在状态跟踪(DST,dialogue state tracking)上的效果并不好。 
- 但给定对话状态,大模型的生成却具有更好的效果。 
- 在few-shot、zero-shot等场景,大模型具有很高的利用价值。 
流程任务架构
首先先来看看作者设计的整个流程架构:

在这个架构中,模块分成了4个,分别是上下文表征、prompt构造、大模型对话状态跟踪、大模型生成这4个模块,而对于任务型对话,比较关键的应该是对话状态跟踪和生成这两个模块,即解决“目前聊到什么程度”和“应该说什么”的问题,相比单轮的对话,多轮更多就是考虑这两个问题了。
另外值得注意的是,作者重点强调了,此处是不做模型微调的,因为要考验的是模型的开箱即用能力。事实也确实需要如此,在很多场景下,我们没有条件去微调模型,无论是数据、机器还是别的问题,因此我自己也挺认可作者在这块的尝试,需要分析清楚,大模型在什么方面的能力较强,适合做什么任务,了解其边界。

此后,作者又给出了更为详细的流程:
- 首先,会编码一批训练数据,这些数据是用于进行few-shot的样本。 
- 意图/领域识别,并根据识别结果构造原始的prompt。 
- 用大模型推理出对话状态,并检索出数据库信息和另外的prompt。 
- 利用大模型再做出最终的回复话术。 
有了整个架构,我们能很轻松地对论文提出的大体框架有一个了解,剩下就是每一部分的具体细节了。
方案细节
在整个流程中,其实有3次大模型的调用,即领域意图识别、对话状态跟踪以及回复话术生成3个部分,因为模型是不能微调的,所以整个流程里,我们能做的只有构造出良好的prompt来引导模型输出更好的结果,而为了更好地体现大模型的泛用性,所以在prompt构造时,也只是用简单快速的结果。
在任务型对话中,首先是需要进行query理解的,在这里作者叫做“领域识别”,领域识别是为了识别目前用户所说的话是什么状态的,只有识别出来领域,才能明确目前的对话状态以及下一步可以采取的对话策略。而做“领域识别”的方法,是通过构造合适的prompt,来让模型来了解具体的领域,这里作者在附录里给出了一个例子,我们重点关注的是,作者使用了哪些特征和例子,以及提示的话术技巧。

然后是对话状态跟踪,结合领域识别的结果,总结出目前的对话状态,为后续的文本生成服务,这里也提供一个例子,里面会包含任务定义、领域描述、对话历史和用户画像等信息,最终返回的是需要更新的对话状态部分。

至于最后的结果生成,则是结合前面的内容,去生成返回给用户的回复,值得注意的是,待生成的内容并不是完整的,而是会在一些位置挖槽或者占位符的模板,然后用额外的信息进行填补,直接看例子吧,关注绿色那块。

实验解析和分析
实验的设置里,多半是讲了使用的大模型以及数据集,还有评价指标(这里有自动化指标也有人工评价指标),这里就不赘述了,更多是结论和规律的挖掘。
首先是在领域识别这一块,主要有如下结论:
- 不同的模型对领域识别的效果差异是比较大的,这块有调整和选择的空间。 
- 有时候我们会以我们的理解为模型提供一些额外的信息,但不一定每次加入额外信息都会带来提升,还可能会带来伤害。 
然后是对话状态跟踪的部分,此处作者使用了有监督模型和大模型的预测进行对比。
- 有监督模型的效果比大模型要好不少。 
- 哪怕使用了few-shot之类的in context learning的方式,仍旧有比较大的差距。 
- chatgpt的效果比别的大模型有比较大的优势。 
而从整个对话的角度来看,看对话成功的指标,有如下结论:
- 有监督模型仍然具有较大优势。 
- 添加few-shot,会有一定收益,但是这个数量好像对结果影响不大。 
- 增加对话轮数的输入,对结果的收益明显。 
文章结论
首先来看看作者对LLM在任务型对话实验中的一些结论吧:
- 状态跟踪模块,大模型的表现并不好,需要依赖更多的调整以及更强的结果解析,才能够优化。 
- 而在足够好的状态跟踪下,大模型在最终的结果生成下,能表现得很好,即使没做微调。 
- 如果能用到更强的大模型,该效果的上限会有明显提升。 
个人思考
文章的这些实验其实给了不少的启示,虽然只是局限的任务型,但是现在很多多轮对话场景,其实都是任务型的复杂版罢了,毕竟很多时候是要对对话策略和流程进行理解和控制的,这些启示也能为实际使用提供宝贵的经验参考,我的想法是下面5点。
第一在系统方案设计上,首先思考的是,在系统层面,我们并不需要拘束大模型的调用次数,实际上是可以调用多次的,让他分步逐步完成一系列任务,例如本文的设计就让模型调用了3次,每次之间我们可以通过调用数据库之类的手段灵活操控后续的步骤,通过逐步引导,最终能够让大模型完成任务。
第二是对任务方案的选型,即每个步骤中的方案选择中,我们一定程度明确了大模型的优势和劣势。在缺少微调的条件下,few-shot和zero-shot配合prompt下,大模型对于一些偏传统NLP的任务,例如分类等,能有一个还行的效果,相比需要训练的小模型,在此场景下,大模型有一定的优势。然而尽管如此,但是如果能足够的数据微调,小模型还是能更容易有更好的结果。
第三,还是大模型的优势,主要是生成,即最终返回给用户的response部分,因此在系统中,我们可以比较放心地把生成的任务交给他,前提是,prompt中要有足够明确的引导,在提供足够的信息支撑下,模型基本都能够给出适合场景、信息完善的回复,这方面是值得信任的。
第四是强调,prompt的重要性,正如文章所言。作者在文中有强调两个点,模型不微调以及prompt的精调是可能存在收益的,只是在实验过程出于严谨和泛用性而没有做,侧面其实就强调了这块的调优空间是非常大的,我们在日常的工作中可以提供比较多的精力在这块,有一定的性价比。至于prompt的调优技巧,和日常模型学习类似,还是看论文和看案例,看看大家经常提到的方案和技巧,需要具有什么信息等。
第五是基于一二三这三点导出的,即一个多轮对话系统可能的一个理想形态,大模型可能是一个关键模块,但并不唯一,更多的可能可以考虑把他放在最后一步,即回复生成这方面,而上游的query理解、对话策略,可能用早先已有的一些方案,例如分类模型、数据库与规则等,可以有效对句子进行解析和理解,并且对对话策略实现了有效控制。不要把大模型仅用在最后一步当做是很low的事,其实这一步也是非常关键的,因为早先的多轮对话,一直会苦恼于最终文本怎么生成,一般的方案就只是人工编辑、历史对话挖掘和有监督的文本生成,这3个方案都对数据有很强的依赖性,大模型已经则极大地解决了这个问题。

相关文章:
 
前沿重器[37] | 大模型对任务型对话的作用研究
前沿重器 栏目主要给大家分享各种大厂、顶会的论文和分享,从中抽取关键精华的部分和大家分享,和大家一起把握前沿技术。具体介绍:仓颉专项:飞机大炮我都会,利器心法我还有。(算起来,专项启动已经…...
 
第三章:boundary-value analysis
文章目录 Boundary-value Analysiscomputational faults 计算错误boundary shift 边界偏移boundary value analysis 的优势Path condition, domain, and domain boundary (路径条件、域和域边界)Open and closed boundaries (闭合边界 / 开放边界)on / off pointGuidelinestr…...
 
Python模块psutil:系统进程管理与Selenium效率提升的完美结合
前言 在前面编写一个Selenium的自动化程序时候,发现一个问题。 因笔记本配置较为差,所以每次初始化Selenium的WebDriver都会非常慢,整个等待过程是不友好的。 所以我就想到: 在程序中初始化一个全局的WebDriver对象,…...
 
glibc 里的线程 id
这里讲的是通过 pthread_create() 函数返回的线程 id,其实就是 glibc 库里维护的线程id,它跟内核维护的线程 id 不一样,pthread_create() 返回的线程 id 并不一定是唯一的。我们看 pthread_create 函数的源码,它最后返回的线程 id…...
 
nacos的部署与配置中心
文章目录 一、nacos部署安装的方式单机模式:集群模式:多集群模式: 二、安装的步骤1、预备环境准备2、载安装包以及安装2.1、Nacos有以下两种安装方式:2.2、更换数据源数据源切换为MySQL 2.3、开启控制台授权登录(可选) 3、配置中心的使用3.1、创建配置信…...
undefined 与 undeclared 的区别?
在 JavaScript 中,undefined 和 undeclared 是两个不同的概念,表示不同的情况: 1:undefined: undefined 是一个特殊的值,表示一个变量已经被声明,但尚未被赋予一个值。当一个变量被声明但未进…...
 
Leetcode周赛370补题(3 / 3)
目录 1、找到冠军 Ⅰ- 暴力 2、找到冠军 Ⅱ - 寻找入度为0的点 3、在树上执行操作以后得到的最大分数 - dfs树 逆向思考 1、找到冠军 Ⅰ- 暴力 100115. 找到冠军 I class Solution {public int findChampion(int[][] g) {int ng.length;for(int i0;i<n;i){int cnt0;for…...
 
PyTorch深度学习实战——图像着色
PyTorch深度学习实战——图像着色 0. 前言1. 模型与数据集分析1.1 数据集介绍1.2 模型策略 2. 实现图像着色相关链接 0. 前言 图像着色指的是将黑白或灰度图像转换为彩色图像的过程,传统的图像处理技术通常基于直方图匹配和颜色传递的方法或基于用户交互的方法等完…...
 
InfiniBand 的前世今生
今年,以 ChatGPT 为代表的 AI 大模型强势崛起,而 ChatGPT 所使用的网络,正是 InfiniBand,这也让 InfiniBand 大火了起来。那么,到底什么是 InfiniBand 呢?下面,我们就来带你深入了解 InfiniBand…...
 
分享一下微信小程序里怎么添加社区团购功能
随着互联网的快速发展,线上购物已经成为我们日常生活的一部分。而在这个数字化时代,微信小程序作为一种便捷的电商渠道,正逐渐成为新的趋势。其中,社区团购功能更是受到广大用户的热烈欢迎。本文将探讨如何在微信小程序中添加社区…...
软考高项-IT部分
信息化体系 信息化技术应用:龙头 信息资源:核心任务 信息网络:应用基础 信息技术和产业:建设基础 信息化人才:成功之本 信息化法规:保障 信息化趋势 产业信息化、产品信息化、社会生活信息化、国民经济信息化 新型基础设施建设 2018年召开的中央经济工作会议,首…...
 
hugetlb核心组件
1 概述 hugetlb机制是一种使用大页的方法,与THP(transparent huge page)是两种完全不同的机制,它需要: 管理员通过系统接口reserve一定量的大页,用户通过hugetlbfs申请使用大页, 核心组件如下图: 围绕着…...
 
vscode配置环境变量
首先点击下面这个链接。 sMinGW-w64 - for 32 and 64 bit Windows - Browse Files at SourceForge.net 然后选择Files这个选项 向下移选择下载这个文件 解压完成之后,找到这个文件的bin目录复制路径后,添加到环境变量中 依次点击后打开cmd࿰…...
react:封装组件
封装 /components/Pagination.tsx import React from react import { Pagination } from antdconst PaginationWarp ({ total, paramsInfo, setParamsInfo }) > {return (<Paginationtotal{total}current{paramsInfo.page}showSizeChangershowQuickJumperdefaultPageSi…...
 
基于深度学习的视频多目标跟踪实现 计算机竞赛
文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于深度学习的视频多目标跟踪实现 …...
 
linux中各种最新网卡2.5G网卡驱动,不同型号的网卡需要不同的驱动,整合各种网卡驱动,包括有线网卡、无线网卡、Wi-Fi热点
linux中各种最新网卡2.5G网卡驱动,不同型号的网卡需要不同的驱动,整合各种网卡驱动,包括有线网卡、无线网卡、自动安装Wi-Fi热点。 最近在做路由器二次开发,现在市面上卖的新设备,大多数都采用了2.5G网卡,…...
asp.net上传文件
第一种方法 前端: <div> 单文件上传 <form enctype"multipart/form-data" method"post" action"upload.aspx"> <input type"file" name"files" /> …...
 
JavaEE平台技术——预备知识(Web、Sevlet、Tomcat)
JavaEE平台技术——预备知识(Web、Sevlet、Tomcat) 1. Web基础知识2. Servlet3. Tomcat并发原理 1. Web基础知识 🆒🆒上个CSDN我们讲的是JavaEE的这个渊源,实际上讲了两个小时的历史课,给大家梳理了一下&a…...
基础课23——设计客服机器人
根据调查数据显示,使用纯机器人完全替代客服的情况并不常见,人机结合模式的使用更为普遍。在这两种模式中,不满意用户的占比都非常低,不到1%。然而,在满意用户方面,人机结合模式的用户满意度明显高于其他模…...
 
mybatis在springboot当中的使用
1.当使用Mybatis实现数据访问时,主要: - 编写数据访问的抽象方法 - 配置抽象方法对应的SQL语句 关于抽象方法: - 必须定义在某个接口中,这样的接口通常使用Mapper作为名称的后缀,例如AdminMapper - Mybatis框架底…...
 
C++实现分布式网络通信框架RPC(3)--rpc调用端
目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
 
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
 
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
 
mac:大模型系列测试
0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...
基于鸿蒙(HarmonyOS5)的打车小程序
1. 开发环境准备 安装DevEco Studio (鸿蒙官方IDE)配置HarmonyOS SDK申请开发者账号和必要的API密钥 2. 项目结构设计 ├── entry │ ├── src │ │ ├── main │ │ │ ├── ets │ │ │ │ ├── pages │ │ │ │ │ ├── H…...
2025年低延迟业务DDoS防护全攻略:高可用架构与实战方案
一、延迟敏感行业面临的DDoS攻击新挑战 2025年,金融交易、实时竞技游戏、工业物联网等低延迟业务成为DDoS攻击的首要目标。攻击呈现三大特征: AI驱动的自适应攻击:攻击流量模拟真实用户行为,差异率低至0.5%,传统规则引…...
