- 文献阅读: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,这一点可能就劝退大部分人了,因此这篇文章可能也就是看看了,围观一下大佬们的实验结论就是了……