文献阅读:LIMA: Less Is More for Alignment
- 文献阅读:LIMA: Less Is More for Alignment
- 1. 内容简介
- 2. 实验设计
- 1. 整体实验设计
- 2. 数据准备
- 3. 模型准备
- 4. metrics设计
- 3. 实验结果
- 1. 基础实验
- 2. 消解实验
- 3. 多轮对话
- 4. 结论 & 思考
- 文献链接:https://arxiv.org/abs/2305.11206
1. 内容简介
这篇文章是Meta在今年5月发的一篇文章,算是对LLM进行的一个黑盒分析吧。核心来说,这篇文章就是想要探究一下为什么LLM能够拥有如此强大的能力。
众所周知,自打从BERT开始,NLP大模型的范式就是大语料预训练加小数据集finetune。虽然GPT3短暂的抛弃了finetune而倡导直接的zero-shot learning,但是从FLAN开始,后期的InstructGPT,ChatGPT以及现今还没有公开技术细节的GPT4,无一不是走的两阶段训练:第一阶段进行大数据上的预训练,第二阶段做instruct learning或者RLHF。
但是,具体到两个阶段具体都产生了多大的贡献,事实上还算是一个黑盒,尽管直觉上我们都知道,真正产生核心作用的必然是大数据的预训练过程,不过后续的finetune过程到底可以产生多大的影响却不是很确定,文中就是对这个点进行了细致地考察,然后初步得到结果如下:
- LLM的核心还是在于预训练,后续只需要用少量的高质量标注数据进行LLM的finetune就能够获得堪比SOTA的模型效果。
下面,我们来具体看一下文章的细节。
2. 实验设计
1. 整体实验设计
首先,我们来看一下文中的实验整体设计。
由于文中要考察的是finetune对模型整体效果的影响,因此文中整体的实验设计思路就是减小finetune数据集,用一个精选的小数据集进行模型的finetune,即文中的LIMA模型,然后和现有的一些常用的大模型进行效果比较,检查这个方法训练得到的模型能否大幅提升模型的效果,以及能够抗衡现有的常见大模型。
2. 数据准备
因此,这里对于finetune使用的数据的质量的要求就很高。文中也是用了一个章节来介绍数据的构造方式。
首先,我们给出文中的总的finetune数据分布如下:
可以看到:
- 文中的finetune主要使用了1000条数据
- 其中,这一千条数据当中,有200条是人工写作的,剩下的800条来自于网上的高质量数据集中的高分数据。
3. 模型准备
然后,关于模型的准备方面,文中主要是使用Meta自己的LLaMa 65B模型然后进行finetune。具体就是使用上述提到的1000条数据进行15个epoch的finetune。
而作为对照模型,文中主要使用了如下几个模型作为对照组:
- Alpaca 65B
- Davinci003
- Bard
- Claude
- GPT4
4. metrics设计
最后,关于实验的metrics设计方面,文中其实给的比较简单,基本就是300个样本交给标注员进行side by side比较。
除此之外,考虑到人工标注的不稳定性,文中还使用GPT4来进行side by side比较判断,从而增加结论的可靠性。
3. 实验结果
下面,我们来看一下文中的具体实验结果。
1. 基础实验
我们首先给出基础的实验结果如下:
可以看到:
- LIMA模型击败了Alpaca 65B以及Davinci003模型
- 虽然LIMA模型没有击败BARD模型,但是有58%(人工标注)和53%(GPT4标注)的概率可以生成不差于BARD模型的结果
- 模型效果逊于Claude模型以及GPT4模型
而除了考察LIMA模型和其他模型的比较之外,文中还考察了一下LIMA自身回答的好坏,抽样50个样本之后,人工分析其效果如下:
可以看到:
- 只有12%的样本没有通过测试,而获得优秀评价的样本占比达到了50%。
最后,关于safety问题,LIMA通过了80%的safety测试,但是依然会出现差错,尤其当文本描述并不直接的时候。
下面,我们给出一些LIMA的具体case如下:
2. 消解实验
然后,文中还做了一些消解实验,研究了一下LIMA为何使用如此小量的数据就能获得如此好的效果。
具体而言,文中做了下面三个维度的消解实验:
- 标注数据的prompt的diversity
- 标注数据的质量
- 标注数据的数量
给出文中的实验结果如下:
可以看到:
- prompt的diversity以及数据本身的质量会显著影响模型的效果;
- 相对的,标注数据的数量方面却没有表现出明显的变化,从2k到32k的数据,模型效果都相差无几。
3. 多轮对话
最后,文中还考察了多轮对话当中LIMA的效果。
由于前期的实验当中并没有涉及多轮对话的训练语料,所以这里新增了30条多轮对话的数据进行模型训练,然后考察finetune前后在10个测试集上的测试结果如下:
可以看到:
- 经过少量多轮对话进行finetune之后,模型在多轮对话上的表现明显提升。
下面是文中给出的一个具体的case展示:
4. 结论 & 思考
综上,我们可以看到:
- 对于LLM而言,其所有的知识基本上都是在预训练阶段就已经完成了,finetune阶段的作用更多的是导出LLM在特定方向上的能力,而非是增加其知识。
- 因此,对于LLM的finetune而言,数据质量的影响远高于数据量的影响,少量高质量的数据就足以令模型在特定领域发挥出足够优秀的效果。
- 不过,数据量少的代价也就是效果的不稳定,这一点在文中的讨论部分也有提及,少量数据虽然可以优化对应任务上的效果,但是会弱化模型的泛化能力。
Anyway,这些讨论的前提都是LLM可以载入并且进行finetune,这一点可能就劝退大部分人了,因此这篇文章可能也就是看看了,围观一下大佬们的实验结论就是了……
相关文章:

