LIMA:小规模监督数据指令微调

news2024/12/23 9:18:03

论文标题:LIMA: Less Is More for Alignment

论文链接:https://arxiv.org/abs/2305.11206

论文来源:Meta AI

一、概述

语言模型在大规模语料上以预测下一个token的方式预训练,使它们能够学习可迁移到几乎任何语言理解或生成任务的通用表示。为了实现这种迁移,已经提出了各种用于对齐语言模型的方法,主要包括在大型百万级示例数据集上的指令微调,以及从人类反馈中的强化学习 (RLHF),这些反馈是通过与人类标注员的数百万次交互收集的。现有的对齐方法需要大量的计算和专门的数据才能达到ChatGPT级别的性能。然而,我们证明,只需在1000个精心策划的训练示例上进行微调,就可以利用强大的预训练语言模型获得显著的强大性能。

我们假设对齐可以是一个简单的过程,其中模型学习与用户交互的风格或格式(style or format),以展示在预训练过程中已经获得的知识和能力。为了验证这个假设,我们策划了1000个接近真实用户提示和高质量响应的例子。我们从社区论坛(如Stack Exchange和wikiHow)中选取750个顶级问题和答案,以质量和多样性为采样依据。此外,我们手动编写了250个提示和响应的例子,以优化任务的多样性,并强调统一的响应形式,符合AI助手的风格。最后,我们以这1000个演示中训练了LIMA,也就对一个预训练的650亿参数的LLaMa模型进行指令微调。

我们在300个具有挑战性的测试提示上将LIMA与当前的SOTA语言模型和产品进行比较。在一个人类偏好研究中,我们发现LIMA的性能优于OpenAI的RLHF训练的DaVinci003,以及在52000个示例上训练的Alpaca的650亿参数复现版本。尽管人们通常更喜欢GPT-4,Claude,和Bard的响应,而不是LIMA的响应,但这并非总是如此;在43%,46%,和58%的情况下,LIMA产生了相等或更可取的回应。使用GPT-4作为标准来评估人类偏好,产生了类似的结果。对LIMA响应的绝对比例分析表明,88%满足提示的要求,50%被认为是优秀的。

消融实验表明,当扩大数据量而不扩大提示的多样性时,收益会大幅减少,而优化数据质量时则会获得重大收益。此外,尽管没有任何对话例子,我们发现LIMA可以进行连贯的多轮对话,并且只需在训练集中添加30个手工制作的对话链,就可以显著提高这种能力。总的来说,这些可观的发现展示了预训练的力量,以及其相对于大规模指令调整和强化学习方法的相对重要性。

二、数据对齐

我们定义了「浅层对齐假设(Superficial Alignment Hypothesis)」:模型的知识和能力几乎完全在预训练期间学习,而对齐则教导它在与用户互动时应使用哪种子分布的格式。如果这个假设正确,对齐主要是关于学习风格或者格式,那么浅层对齐假设的一个推论是,人们可以用相当小的一组示例来充分调整预训练的语言模型。

为此,我们收集了一个包含1000个提示和响应的数据集,其中输出(响应)在风格上与彼此对齐,但输入(提示)是多样的。具体来说,我们寻求的输出是以一个有帮助的AI助手的风格。我们从各种来源策划这样的示例,主要分为社区问答论坛和手动编写的示例。我们还收集了一个包含300个提示的测试集和一个包含50个的开发集。下表显示了不同数据来源的概览,并提供了一些统计数据。

1db4dc0fbc570203fb30f1dd9209ade5.jpeg
数据来源
  1. 社区问答

我们从三个社区问答网站收集数据:Stack Exchange,wikiHow和Pushshift Reddit数据集。大体上来说,来自Stack Exchange和wikiHow的回答都与有帮助的AI助手的行为相符,因此可以自动采集,而在Reddit上得票多的回答往往带有幽默或恶搞成分,需要更人工的方式来策划符合适当风格的响应。

  • Stack Exchange

