当前位置: 首页 > news >正文

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

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 网站。

相关文章:

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

笔记整理:张沈昱,东南大学硕士,研究方向为自然语言处理 链接:https://github.com/FranxYao/FlanT5-CoT-Specialization 动机 本文的动机是探索如何在多步推理任务中通过大型语言模型提升较小的语言模型的性能。作者认为&#xff0…...

基于Java的新闻全文搜索引擎的设计与实现

中文摘要 本文以学术研究为目的,针对新闻行业迫切需求和全文搜索引擎技术的优越性,设计并实现了一个针对新闻领域的全文搜索引擎。该搜索引擎通过Scrapy网络爬虫工具获取新闻页面,将新闻内容存储在分布式存储系统HBase中,并利用倒…...

golang 自定义exporter - 端口连接数 portConnCount_exporter

需求: 1、计算当前6379 、3306 服务的连接数 2、可prometheus 语法查询 下面代码可直接使用: 注: 1、windows 与linux的区分 第38行代码 localAddr : fields[1] //windows为fields[1] , linux为fields[3] 2、如需求 增加/修改/删除…...

MoveTowards详解

MoveTowards详解(Unity中的方法) 介绍 MoveTowards是Unity引擎中的一个方法,用于在两个点之间进行平滑移动。它可以使游戏对象从当前位置移动到目标位置,通过在每一帧更新位置,实现平滑的移动效果。 方法 MoveTowa…...

Redis学习笔记Day01-Redis入门

声明:本博客部分内容是从终极SpringBoot讲义摘抄的,文字是OCR识别出来的,有可能存在识别错误的可能,如有错误,请大胆指正,我马上修改! 目录 0.官方参考手册API1.连接命令2.key相关命令3.String命…...

C++ Lambda表达式的完整介绍

一、Lambda表达式概述 c在c11标准中引入了lambda表达式,一般用于定义匿名函数,lambda表达式(也称为lambda函数)是在调用或作为函数参数传递的位置处定义匿名函数对象的便捷方法。通常,lambda用于封装传递给算法或异步…...

【等保测评】云计算Linux服务器(一)