文献阅读:LIMA: Less Is More for Alignment
文献阅读:LIMA: Less Is More for Alignment 1. 内容简介2. 实验设计 1. 整体实验设计2. 数据准备3. 模型准备4. metrics设计 3. 实验结果 1. 基础实验2. 消解实验3. 多轮对话 4. 结论 & 思考 文献链接:https://arxiv.org/abs/2305.11206 1. 内容简…...

机器学习第十四课--神经网络
总结起来,对于深度学习的发展跟以下几点是离不开的: 大量的数据(大数据)计算资源(如GPU)训练方法(如预训练) 很多时候,我们也可以认为真正让深度学习爆发起来的是数据和算力,这并不是没道理的。 由于神经网络是深度学习的基础,学…...

React(react18)中组件通信04——redux入门
React(react18)中组件通信04——redux入门 1. 前言1.1 React中组件通信的其他方式1.2 介绍redux1.2.1 参考官网1.2.2 redux原理图1.2.3 redux基础介绍1.2.3.1 action1.2.3.2 store1.2.3.3 reducer 1.3 安装redux 2. redux入门例子3. redux入门例子——优…...

最新AI创作系统+ChatGPT网站源码+支持GPT4.0+支持ai绘画+支持国内全AI模型
一、AI创作系统 SparkAi系统是基于很火的GPT提问进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT系统?小编这里写一个详细图文教程吧&#x…...
react+umi项目中引入antd组件报错:“Button”不能用作 JSX 组件解决方案
具体报错信息 “Button”不能用作 JSX 组件。 Its type ‘(props: IProps) > React.ReactElement’ is not a valid JSX element type. 不能将类型“(props: IProps) > React.ReactElement”分配给类型“(props: any, deprecatedLegacyContext?: any) > ReactNode”。…...
常用算法模板
目录 快读、快输 快读、快输 #include <cstdio> #define Re register int #define LD double// 读整数 inline void in(Re &x) {int f 0; x 0; char c getchar();while (c < 0 || c > 9) f | c -, c getchar();while (c > 0 && c < 9) x …...

最全跨境独立站建站详细步骤解析
对于跨境电商卖家来说,无论是规避“鸡蛋放在同一个篮子里”的风险,还是追求更多的销售额和利润,多平台、多站点的布局都是其至关重要的战略。加之市场的变化带来了新的发展机遇,这也使得如今很多出海企业都在抢占独立站新风口。然…...

提升群辉AudioStation音乐体验,实现公网音乐播放
文章目录 本教程解决的问题是:按照本教程方法操作后,达到的效果是本教程使用环境:1 群晖系统安装audiostation套件2 下载移动端app3 内网穿透,映射至公网 很多老铁想在上班路上听点喜欢的歌或者相声解解闷儿,于是打开手…...