Stack Exchange包含179个在线交流社区(exchange),每个都专注于特定的主题,最受欢迎的是编程(Stack Overflow)。用户可以发布问题、答案、评论,并对上述所有内容进行投票(或反对)。由于活跃的社区成员和版主的存在,Stack Exchange成功维持了内容质量的高标准。我们在从Stack Exchange采样时会控制内容的质量和多样性。首先,我们将所有的社区分为75个STEM社区(包括编程、数学、物理等)和99个其他社区(英语、烹饪、旅行等);我们丢弃了5个小众社区。然后我们设置温度为来从每个集合中采样200个问题和答案,以获得不同领域的更均匀的样本。在每个社区中,我们选择评分最高且标题能够完整描述问题的问题。然后,我们选择每个问题的最佳答案,假设它得到了高度的积极评分(至少10)。为了符合有帮助的AI助手的风格,我们自动过滤掉过短(少于1200个字符)、过长(超过4096个字符)、用第一人称(“I”、“My”)写成或引用其他答案的答案(“as mentioned”、“stack exchange”等);我们还从回应中删除链接、图像和其他HTML标签,只保留代码块和列表。由于Stack Exchange的问题包含标题和描述,我们随机选择一些例子的标题作为提示,其他的描述作为提示。

  • wikiHow

wikiHow是一个在线wiki风格的出版物,提供超过240,000篇关于各种主题的how-to文章。任何人都可以向wikiHow投稿,文章受到严格的监管,因此几乎所有的内容都是高质量的。我们从wikiHow抽样200篇文章,先选一个类别(共19个),然后在其中选择一篇文章以确保多样性。我们用标题作为提示(例如,“How to cook an omelette?”),文章的正文作为回应。我们将通常的“This article...”开始替换为“The following answer...”,并应用一些预处理启发式方法来删除链接、图片和文本的某些部分。

  • Pushshift Reddit数据集

Reddit是全球最受欢迎的网站之一,用户可以在用户创建的子Reddit中分享、讨论和投票内容。由于它的巨大热度,Reddit更倾向于娱乐用户而不是帮助他们;往往有趣、讽刺的评论会比严肃、信息丰富的评论得到更多的赞。因此,我们将我们的样本限制在两个子集,r/AskReddit和r/WritingPrompts,并从每个社区中最受欢迎的帖子中手动选择示例。在r/AskReddit中,我们找到70个能够完整描述问题的提示(只有标题,没有正文),我们用这些提示作为测试集,因为最顶部的答案并不一定可靠。WritingPrompts的子Reddit包含了虚构故事的前提,其他用户被鼓励以创造性的方式完成这些故事。我们找到150个提示和高质量的响应,包括诸如爱情诗和短篇科幻小说等主题,这些我们都加入到训练集中。所有的数据实例都是从Pushshift Reddit数据集中获取的。

  1. 手工创作的样本

为了进一步扩大我们的数据多样性,本文的作者手写了提示。我们指定两组作者,A组和B组,分别根据自己或朋友的兴趣创作250个提示。我们选择A组的200个提示用于训练,另外50个提示作为保留的开发集。过滤掉一些问题提示后,B组剩余的230个提示用于测试。

我们用自己编写的高质量答案来补充200个训练提示。在编写答案时,我们试图设定一个适合于有用的AI助手的统一语调。具体来说,很多提示都会在答案本身之前以某种方式确认问题。初步实验表明,这种一致的格式通常会提高模型的性能;我们假设这有助于模型形成思维链,类似于“let’s think step-by-step”的提示。

我们还包括了13个带有一定毒性或恶意的训练提示。我们仔细地写出部分或完全拒绝该命令的回应,并解释为什么助手不会服从。测试集中也有30个类似问题的提示。

除了我们手工编写的示例,我们还从Super-Natural Instructions中抽取了50个训练示例。具体来说,我们选择了50个自然语言生成任务,如摘要、改写和风格转换,并从每个任务中选出一个随机示例。我们稍微编辑了一些示例,使其符合我们200个手动示例的风格。虽然潜在用户提示的分布可能与Super-Natural Instructions中的任务分布不同,但我们的直觉是,这个小样本增加了训练示例的整体多样性,可能增强模型的鲁棒性。

手动创建多样的提示和以统一风格编写丰富的响应是费力的。尽管一些最近的工作通过蒸馏和其他自动方式避免了手动编写,他们优先考虑数量而不是质量,但本文这项工作探索的是投资于多样性和质量的效果。

三、训练LIMA