【等保测评】云计算&Linux服务器(一) 前言1、身份鉴别实例1实例2实例3实例4 2、访问控制实例1实例2实例3实例4实例5实例6实例7 前言 Linux是指UNIX克隆或类UNIX风格的操作系统,在源代码级别兼容绝大部分UNIX标准(IEEE POSIX, System V, …...

[vue-element-admin]下载与安装

一、环境搭建 1 nodejs 源码地址 sudo apt install build-essential # 内含gcc g make等全家桶git clone git://github.com/nodejs/node.git # 下载源码 cd node sudo ./config sudo make && make install # 编译 node -v # 查看是否编译成功二、遇见的问题 问题…...

OPENCV C++(九)鼠标响应+dft+idft

鼠标响应回调函数(固定格式) void on_mouse(int EVENT, int x, int y, int flags, void* userdata) {Mat hh;hh *(Mat*)userdata;Point p(x, y);switch (EVENT){case EVENT_LBUTTONDOWN:{points.x x;points.y y;mousePoints.push_back(points);circle…...

python编程求出介于这两个数 之间的所有质数并打印输出。显示格式为“*数是质数

这里写自定义目录标题 练习 :提示用户输入两个正整数,编程求出介于这两个数之间的所有质数并打印输出。显示格式为“*数是质数。”代码打印效果 练习 :提示用户输入两个正整数,编程求出介于这两个数之间的所有质数并打印输出。显示…...

基于Selenium模块实现无界面模式 执行JS脚本

此篇文章主要介绍如何使用 Selenium 模块实现 无界面模式 & 执行JS脚本(把滚动条拉到底部),并以具体的示例进行展示。 1、Selenium 设置无界面模式 创建浏览器对象之前,创建 options 功能对象 :options webdriver.ChromeOptions() 添加…...

【LangChain学习】基于PDF文档构建问答知识库(二)创建项目

这里我们使用到 fastapi 作为项目的web框架,它是一个快速(高性能)的 web 框架,上手简单。 一.创建 FastAPI 项目 我们在IDE中,左侧选择 FastAPI ,右侧选择创建一个新的虚拟环境。 创建成功,会有…...

【Kubernetes】Kubernetes之kubectl详解

kubectl 一、陈述式资源管理1. 陈述式资源管理方法2. 基本信息查看3. 项目周期管理3.1 创建 kubectl create 命令3.2 发布 kubectl expose命令3.3 更新 kubectl set3.4 回滚 kubectl rollout3.5 删除 kubectl delete 4. kubectl 的发布策略4.1 蓝绿发布4.2 红黑发布4.3 灰度发布…...

【torch.nn.PixelShuffle】和 【torch.nn.UnpixelShuffle】

文章目录 torch.nn.PixelShuffle直观解释官方文档 torch.nn.PixelUnshuffle直观解释官方文档 torch.nn.PixelShuffle 直观解释 PixelShuffle是一种上采样方法,它将形状为 ( ∗ , C r 2 , H , W ) (∗, C\times r^2, H, W) (∗,Cr2,H,W)的张量重新排列转换为形状为…...

Rocky9 KVM网桥的配置

KVM的默认网络模式为NAT,借助宿主机模式上网,现在我们来改成桥接模式,这样外界就可以直接和宿主机里的虚拟机通讯了。 Bridge方式即虚拟网桥的网络连接方式,是客户机和子网里面的机器能够互相通信。可以使虚拟机成为网络中具有独立IP的主机。 桥接网络(也叫物理设备共享…...

爬虫013_函数的定义_调用_参数_返回值_局部变量_全局变量---python工作笔记032

然后再来看函数,可以避免重复代码 可以看到定义函数以及调用函数...

将.doc文档的默认打开方式从WPS修改为word office打开方式的具体方法(以win 10 操作系统为例)

将.doc文档的默认打开方式从WPS修改为word office打开方式的具体方法(以win 10 操作系统为例) 随着近几年WPS软件的不断完善和丰富,在某些方面取得了具有特色的优势。在平时编辑.doc文档时候也常常用到wps软件,不过WPS文献也存在…...

如何搭建个人的GPT网页服务

写在前面 在创建个人的 GPT网页之前,我登录了 Git 并尝试了一些开源项目,但是没有找到满足我个性化需求的设计。虽然许多收费的 GPT网页提供了一些免费额度,足够我使用,但是公司的安全策略会屏蔽这些网页。因此,我决定…...

[QCM6125][Android13] 默认关闭SELinux权限

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: QCM6125 版本: Android 13 kernel: msm-4.14 问题描述 正常智能硬件设备源码开发,到手的第一件事就是默认关闭SELinux权限,这样能够更加方便于调试功能。 解决方法 --- a/QSSI.1…...

【jvm】jvm发展历程

目录 一、Sun Classic VM二、Exact VM三、HotSpot VM四、JRockit五、J9六、KVM、CDC、CLDC七、Azul VM八、Liquid VM九、Apache Harmony十、Microsoft JVM十一、Taobao JVM十二、Dalvik VM 一、Sun Classic VM 1.1996年java1.0版本,sun公司发布了sun classic vm虚拟…...

大话软工笔记—需求分析概述

需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7

在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅!

【把数组变成一棵树】有序数组秒变平衡BST,原来可以这么优雅! 🌱 前言:一棵树的浪漫,从数组开始说起 程序员的世界里,数组是最常见的基本结构之一,几乎每种语言、每种算法都少不了它。可你有没有想过,一组看似“线性排列”的有序数组,竟然可以**“长”成一棵平衡的二…...

怎么开发一个网络协议模块(C语言框架)之(六) ——通用对象池总结(核心)

+---------------------------+ | operEntryTbl[] | ← 操作对象池 (对象数组) +---------------------------+ | 0 | 1 | 2 | ... | N-1 | +---------------------------+↓ 初始化时全部加入 +------------------------+ +-------------------------+ | …...

TJCTF 2025

还以为是天津的。这个比较容易,虽然绕了点弯,可还是把CP AK了,不过我会的别人也会,还是没啥名次。记录一下吧。 Crypto bacon-bits with open(flag.txt) as f: flag f.read().strip() with open(text.txt) as t: text t.read…...