LLM 指令微调:数据质量与多样性对对齐效果的影响
在大型语言模型(LLM)的指令微调(Instruction Tuning)阶段,关于数据规模与质量的权衡一直是研究热点。传统观点认为数据量越大越好,但近期多项研究表明,在预训练知识充足的前提下,少量高质量、高多样性的数据往往能带来更优的对齐效果。本文将深入探讨 LIMA、AlpaGasus、LTD 及 WizardLM 等代表性工作,分析不同数据构建策略的原理与优劣。
LIMA:少即是多
论文核心观点
LIMA: Less Is More for Alignment 较早提出了 Quality Over Quantity 的观点。其核心假设是:模型的知识和能力几乎全部由预训练阶段注入,而指令微调阶段的对齐只是学习人类交互的回答形式。因此,一个输入多样、输出形式一致的高质量指令数据集能帮助模型快速学会回答形式。
数据集构建方法
LIMA 使用了人工筛选的 1K 高质量样本,主要来源包括 Stack Exchange、wikiHow 和 Reddit。以 Stack Exchange 为例,构建流程如下:
- 分类采样:为保证多样性,将 Stack Exchange 分为 75 个科学类别和 99 个其他类别,从每个类别中采样 200 个问题。
- 质量筛选:在每个类别中筛选问题评分最高的,再筛选该问题中回答得分最高的。
- 一致性过滤:为保持输出风格一致,过滤掉过长(>4096 字符)或过短(<1200 字符)的回答,过滤第一人称回答或引用他人内容的回答,并清洗内容仅保留代码和文本部分。
- 样本构建:随机使用问题的标题或描述作为输入,使用回答作为输出。
此外,作者还人工构建了 200 条基于个人偏好随机创建的 prompt 及回答,核心在于注意回答风格的一致性。论文反复强调,一致的回答风格可以加速模型收敛。
实验配置与结果
- 基座模型:65B Llama
- 训练参数:1000 条样本,微调 15 个 epoch,lr=1e-5, batch=32, max_seq_len = 2048
- 验证集选择:人工在验证集打分上,选择了 5-10 个 epoch 之间的 checkpoint。
消融实验表明:
- 多样性:相似质量和数量下,输入指令多样性更高的 Stack Exchange 优于输入相对单一的 wikiHow。
- 质量:同等量级上,过滤后质量更高的 Stack Exchange 数据集微调效果更好。
- 数量:从质量过滤后的单一 Stack Exchange 中采样更高量级的训练样本,并不能显著带来效果提升。之前公认的样本数量越多越好,可能更多是数量提升带来的指令多样性提升。
AlpaGasus:自动化筛选
论文核心观点
AlpaGasus: Training A Better Alpaca with Fewer Data 提出了一种成本更低、更简单粗暴的自动化样本过滤方案。模型名称 AlpaGasus 取自 Alpaca + Pegasus(飞天羊驼)。
对比 LIMA,AlpaGasus 没有对什么是高质量进行很明确的定义,而是利用大模型自动筛选高质量的指令微调样本。从原始 52K 的 Alpaca 样本中使用大模型自动筛选出高质量的 9K 样本进行模型微调。
评估与筛选机制
论文在 4 个测试集上进行评估,使用 GPT-4 给原始 Alpaca 和 AlpaGasus 进行偏好打分。结果显示,在不同量级的训练样本上,AlpaGasus 以 80%+ 的胜率超越 Alpaca,当训练样本在 9K 左右的时候,胜率最高。
自动样本过滤机制如下: 使用 Prompt 让 ChatGPT 给 (instruction, input, response) 的三元组样本进行打分,并根据最终的打分分布,选定 4.5 分作为阈值,筛选打分 > 4.5 的 9K 样本用于下游模型微调。
消融实验对比了不同的筛选阈值,发现 3k/6k/9k 中 9K 的样本量级效果最好,但超过后模型效果会有下降。延伸结论是:高质量的数据越多越好,但低质量的数据越少越好。同时对比了随机采样 9K 作为对照组,效果显著差于使用模型打分筛选出的 9K 样本。


