论文浅尝 | 面向多步推理任务专业化较小语言模型

news2024/11/23 0:11:51

ee6c7f3b31c1e2d2eddfe6212eb1885e.png

笔记整理:张沈昱,东南大学硕士,研究方向为自然语言处理

链接:https://github.com/FranxYao/FlanT5-CoT-Specialization

动机

本文的动机是探索如何在多步推理任务中通过大型语言模型提升较小的语言模型的性能。作者认为,大型语言模型模型(如GPT-3.5系列模型)虽然具有强大的建模能力,但是它们通常需要大量的计算资源和时间来训练和部署。相比之下,小规模语言模型虽然容量有限,但它们可以更快地训练和部署,并且在某些任务上有更优异的表现。因此,作者希望通过专业化较小的语言模型来解决多步推理任务,以获得更好的性能。作者提出了一种从大型教师模型中提取思维链(Chain-of-Thought, CoT)路径来微调指令微调模型(Instruction-Tuned Model,本文使用Flan-T5),以将其能力集中在目标任务上的方法。通过这种做法,作者证明了小型语言模型可以在多步推理任务中获得不错的性能提升,且这种性能提升随着模型体量的提升稳定增长。

贡献

本文的主要贡献包括:

1)提出了一种专业化较小语言模型的方法,将其能力集中在目标任务上,从而获得更好的性能和更快的训练和部署速度。

2)通过从大型教师模型中提取思维链路径,并用其来微调指令微调模型,在多步推理任务中,小型语言模型可以获得不错的性能提升,并且可以在特定任务上表现出与大型语言模型相当的性能。

3)通过实验证明随着模型规模的增大,小型语言模型可以呈现出稳定的性能提升。

4)通过实验证明使用指令微调的模型(Flan-T5)作为基础模型比使用原始的预训练模型(T5)具有更好的泛化性能。

方法

给定一个训练问题,作者使用code-davinci-002(Codex)来生成40个针对该问题的CoT解决方案,然后选择其中正确解答了问题的回答作为训练语料。解决方案包括答案和解释答案的中间步骤的思维链。除了将问题作为输入并将[CoT, answer]对作为输出的标准微调设置(图1 B4)外,作者还考虑了三种额外的数据格式:1) in-context answer-only(图1 B1),不使用CoT数据,并在问题前添加4个in-context样本,采用这种设置的原因是先前的工作表明用in-context样本进行微调可以提高模型的上下文学习能力;2)in-context chain-of-thought(图1 B2),在输入和输出中都添加了CoT;3)zero-shot and answer-only(图1 B3),直接输入问题并输出答案,使用仅包含答案的数据是因为以前的工作表明它们能提高模型性能。在本文实验中,作者表明,in-context样本能引发模型zero-shot的能力,而zero-shot的数据则会牺牲模型上下文学习的能力。

就训练目标而言,本文采用了基于分布匹配的蒸馏方法,即最小化学生模型与老师模型输出的概率分布之间的KL散度(在本文中为模型自回归解码过程中每步的输出分布)。

18e48036ae63af40be7f02b21ba1d9e6.png

图1 A. 专业模型的总体流程 B. 本文所使用的4种数据格式

实验

本文针对模型的数学推理能力和通用能力进行了实验。对于数学推理能力,作者使用code-davinci-002增强的GSM8K数据集作为训练数据集。GSM8K有7个训练问题,对于每个问题,作者要求大型模型生成40个不同的解决方案,从生成的解决方案中提取正确的解决方案,共计获得了有13万条训练数据。作者在MultiArith、ASDiv和SVAMP(合称M-A-S)数据集上测试了模型的分布外性能。M-A-S和GSM8K的区别在于它们都是小学水平的算术推理问题,但是数据集中涉及的实体是不同的。例如,GSM8K可以考虑对食物进行算术推理(例如,5个苹果+8个香蕉=13个水果),而MultiArith可以考虑动物(例如,2只狗+3只猫=5只动物)。这种类型的分布外泛化通常被称为词法级组合泛化(即两者都是加法,但词法不同)。对于通用能力,作者使用BigBench Hard(BBH)测试套件,这是一个由26个具有挑战性的数据集组成的列表,从多个维度测试模型的推理能力(例如日期理解、因果判断、参考游戏等)。由于其难度和广泛的覆盖面,BBH是测试模型通用能力的理想基准。