虹科分享 | 谷歌Vertex AI平台使用Redis搭建大语言模型
文章来源:虹科云科技 点此阅读原文 基础模型和高性能数据层这两个基本组件始终是创建高效、可扩展语言模型应用的关键,利用Redis搭建大语言模型,能够实现高效可扩展的语义搜索、检索增强生成、LLM 缓存机制、LLM记忆和持久化。有Redis加持的大…...
VS Code 代码跳转到定义(.js 和 .vue文件跳转)
vscode 代码跳转到定义(.js 和 .vue文件跳转) 在日常的开发工作中,我们经常需要跳转到方法或变量的定义处,以便更好地理解和修改代码。VS Code 是目前比较流行的开发工具,然而它默认情况下并不支持这个功能,…...

华为云云耀云服务器L实例评测 | Docker 部署 Reids容器
文章目录 一、使用Docker部署的好处二、Docker 与 Kubernetes 对比三、云耀云服务器L实例 Docker 部署 Redis四、可视化工具连接Redis⛵小结 一、使用Docker部署的好处 Docker的好处在于:在不同实例上运行相同的容器 Docker的五大优点: 持续部署与测试…...

聚观早报 | 杭州亚运开幕科技感拉满;腾讯官宣启动「青云计划」
【聚观365】9月25日消息 杭州亚运开幕科技感拉满 腾讯官宣启动「青云计划」 FF任命新全球CEO 比亚迪夺得多国销冠 iPhone 15/15 Pro销售低于预期 杭州亚运开幕科技感拉满 杭州第19届亚洲运动会开幕式23日晚在杭州奥体中心主体育馆举行,这届开幕式可谓科技感拉…...
Linux Gnome桌面无法打开终端Terminal
文章目录 前言排障解决方式一解决方式二 前言 由于不知名的原因,导致gonme桌面里打开terminal一直转圈,无法打开。 这里我的故障是已知的,我是因为要把英文改为中文。但是界面依旧是英文,同时导致终端无法打开。 此方式centos d…...

MySQL学习笔记15
1、内连接查询(重点): 基本语法: select 数据表1.字段列表,数据表2.字段列表 from 数据表1 inner join 数据表2 on 连接条件; 案例:获取产品表中每个产品的分类信息: mysql> select * from tb_goods …...

6、SpringBoot_项目的打包与运行
七、SpringBoot项目的打包与运行 1.目前项目怎么运行的 通过浏览器访问idea 将jar部署到服务器 2.maven 打包项目 命令 mvn package使用命令后会得到如下的jar 3.程序运行 命令 java -jar 项目.jar启动如下 4.springboot打包需要插件 插件 <plugin><group…...

图像语义分割概述
图像语义分割概述 一、图像语义分割概念 图像语义分割(Image Semantic Segmentation)是一项计算机视觉任务,其目标是将输入的图像分割成多个区域,并为每个像素分配一个语义类别标签,以表示该像素属于图像中的哪个物体…...

ViT细节与代码解读
最近看到两篇解读ViT很好的文章,备忘记录一下: 先理解细节 1:再读VIT,还有多少细节是你不知道的 再理解代码 1:ViT源码阅读-PyTorch - 知乎...
Linux中软链接与硬链接的作用、区别、创建、删除
1、软链接与硬链接的作用 (1)软链接 软链接是Linux中常用的命令,它的功能是某一文件在另外一个位置建立一个同步的链接,相当于C语言中的指针,建立的链接直接指向源文件所在的地址,软链接不会另外占用资源,当同一文件需要在多个位置被用到的时候,就会使用到软连接。 …...
第一章:最新版零基础学习 PYTHON 教程(第十四节 - Python 条件和循环语句–Python 中的 with 语句)
在Python中,with语句用于异常处理,使代码更简洁、更具可读性。它简化了文件流等公共资源的管理。观察以下代码示例,了解使用 with 语句如何使代码更简洁。 Python3 # 文件处理# 1) 不使用with语句 file = open(文件路径, w) # 打开文件以进行写操作 file.write(你好,世界…...

安科瑞AMC16-DETT铁塔jizhan直流电能计量模块,直流计量用
安科瑞虞佳豪壹捌柒陆壹伍玖玖零玖叁 9月20日,在杭州亚运会火炬传递的现场,不少人通过网络与亲友连线,共同见证火炬传递的历史时刻。上午6时,杭州铁塔的一线通信保障人员共27人就已经在本次火炬传递收官点位奥体中心西广场附近&a…...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

docker详细操作--未完待续
docker介绍 docker官网: Docker:加速容器应用程序开发 harbor官网:Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台,用于将应用程序及其依赖项(如库、运行时环…...

Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...