我们按照以下方法训练LIMA(Less Is More for Alignment)。从LLaMa 65B开始,我们对我们的1,000个示例的对齐训练集进行微调。为了区分每个发言者(用户和助手),我们在每个对话的末尾引入一个特殊的end-of-turn token(EOT);这个标记扮演着和EOS结束生成的相同角色,但避免了与预训练模型可能赋予预先存在的EOS标记的任何其他含义的混淆。

我们遵循标准的微调超参数:我们使用AdamW进行15个epoch的微调,,权重衰减为0.1。不使用warm-up,我们将初始学习率设置为1e-5,并在训练结束时线性衰减到1e-6。批量大小设定为32(对于较小的模型为64),并且长于2048个token的文本会被修剪。训练时一个明显偏离常规的做法是使用残差dropout;我们遵循Ouyang等人(2022)的做法,在残差连接上应用dropout,从底层的开始,线性地将比率提高到最后一层的(对于较小的模型,)。我们发现困惑度并不与生成质量相关,因此我们在保留的50个示例开发集中手动选择在第5个到第10个epoch之间的检查点。

四、实验

9ccaef08e8edd75a5ff054faf94b2143.jpeg
实验
010a7758957300e4b6205eaf42bbf05e.jpeg
实验
c6ea28b9327a226d6238c21e182e1e9b.jpeg
实验
cfb209cb1c07b55a62f7f3a33f3408e8.jpeg
实验
a02bc2612c66e09e83a65d9633ac29b9.jpeg
实验
7c4e8bcc6c523e6a6b246f198a4df5b8.jpeg
实验

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

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

相关文章

让小程序动起来-轮播图的两种方式--【浅入深出系列003】

浅入深出系列总目录在000集 如何0元学微信小程序–【浅入深出系列000】 文章目录 本系列校训学习资源的选择啥是轮播图轮播图的关键代码最常见的轮播图代码便于理解的轮播代码两种轮播代码的比较 实际操练第一步,就是找到文件。第二步,先改动一下最显眼…

全源最短路Johnson算法