对于基线模型,作者考虑了通用的大型模型和蒸馏过的小型模型,具体包括:1) 通用的大型模型,根据模型规模排序为:code-davinci-002,LaMDA 137B和PaLM 60B(两者都是强大的CoT推理的通用模型),UL2(一个具有良好CoT能力的20B模型);2)同期的知识蒸馏模型。实验表明,本文模型表现明显优于其他对比方法,主要是因为本文使用了经过指令微调的Flan-T5作为基础模型,而不是原始预训练模型(T5),实验结果如表1。

表1 总体实验结果

bf7e06144bcf9c6b36f662496cff47c0.png

总结

在这项工作中,作者研究了利用思维链提示学习使较小的语言模型在多步骤推理任务上专业化。实验表明,本文方法能将小模型的能力从通用方向集中到目标数学推理任务。在进行专业化之后,模型性能随着模型规模的增加而平滑增加。同时,本文实验显示了使用指令微调过的模型作为基础模型的重要性,因为它们的泛化性能比原始预训练过的检查点更好。在模型专业化过程中需要做出多种权衡,包括模型泛化性能的损失,分布内和分布外泛化的平衡,以及上下文学习和zero-shot泛化能力的平衡。本文方法是在当下基于大模型的新研究范式中,专业化小模型的重要尝试。


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

fbad9655474ac2b2abacf36afb4a4d5c.png

点击阅读原文,进入 OpenKG 网站。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hive 字段注释乱码

hive 字段注释乱码: 在mysql中运行: alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;OK

Nginx与docker配置安装

目录: Nginx的安装配置: 1、安装依赖包: 2、下载Nginx安装包: 3、解压Nginx压缩包: 4、配置Nginx编译环境: 5、编译并安装Nginx: 6、安装完Nginx后,可以切换到Nginx的安装目录…

对任意类型数都可以排序的函数:qsort函数

之前我们学习过冒泡排序&#xff1a; int main() {int arr[] { 9,7,8,6,5,4,3,2,1,0 };int sz sizeof(arr)/sizeof(arr[0]);int i 0;for (i 0; i < sz-1; i) {int j 0;for (j 0; j < sz-1-i; j) {if (arr[j] > arr[j 1]){int temp 0;temp arr[j];arr[j] ar…

中间件多版本冲突的4种解决方案和我们的选择

背景 在小小的公司里面&#xff0c;挖呀挖呀挖。最近又挖到坑里去了。一个稳定运行多年的应用&#xff0c;需要在里面支持多个版本的中间件客户端&#xff1b;而多个版本的客户端在一个应用里运行时会有同名类冲突的矛盾。在经过询问chatGPT&#xff0c;百度&#xff0c;googl…

深度补全算法-CompletionFormer-已开源效果最好

《CompletionFormer: Depth Completion with Convolutions and Vision Transformers 》 摘要 给定稀疏深度和相应的 RGB 图像&#xff0c;深度补全旨在整个图像中空间传播稀疏测量值&#xff0c;以获得密集的深度预测。尽管基于深度学习的深度补全方法取得了巨大进步&#xff0…

NAND Flash 失效之 Data Rentention | 闪存数据保持力 | 数据放几年就坏掉了?

依公知及经验整理,原创保护,禁止转载。专栏 《深入理解Flash:闪存特性与实践》 图1: Data Retention 对 Vt 电压分布影响 图片来源: 知乎 [2] 全文 1900 字, 内容摘要 Data Retention 产生 Data Retention 的影响因素  如何规避 Data Rention 问题 发生Data Retent…

Vue + VSCode + 浏览器显示乱码

浏览器乱码&#xff1a; 将GBK改为UTF-8: 欧克:

领航优配:沪指震荡涨0.47%,保险、券商板块强势,互联金融概念活跃

4日早盘&#xff0c;两市股指高开高走&#xff0c;沪指一度涨逾1%打破3300点&#xff0c;随后涨幅有所收窄&#xff1b;两市半日成交超6000亿元&#xff0c;北向资金小幅净流入。 截至午间收盘&#xff0c;沪指涨0.47%报3295.91点&#xff0c;深成指涨0.67%&#xff0c;创业板指…

CrossOver是什么软件 CrossOver软件好用吗

CrossOver是一款由CodeWeavers公司开发的软件&#xff0c;它可以在Mac和Linux等操作系统上运行Windows软件&#xff0c;而无需在计算机上安装Windows操作系统。这款软件的核心技术是Wine&#xff0c;它是一种在Linux和macOS等操作系统上运行Windows应用程序的开源软件。本文将会…

github pages 用法详解 发布自己的网站

github pages 基础用法 URL 规则 假设你的 github 帐号为 mygithub&#xff0c;需要发布的仓库名为 myrepo&#xff0c;那么 pages 的 URL 为&#xff1a; https://mygithub.github.io/myrepo 添加内容 用任意编辑器写好&#xff08;或者生成&#xff09;标准的网页内容&a…

