养育孩子时,古往今来人们都会谈到一种重要方法:以身作则。也就是让自己成为孩子模仿学习的范例,而不是单纯地告诉他们应该怎么做。在训练大语言模型(LLM)时,我们或许也能采用这样的方法 —— 向模型进行演示。
近日,斯坦福大学杨笛一团队提出了一种新框架 DITTO,可通过少量演示(用户提供的期望行为示例)来将 LLM 与特定设置对齐。这些示例可以从用户现有的交互日志获取,也能通过直接编辑 LLM 的输出得到。这样就可以让模型针对不同的用户和任务高效地理解并对齐用户偏好。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜
论文标题:Show, Don’t Tell: Aligning Language Models with Demonstrated Feedback
论文地址:https://arxiv.org/pdf/2406.00888
DITTO 可基于少量演示(少于 10)自动创建一个包含大量偏好比较数据的数据集(这个过程被称为 scaffold),其具体做法是默认这一点:相比于原始 LLM 及早期迭代版本的输出,用户更偏好演示。然后,将演示与模型输出组成数据对,得到增强数据集。之后便可以使用 DPO 等对齐算法来更新语言模型。
此外,该团队还发现,DITTO 可被视为一种在线模仿学习算法,其中从 LLM 采样的数据会被用于区分专家行为。从这一角度出发,该团队证明 DITTO 可通过外推实现超越专家的表现。
为了对齐 LLM,此前的各类方法往往需要使用成千上万对比较数据,而 DITTO 仅需使用少量演示就能修改模型的行为。这种低成本的快速适应之所以能实现,主要得益于该团队的核心见解:可通过演示轻松获取在线比较数据。
语言模型可被视为一个策略 π(y|x),这会得到 prompt x 和完成结果 y 的一个分布。RLHF 的目标是训练 LLM 以最大化一个奖励函数 r (x, y),其评估的是 prompt – 完成结果对 (x, y) 的质量。通常来说,还会添加一个 KL 散度,以防止更新后的模型偏离基础语言模型(π_ref)太远。总体而言,RLHF 方法优化的目标为:
这是最大化在 prompt 分布 p 上的预期奖励,而 p 则受 α 调节的 KL 约束的影响。通常而言,优化这一目标使用的是形式为 {(x, y^w, y^l )} 的比较数据集,其中「获胜」的完成结果 y^w 优于「失败」的完成结果 y^l,记为 y^w ⪰ y^l。
另外,这里把小型专家演示数据集记为 D_E,并假设这些演示是由专家策略 π_E 生成的,其能最大化预测奖励。DITTO 能直接使用语言模型输出和专家演示来生成比较数据。也就是说,不同于合成数据的生成范式,DITTO 无需在给定任务上已经表现很好的模型。
DITTO 的关键见解在于语言模型本身,再加上专家演示,可以得到用于对齐的比较数据集,这样就无需收集大量成对的偏好数据了。这会得到一个类似对比的目标,其中专家演示是正例。
生成比较 。假定我们从专家策略采样了一个完成结果 y^E ∼ π_E (・|x) 。那么可以认为,从其它策略 π 采样的样本对应的奖励都低于或等于从 π_E 采样的样本的奖励。基于这一观察,该团队构建了比较数据 (x, y^E, y^π ),其中 y^E ⪰ y^π。尽管这样的比较数据源自策略而不是各个样本,但之前已有研究证明了这种方法的有效性。对 DITTO 来说,一个很自然的做法就是使用这个数据集以及一个现成可用的 RLHF 算法来优化 (1) 式。这样做能在提升专家响应的概率同时降低当前模型样本的概率,这不同于标准微调方法 —— 只会做前者。关键在于,通过使用来自 π 的样本,可使用少量演示就构建出无边界的偏好数据集。但是,该团队发现,通过考虑学习过程的时间方面,还能做到更好。
从比较到排名 。仅使用来自专家和单个策略 π 的比较数据,可能不足以获得优良性能。这样做只会降低特定 π 的可能性,导致过拟合问题 —— 这也困扰着少数据情况下的 SFT。该团队提出还可以考虑 RLHF 期间随时间而学习到的所有策略所生成的数据,这类似于强化学习中的 replay(重放)。
令第一轮迭代时的初始策略为 π_0。通过采样该策略可得到一个数据集 D_0。然后可以基于此生成一个用于 RLHF 的比较数据集,可记为 D_E ⪰ D_0。使用这些导出的比较数据,可以对 π_0 进行更新而得到 π_1。根据定义, 也成立。之后,继续使用 π_1 生成比较数据,并且 D_E ⪰ D_1。继续这一过程,不断使用之前的所有策略生成越来越多样化的比较数据。该团队将这些比较数据称为「重放比较数据(replay comparisons)」。
尽管这种方法理论上说得通,但如果 D_E 较小,却可能出现过拟合。但是,如果假设每一轮迭代后策略都会获得提升,则也可在训练期间考虑策略之间的比较。不同于与专家的比较,我们并不能保证每一轮迭代之后策略都更好,但该团队发现模型每次迭代后总体依然是提升的,这可能是是因为奖励建模和 (1) 式都是凸的。这样便可以依照以下的排名来采样比较数据:
通过添加这些「模型间」和「重放」比较数据,得到的效果是早期样本(比如 D_1 中的样本)的似然会比后期的(如 D_t 中的)压得更低,从而使隐含的奖励图景变得平滑。在实践实现中,该团队的做法是除了使用与专家的比较数据,也聚合了一些这些模型间比较数据。
一个实践算法 。在实践中,DITTO 算法是一个迭代过程,其由三个简单的组件构成,如算法 1 所示。
以上就是只需几个演示就能对齐大模型,杨笛一团队提出的DITTO竟如此高效的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/791455.html