LIMA: RLHF 不如 1000 条高质量数据?

LIMA: RLHF 不如 1000 条高质量数据?

yuannnn

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 就足够了。

扫描二维码关注公众号,回复: 16043761 查看本文章

为啥想到要用 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 的多轮对话能力显著增加。

猜你喜欢

转载自blog.csdn.net/sinat_37574187/article/details/132001384