【QT调用ST-link-使用QT编写程序-调用ST-LINK_CLI.exe-烧写STM32F4xxx-基础样例】

【QT结合ST-link&#xff0c;使用QT编写程序&#xff0c;调用ST-LINK_CLI.exe,烧写STM32F4xxx-基础样例】 1、前言2、实验环境3、先前了解-自我总结4、实验过程&#xff08;0&#xff09;硬件连接与供电&#xff08;1&#xff09;安装&使用STM32 ST-LINK Utility&#xff0…

骑士牛(BFS)

题面 john用他的一头母牛和Don先生交换了一头“骑士牛”。这头牛有一个独特的能力——在牧场中能像中国象棋中的马一样跑跳&#xff08;会中国象棋吗&#xff1f;不会&#xff1f;注意&#xff1a;本题不考虑马被“蹩脚”的情况&#xff09;。 当然&#xff0c;这头牛不能跳到岩…

Flutter:文件读取—— video_player、chewie、image_picker、file_picker

前言 简单学习一下几个比较好用的文件读取库 video_player 简介 用于视频播放 官方文档 https://pub-web.flutter-io.cn/packages/video_player 安装 flutter pub add video_player加载网络视频 class _MyHomePageState extends State<MyHomePage> {// 控制器late…

uniapp 将标题背景更换背景图片 完美解决(附加源码+实现效果图)

问题描述 今天拿到小程序的设计效果图后&#xff0c;标题部分背景需要加背景图片&#xff0c;以往我做的都是标题背景更换颜色等&#xff0c;加背景图片还是第一次遇到&#xff0c;大家可以先看下我的效果图是否与你遇到的问题一致&#xff01; 首页标题的背景是个背景图片。 …

MachineLearningWu_13/P60-P64_Tensorflow

P60-P64的学习目录如下&#xff0c; x.1 TF网络模型实现 以一个简单的TF的分类网络为例&#xff0c;将模型翻译成框架下的语义&#xff0c;即如右侧所表达的。 当然上面对于分类网络的解释是一个简洁的解释&#xff0c;我们来进行更加具象的了解一下。左边是机器学习的三步骤&…

RS485实验

RS485实验 介绍 RS485采用差分信号进行传输&#xff0c;半双工通信。RS485是一个总线&#xff0c;在同一总线上最多可以挂接32个节点。通信流程简单理解为默认为接收状态&#xff0c;发送数据时切换为发送状态&#xff0c;数据发送完毕后切换为接收状态。发送和接收分别由一个…

01_什么是ansible、基本架构、ansible工作机制、Ansible安装、配置主机清单、设置SSH无密码登录等

1.什么是ansible 1.1.基本介绍 1.2.基本架构 1.3.基本特征 1.4.优点 1.5.ansible工作机制 2.Ansible安装 2.1.机器准备 2.2.安装ansible 2.2.1.安装epel源 2.2.2.安装ansible 2.2.3.查看ansible版本 2.2.4.树状结构展示文件夹 2.2.4.1.其中ansible.cfg的内容如下 2.2.4.2.host的…

SQL 相关子查询 和 不相关子查询、Exists 、Not Exists、 多表连接(包含自连接)

不相关子查询 子查询的查询条件不依赖于父查询&#xff0c;称不相关子查询。子查询可以单独运行的 select stu_id,sex,age from student t where sex(select sexfrom studentwhere stu_id10023 )相关子查询 关联子查询 子查询的查询条件依赖于父查询&#xff0c;称为 相关子…

C++笔记之两个类的实例之间传递参数——通过构造函数传递类对象的方法详细探究

C笔记之两个类的实例之间传递参数——通过构造函数传递类对象的方法详细探究 code review! 文章目录 C笔记之两个类的实例之间传递参数——通过构造函数传递类对象的方法详细探究1.传递对象的const引用——ClassB的实例只能访问ClassA的实例&#xff0c;但不会修改ClassA的实…

Python小白学习:超级详细的字典介绍(字典的定义、存储、修改、遍历元素和嵌套)

目录 一、字典简介1.1 创建字典1.2 访问字典中的值1.3 添加键值对1.4 修改字典中的值实例 1.5 删除键值对1.6 由多个类似对象组成的字典1.7 使用get()访问值1.8 练习题 二、遍历字典2.1 遍历所有键值对实例 2.2 遍历字典中的所有键2.3 按照特定顺序遍历字典中的所有键2.4 遍历字…