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

笔记整理:张沈昱,东南大学硕士,研究方向为自然语言处理
链接: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散度(在本文中为模型自回归解码过程中每步的输出分布)。

图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 总体实验结果

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

点击阅读原文,进入 OpenKG 网站。
相关文章:
论文浅尝 | 面向多步推理任务专业化较小语言模型
笔记整理:张沈昱,东南大学硕士,研究方向为自然语言处理 链接:https://github.com/FranxYao/FlanT5-CoT-Specialization 动机 本文的动机是探索如何在多步推理任务中通过大型语言模型提升较小的语言模型的性能。作者认为࿰…...
基于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虚拟…...
《Playwright:微软的自动化测试工具详解》
Playwright 简介:声明内容来自网络,将内容拼接整理出来的文档 Playwright 是微软开发的自动化测试工具,支持 Chrome、Firefox、Safari 等主流浏览器,提供多语言 API(Python、JavaScript、Java、.NET)。它的特点包括&a…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
Mobile ALOHA全身模仿学习
一、题目 Mobile ALOHA:通过低成本全身远程操作学习双手移动操作 传统模仿学习(Imitation Learning)缺点:聚焦与桌面操作,缺乏通用任务所需的移动性和灵活性 本论文优点:(1)在ALOHA…...
七、数据库的完整性
七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...
使用LangGraph和LangSmith构建多智能体人工智能系统
现在,通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战,比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...
自然语言处理——文本分类
文本分类 传统机器学习方法文本表示向量空间模型 特征选择文档频率互信息信息增益(IG) 分类器设计贝叶斯理论:线性判别函数 文本分类性能评估P-R曲线ROC曲线 将文本文档或句子分类为预定义的类或类别, 有单标签多类别文本分类和多…...
