LIMA: RLHF 不如 1000 条高质量数据?
LIMA 一句话介绍:不需要 RLHF,通过 1000 条高质量的数据 finetune,可以在 43% case 里达到 GPT-4 的水平。
论文:《LIMA: Less Is More for Alignment》
链接:https://arxiv.org/pdf/2305.11206.pdf
单位:Meta
为啥不用 RLHF?
作者说 RLHF 的训练需要大量的计算和标注数据,而达到同样的效果,只需要 1000 条高质量的数据来 finetune 就足够了。
![](/qrcode.jpg)
为啥想到要用 1000 条少量高质量数据 Finetune?
基于一个 Superficial Alignment Hypothesis。模型在预训练阶段已经学会了所有的知识和能力。
Finetune 阶段只是帮助已经比较强大的 Pretrain 模型来学会某种沟通的 style 或者 format,从而激发出在 pretrain 阶段就已经学会的隐藏能力。
因此只需要很少的 example,就应该能教会模型新的输出格式或者风格。
怎样的数据算是高质量的数据?
作者使用的是非常接近真实用户的 prompt + 高质量的回答。
具体而言,作者从社交论坛上面采样了 750 个问题和答案,比如从 Stack Exchange、wikiHow 或者 Pushshift Reddit Dataset。另外手写了 250 个 prompt 和 response,来增加 AI Assistant 的独特回答风格数据。
数据分布?
每个来源的数据量、每条样本的平均长度等如下表格:
具体的数据格式?
prompt 十分多样,但是输出的格式基本相同,都做成 helpful AI assistant 的格式。其中每个数据做了如下的处理。
Stack Exchange:包括 179 个主题的论坛,Stack Overflow 是其中最火的论坛。
- 从不同的领域共采样 200 个问题
- 选择得分最高的回答,至少有 10 个点赞
- 删除太短(少于 1200 个字符)或者太长(多余 4096 个字符)的回答
- 删除第一人称写的、引用其他答案的回答
- 删除链接、图片、HTML tag
- 保留 code
wikiHow:wiki 风格的文章,大约有 24w 被严格审核的高质量文章。
- 从不同的类别中采样 200 个文章
- Title 作为 prompt,wikiHow 中的文章都是以 “How to xxx” 作为标题的
- 文章内容作为 response,将 “This article” 替换成 “The following answer”
- 去除链接、图片和文章中某些部分
Pushshift Reddit: Reddit 是世界上最受欢迎的网站之一。其中的内容更倾向于娱乐,而非提供具体的帮助。通常情况下,诙谐、讽刺的评论会比严肃、信息丰富的评论获得更多的赞。
- 作者手动选出那些问题和回答比较可靠的数据
Super-Natural Instructions:
- 作者从 Super-Natural Instructions 数据中选择了 50 个生成任务,手动编辑一些内容,使得数据符合 AI Assistant 问答风格。
作者们手动创建:
- 增加了一些 step-by-step 的思考问题
- 增加了一些恶意的问题,并且回答中表示拒绝,还会写明拒绝的具体理由
下面图中是每个来源数据的示例,蓝色是 prompt,省略号是省略掉的文本。
有多少 token?
训练数据 1000 条,共 0.75M tokens。
LLaMA pretrain 的时候使用了 1TB tokens,大约是 LIMA 的 10^6 倍。
Finetune 的方法具体是怎样的?
使用的 Pretrain 模型:LLaMA 65B
每个对话结束后增加一个 end-of-turn token(EOT),用来区分不同的用户问答,此外也为了和预训练过程中见过的 EOS 作区分。
Finetune 总共花了 15 个epoch,使用 AdamW 优化器,b1 = 0.9 b2 = 0.95,weight decay 是 0.1。
学习率初始化为 1e-5,没有 warmup 的阶段,线性的 decay 到 1e-6。
batch_size 设置为 32,如果模型更小的话,可以使用 64。
max_seq_len 设置为 2048。
使用了 residual dropout,最下面层使用 dropout rate = 0,往上面线性增加,最上面层使用 dropout rate = 0.3,如果模型更小,可以到 0.2 就好了。
作者发现 ppl 和生成质量没啥关系,所以手动选择第五个或者第十个 epoch 来做 dev set 的验证。
达到 GPT-4 的性能是通过哪些方面来衡量?
在 300 个具有挑战性的测试 prompt 上,找人来衡量。
baselines:
- Alpaca 65B:在 Alpaca 52k 条数据上 finetune LLaMA 65B
- OpenAI’s DaVinci003:用 RLHF 训练的
- Bard:基于 PaLM 的模型
- Claude:用 RLHF 训练的 52B 的模型
- OpenAI’s GPT-4:用 RLHF 训练的模型
上面的数据都是在 2023 年 4 月采集的。
生成方法:
- 使用 nucleus 采样,p = 0.9
- temperature - 0.7
- 用 1.2 作为超参抑制重复生成
- 最长生成长度为 2048
让标注者每次看到相同 prompt,两个不同模型生成的结果,然后选择他觉得更好的一个:
- 相比 GPT-4,有 43% 的 LIMA 回答被认为为与 GPT-4 相等或者更好的。
- 相比 Claude,有 46% 的 LIMA 回答被认为为与 Claude 相等或者更好的。
- 相比 Bard,有 58% 的 LIMA 回答被认为为与 Bard 相等或者更好的。
数据质量比数据量更重要?
作者在多样性、质量、数量三个方面做了消融实验。
多样性:Stack Exchange prompt 的多样性比 wikiHow 更高。单独用前者训练的模型生成效果比单独用后者生成的效果更好。
质量:使用没有 filter 过的 StackExchange 训练的模型,生成结果远远不如 filter 过的数据训练的结果。
数量:从 Stack Exchange 中采样更多的数据,并不能提升模型的生成效果。
结果:选择富有多样性,并且高质量的数据,是提升生成效果的关键。
多轮对话的能力?
1000 个 finetune 的 example 中没有多轮对话的数据,但是 LIMA 有对话能力。如果手工标注 30 个多轮对话数据,LIMA 的多轮对话能力显著增加。