最短路Johnson算法( O ( n m l o g m ) O(nmlogm) O(nmlogm)) 可以求任意两点最短路, 新图的边权改造为: w ( x , y ) h ( x ) − h ( y ) w(x,y)h(x)-h(y) w(x,y)h(x)−h(y) 构造的新图 d 1 ( x , y ) d ( x , y ) h ( x ) − h ( y ) d1(x,y)d(x,y…

java学习02

一、基本数据类型 Java有两大数据类型,内置数据类型和引用数据类型。 内置数据类型 Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 byte&#xff1…

leetcode:704. 二分查找(python3解法)

难度:简单 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9…

人工智能发展前夜,基于控制论的杂谈

谢邀。 目录 《What the Frogs Eye Tells the Frogs Brain?》简介我是怎么理解这篇文章的?被后世频繁引用的「青蛙」从「青蛙」再重新转向控制论 《What the Frog’s Eye Tells the Frog’s Brain?》简介 帕斯克在实践和理论中,将人类的适应性行为引入…

集成算法的参数空间与网格优化

目录 1. 探索参数空间 1.1 学习曲线 1.2. 决策树对象Tree 2. 使用网格搜索在随机森林上进行调参 1. 探索参数空间 随机森林集成算法的超参数种类繁多、取值丰富,且参数之间会相互影响、共同作用于算法的最终结果,因此集成算法的调参是一个难度很高的过…

JavaSwing+MySQL的聊天系统设计

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/88055544 JDK1.8、MySQL5.7 功能:类似于QQ软件的聊天系统,可以进行登录注册聊天发信息等功能

为什么说Raft原生系统是流式数据的未来?

目录 一、前言 二、Redpanda是如何实施Raft的? Redpanda的需求是: 实施Raft为这三个需求提供了坚实的基础: 1. 简单性 2. 性能 3. 可靠性 三、但是Kraft又如何呢? 四、结合Raft与性能工程 一、前言 共识是一致性分布式…

分布式声波传感(DAS)声音还原

声音还原 DAS 基于相位敏感光时域反射计(Φ-OTDR)的分布式光纤声波传感技术(DAS)是一种利用光纤后向瑞利散射干涉效应实现声波信号连续分布式探测的传感技术。 实验装置如下图所示,采用窄线宽光纤激光器作为光源,出射光通过90:10的光纤耦合器分成参考光和…

AlphaPose复现配置教程

AlphaPose复现配置教程 AlphaPose介绍 AlphaPose是一种准确的多人姿态估计器,这是第一个在COCO数据集上达到70 mAP (75 mAP)和在MPII数据集上达到80 mAP (82.1 mAP)的开源系统。为了匹配跨帧的同一人的姿态,我们还提供了一种高效的在线姿态跟踪器&…

Effective C++学习笔记(6)

目录 条款32. 确定你的public继承塑模出is-a关系条款33.避免遮掩继承而来的名称条款34.区分接口继承和实现继承条款35.考虑virtual函数以外的其他选择条款36.绝不重新定义继承而来的non-virtual函数条款37.绝不重新定义继承而来的缺省参数值条款38.通过复合塑模出has-a或“根据…

HP惠普暗影精灵9笔记本原装出厂Win11系统预装专用OEM系统镜像

暗影9笔记本电脑原厂Windows11系统包 OMEN by HP 16.1英寸游戏本16-wf0000,16-wf0001,16-wf0003,16-wf0004,16-wf0006,16-wf0008,16-wf0009,16-wf0010,16-wf0011,16-wf0012,16-wf0028,16-wf0029,16-wf0007,16-wf0032,16-wf0036,16-wf0043 链接:https://pan.baidu.…

78、分布式事务解决方案

分布式事务解决方案 XA规范: 分布式事务规范,定义了分布式事务模型 四个角色: 事务管理器(协调者TM)、资源管理器(参与者RM),应用程序AP,通信资源管理器CRM 全局事务:一个横跨多个数据库的事务,要么全部提交、要么全部回滚 JT…

远程大文件传输工具该怎么选择?

随着网络技术的不断进步,越来越多的人需要在不同地点之间传输文件。这时候,我们便需要使用远程文件传输工具。 1、什么是远程文件传输工具呢? 简单来说,它是一种能够帮助我们在不同设备之间传输文件的工具。通常情况下&#xff0…

Makefile:6: *** missing separator. Stop.

Makefile:2: *** missing separator. Stop. Windows下用VS CODE编写makefile文件,编译报出这个错误 可以查看一下VS CODE左下角,如果是下图“空格:4”这样,需要更改一下。 在“空格:4”上左键单击一下,在…

C# webform alert弹出内容换行

用 ” \n “(双斜杠哈,发布出去以后csdn只显示一个斜杠)换行,亲测有效果,其中saveNum,lose,sbnr 都是参数,sbnr是输入的换行内容,代码如下: ClientScript.RegisterStartupScript(this.GetType(), "ale…

小研究 - 面向 Java 的高对抗内存型 Webshell 检测技术(五)

由于 Web 应用程序的复杂性和重要性, 导致其成为网络攻击的主要目标之一。攻击者在入侵一个网站后, 通常会植入一个 Webshell, 来持久化控制网站。但随着攻防双方的博弈, 各种检测技术、终端安全产品被广泛应用, 使得传统的以文件形式驻留的 Webshell 越来越容易被检测到, 内存…

【天梯赛集训】7.18习题集

目录 7-1 递归 递推 7-2 函数的递归调用 7-3 A010 递归练习1 7-4 A011 递归练习2 7-5 A012 递归练习3 7-6 PG009 循环与递归 7-7 计算Fibonacci数列—递归 7-8 整数转换为字符串 7-9 简单的归并 AC: 9 / 9 用时:1 h 4 min 递归专题。 7-1 递归 递推 #inc…

Go语言的发展历史

Go语言的Logo 作为程序员,我们每天会用到大量的编程语言,打开界面会碰到很多logo,在正式学习Go语言之前,我们先来了解一下Go语言的Logo。也就是它,下面这个动物,gopher [ˈɡoʊfər] ,囊地鼠,…

TinyKv流程梳理三

split流程 处理协程启动 func (bs *Raftstore) startWorkers(peers []*peer) {ctx : bs.ctxworkers : bs.workersrouter : bs.routerbs.wg.Add(2) // raftWorker, storeWorkerrw : newRaftWorker(ctx, router)go rw.run(bs.closeCh, bs.wg)sw : newStoreWorker(ctx, bs.store…