[阅读笔记16][Orca-2]Teaching Small Language Models How to Reason

2024-04-21 06:12

本文主要是介绍[阅读笔记16][Orca-2]Teaching Small Language Models How to Reason,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

接下来是Orca-2,这篇是微软在23年11月发表的论文,在Orca-1的基础上又进行了一些改进。

作者希望教会Orca-2各种推理策略,例如逐步思考、回忆然后回答、先回忆再推理再回答、直接生成回答等等策略。并且Orca-2应该能针对不同任务应该使用最合适的推理策略。
下图是Orca-2在各种benchmark上的表现,包括语言理解、常识推理、多步推理、数据问题等,可以看到Orca-2超过了所有同等规模的模型,并且接近(有时超过)了比它大5-10倍的模型。这里所有模型都是以LLaMA-2为基座模型训练得到的,排除了不同基座模型带来的性能差异。这里和Orca-1论文中不同,没比较ChatGPT是因为基座模型不同,没法体现出这篇论文训练方法所带来的优越性。

作者在这里探讨了一下不同的系统消息(推理策略)对推理结果带来的巨大影响,即使是GPT-4这样强大的模型也会受不同系统消息影响产生截然不同的推理结果。下面右图展示了这个现象,对GPT-4四次提问,第一次不添加系统消息,得到的答案是错误的。第二次使用类似思维链的系统消息,结果稍微好了一点,但也是错误的。第三次使用“解释你的答案”的系统消息,解释的过程是对的,但是答案是错的。第四次使用左边图中的系统消息,得到了正确的答案和推理过程。

所以针对不同的任务应该使用不同的系统消息(推理策略),这也是作者希望Orca-2做到的,能根据手头的问题选择最有效的解决策略。具体过程分为四步,第一步是先准备好一系列多样的任务。第二步是根据Orca-1的表现,决定每个任务需要哪种推理策略。第三步是根据推理策略写下系统消息,然后输入给教师模型获得回答,这样就得到了训练数据,训练数据的格式是个三元组(system instruction, user prompt, LLM answer)。第四步是prompt擦除,这是比较关键的一步,在训练时将特定任务相关的system instruction替换为与任务无关的通用system instruction,例如下图这样的instruction。这样学生模型只能看到问题和详细的回答,鼓励学生自己学习如何运用推理策略生成谨慎且有逻辑的回答,以及针对特定任务如何选择最优的推理策略。

训练用的数据集分为三部分,包括FLAN-v2的训练集、Orca-1收集的600万条数据、Orca-2新增的81万条数据。
其中Orca-2新增的数据又来自四个部分,第一部分是从FLAN-v2四个子集中1913个任务筛选出1448个高质量任务,从这些高质量任务的训练集中选择了60万个zero-shot问题,然后用这些问题输入LLM合成回答。之后这些数据再经过prompt擦除就可以了。第二部分是包含5万条数据的few-shot数据,将Orca-1数据集转为四元组(task, system instruction, user prompt, answer),然后针对同一个(task, system instruction)随机抽取3-5条(user prompt, answer)组成一条few-shot数据。这里没提到prompt擦除,那应该是没进行特殊处理。第三部分是收集了16万条数学问题。第四部分是完全合成的数据,使用GPT-4创建了2000次医患对话,然后每次对话生成一个摘要。
接下来是训练过程,这里使用LLaMA-2的7B和13B版本作为基座模型,也是类似Orca-1,使用渐进式学习方法来进行训练。先在FLAN-v2数据集上微调1个epoch,然后在500万条ChatGPT数据上微调3个epoch,最后在100万条GPT-4和Orca-2的81万条数据上微调4个epoch。

最后是模型性能展示,左侧为模型推理能力,可以看到13B版本的Orca-2已经无限接近ChatGPT了,并且优于其他13B的网络。右侧是Orca-2在学术考试上的结果,基本达到了13B网络的天花板。

这篇关于[阅读笔记16][Orca-2]Teaching Small Language Models How to Reason的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/922342

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

论文翻译:arxiv-2024 Benchmark Data Contamination of Large Language Models: A Survey

Benchmark Data Contamination of Large Language Models: A Survey https://arxiv.org/abs/2406.04244 大规模语言模型的基准数据污染:一项综述 文章目录 大规模语言模型的基准数据污染:一项综述摘要1 引言 摘要 大规模语言模型(LLMs),如GPT-4、Claude-3和Gemini的快

论文阅读笔记: Segment Anything

文章目录 Segment Anything摘要引言任务模型数据引擎数据集负责任的人工智能 Segment Anything Model图像编码器提示编码器mask解码器解决歧义损失和训练 Segment Anything 论文地址: https://arxiv.org/abs/2304.02643 代码地址:https://github.com/facebookresear

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

查看提交历史 —— Git 学习笔记 11

查看提交历史 查看提交历史 不带任何选项的git log-p选项--stat 选项--pretty=oneline选项--pretty=format选项git log常用选项列表参考资料 在提交了若干更新,又或者克隆了某个项目之后,你也许想回顾下提交历史。 完成这个任务最简单而又有效的 工具是 git log 命令。 接下来的例子会用一个用于演示的 simplegit

记录每次更新到仓库 —— Git 学习笔记 10

记录每次更新到仓库 文章目录 文件的状态三个区域检查当前文件状态跟踪新文件取消跟踪(un-tracking)文件重新跟踪(re-tracking)文件暂存已修改文件忽略某些文件查看已暂存和未暂存的修改提交更新跳过暂存区删除文件移动文件参考资料 咱们接着很多天以前的 取得Git仓库 这篇文章继续说。 文件的状态 不管是通过哪种方法,现在我们已经有了一个仓库,并从这个仓

忽略某些文件 —— Git 学习笔记 05

忽略某些文件 忽略某些文件 通过.gitignore文件其他规则源如何选择规则源参考资料 对于某些文件,我们不希望把它们纳入 Git 的管理,也不希望它们总出现在未跟踪文件列表。通常它们都是些自动生成的文件,比如日志文件、编译过程中创建的临时文件等。 通过.gitignore文件 假设我们要忽略 lib.a 文件,那我们可以在 lib.a 所在目录下创建一个名为 .gi