文章的出发点:LLMs通常被训练为通用工具,但在实际应用中,它们往往需要针对特定用户或任务进行调整。现有的方法如sft或rl,需要大量的数据集,这对新任务来说成本过高。本文通过少量用户提供的监督数据来快速定制和对齐大型语言模型,以满足特定用户或任务的需求。
文章标题:Show, Don’t Tell: Aligning Language Models with Demonstrated Feedback
https://arxiv.org/html/2406.00888v1
https://github.com/SALT-NLP/demonstrated-feedback
原理
-
收集到一个小批量的x->y的监督数据 -
基于1的数据,sft微调得到一个基础模型 -
基于2得到的模型,对1的数据生成回复 -
从3中采样出batch -
构造对比数据。初始的回复是最优的,其次就是每次迭代的假设都比上一次优秀
循环3,4,5,伪代码如下图:
QA
-
为什么 DITTO 比单独使用 SFT 效果更好?
DITTO 性能相对较高的原因之一是它通过生成比较使用的数据远多于 SFT。另一个是,在某些情况下,online imitation learning 比 SFT形式的 demonstrator 表现得更好。

-
DITTO迭代次数怎么选?每次迭代,策略针对每条样本生成的负样本数量?演示样本的数量?
迭代次数1->4,逐渐变优;增加negative sample,2->10逐渐变优;增加演示样本数量,逐渐边优,但是收益越来越低。
-
对比样本处理消融
-
如果从一开始就对所有负样本进行采样(而不是以在线方式迭代重新采样),就会观察到与使用 DITTO 相比,胜率从 70.1% 下降到 57.3% -
虽然迭代重新采样可以提高性能,但在此在线过程中持续更新 会显着降低性能 -
replay 和inter-policy 都有帮助。删除replay 和inter-policy比较会使 DITTO 的胜率分别降低 6.5 点和 2 点。这2个分别指,正确的回复跟每次迭代的回复比较,以及每次迭代之间都进行比较。

-
效果?
