只需几个演示就能对齐大模型,杨笛一团队提出的DITTO竟如此高效

news2025/2/24 11:18:11

人类的教育方式,对大模型而言也很适用。

养育孩子时,古往今来人们都会谈到一种重要方法:以身作则。也就是让自己成为孩子模仿学习的范例,而不是单纯地告诉他们应该怎么做。在训练大语言模型(LLM)时,我们或许也能采用这样的方法 —— 向模型进行演示。

近日,斯坦福大学杨笛一团队提出了一种新框架 DITTO,可通过少量演示(用户提供的期望行为示例)来将 LLM 与特定设置对齐。这些示例可以从用户现有的交互日志获取,也能通过直接编辑 LLM 的输出得到。这样就可以让模型针对不同的用户和任务高效地理解并对齐用户偏好。

图片

  • 论文标题:Show, Don’t Tell: Aligning Language Models with Demonstrated Feedback
  • 论文地址:arxiv.org/pdf/2406.00…

DITTO 可基于少量演示(少于 10)自动创建一个包含大量偏好比较数据的数据集(这个过程被称为 scaffold),其具体做法是默认这一点:相比于原始 LLM 及早期迭代版本的输出,用户更偏好演示。然后,将演示与模型输出组成数据对,得到增强数据集。之后便可以使用 DPO 等对齐算法来更新语言模型。

此外,该团队还发现,DITTO 可被视为一种在线模仿学习算法,其中从 LLM 采样的数据会被用于区分专家行为。从这一角度出发,该团队证明 DITTO 可通过外推实现超越专家的表现。

该团队也通过实验验证了 DITTO 的效果。

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 所示。

图片

首先,在专家演示集上运行监督式微调,执行数量有限的梯度步骤。将这设为初始策略 π_0. 第二步,采样比较数据:在训练过程中,对于 D_E 中的 N 个演示中的每一个,通过从 π_t 采样 M 个完成结果而构建一个新的数据集 D_t,然后根据策略 (2) 式将它们添加到排名中。当从 (2) 式采样比较数据时,每一批 B 都由 70% 的「在线」比较数据 D_E ⪰ D_t、20% 的「重放」比较数据 D_E ⪰ D_{i<t} 以及 10% 的「模型间比较数据」D_{i≤t} ⪰ D_{j<i}。最后,使用 RLHF 更新该策略。具体来说,该团队的做法是使用 DPO 损失函数,通过前述流程采样的数据批来更新 π_t,从而得到 π_{t+1}:

图片

其中 σ 是来自 Bradley-Terry 偏好模型的 logistic 函数。在每次更新期间,来自 SFT 策略的参考模型都不会更新,以避免偏离初始化过远。

将 DITTO 推导成在线模仿学习

DITTO 可通过在线模仿学习角度推导出来,其中组合使用专家演示和在线数据来同时学习奖励函数和策略。具体来说,策略玩家会最大化预期奖励 𝒥 (π, r),而奖励玩家则会最小化在在线数据集 D^π 上的损失 min_r L (D^π , r) 更具体而言,该团队的做法是使用 (1) 式中的策略目标和标准的奖励建模损失来实例化该优化问题:

图片

推导 DITTO,简化 (3) 式的第一步是解决其内部策略最大化问题。幸运的是,该团队基于之前的研究发现策略目标 𝒥_KL 有一个闭式解,其形式为,其中 Z (x) 用于归一化分布的配分函数。值得注意的是,这会在策略和奖励函数之间建立一种双射关系,这可以被用于消除内部优化。通过重新排列这个解,可将奖励函数写成:图片

此外,之前有研究表明这种重新参数化可以表示任意奖励函数。于是,通过代入到 (3) 式,可以将变量 r 变成 π,从而得到 DITTO 目标:图片

请注意,类似于 DPO,这里是隐式地估计奖励函数。而不同于 DPO 的地方是 DITTO 依赖一个在线的偏好数据集 D^π。

为什么 DITTO 比仅使用 SFT 好?

DITTO 表现更好的一个原因是:通过生成比较数据,其使用的数据量远多于 SFT。另一个原因是在某些情况下,在线模仿学习方法的表现会超过演示者,而 SFT 只能模仿演示。

实验结果

该团队也进行了实证研究,证明了 DITTO 的有效性。实验的具体设置请参阅原论文,我们这里仅关注实验结果。

基于静态基准的研究结果

静态基准的评估使用了 GPT-4,结果见表 1。

图片

平均而言,DITTO 胜过其它所有方法:在 CMCC 上平均胜率为 71.67%,在 CCAT50 上平均胜率为 82.50%;总体平均胜率为 77.09%。在 CCAT50 上,对于所有作者,DITTO 仅在其中一个上没有取得全面优胜。在 CMCC 上,对于所有作者,DITTO 全面胜过其中一半基准,之后是 few-shot prompting 赢得 3 成。尽管 SFT 的表现很不错,但 DITTO 相较于其的平均胜率提升了 11.7%。

用户研究:测试泛化到自然任务的能力

总体而言,用户研究的结果与在静态基准上的结果一致。DITTO 在对齐演示的偏好方面优于对比方法,如表 2 所示:其中 DITTO (72.1% 胜率) > SFT (60.1%) > few-shot (48.1%) > self-prompt (44.2%) > zero-shot (25.0%)。

图片

DITTO 在什么时候有用?

在使用 DITTO 之前,用户必须考虑一些前提条件,从他们有多少演示到必须从语言模型采样多少负例。该团队探索了这些决定的影响,并重点关注了 CMCC,因为其覆盖的任务超过 CCAT。此外,他们还分析了演示与成对反馈的样本效率。

算法扰动

该团队对 DITTO 的组件进行了消融研究。

如图 2(左)所示,增加 DITTO 的迭代次数通常可以提升性能。

图片

可以看到,当迭代次数从 1 次提升到 4 次,GPT-4 评估的胜率会有 31.5% 的提升。这样的提升是非单调的 —— 在第 2 次迭代时,性能稍有降低(-3.4%)。这是因为早期的迭代可能会得到噪声更大的样本,从而降低性能。另一方面,如图 2(中)所示,增加负例数量会使 DITTO 性能单调提升。此外,随着采样的负例增多,DITTO 性能的方差会下降。

图片

另外,如表 3 所示,对 DITTO 的消融研究发现,去掉其任何组件都会导致性能下降。

比如如果放弃在线方式的迭代式采样,相比于使用 DITTO,胜率会从 70.1% 降至 57.3%。而如果在在线过程中持续更新 π_ref,则会导致性能大幅下降:从 70.1% 降至 45.8%。该团队猜想其原因是:更新 π_ref 可能会导致过拟合。最后,我们也能从表 3 中看到重放和策略间比较数据的重要性。

样本效率

DITTO 的一大关键优势是其样本效率。该团队对此进行了评估,结果见图 2(右);同样,这里报告的是归一化后的胜率。

首先可以看到,DITTO 的胜率一开始会快速提升。在演示数量从 1 变成 3 时,每次增加都会让归一化性能大幅提升(0% → 5% → 11.9%)。

但是,当演示数量进一步增加时,收益增幅降低了(从 4 增至 7 时为 11.9% → 15.39%),这说明随着演示数量增加,DITTO 的性能会饱和。

另外,该团队猜想,不止演示数量会影响 DITTO 的性能,演示质量也会,但这还留待未来研究。

成对偏好与演示相比如何?

DITTO 的一个核心假设是样本效率源自于演示。理论上讲,如果用户心中有一套完美的演示集合,通过标注许多成对的偏好数据也能实现类似的效果。

该团队做了一个近似实验,使用从指令遵从 Mistral 7B 采样的输出,让一位提供了用户研究的演示的作者也标注了 500 对偏好数据。

总之,他们构建了一个成对的偏好数据集 D_pref = {(x, y^i , y^j )},其中 y^i ≻ y^j。然后他们计算了采样自两个模型的 20 对结果的胜率情况 —— 其一是使用 DITTO 在 4 个演示上训练的,其二是仅使用 DPO 在 {0…500} 偏好数据对训练的。

图片

当仅从 π_ref 采样成对偏好数据时,可以观察到生成的数据对位于演示的分布外 —— 成对的偏好不涉及用户演示的行为(图 3 中 Base policy 的结果,蓝色)。即使当他们使用用户演示对 π_ref 进行微调时,仍然需要超过 500 对偏好数据才能比肩 DITTO 的性能(图 3 中 Demo-finetuned policy 的结果,橙色)。

读者福利:如果大家对大模型感兴趣,这套大模型学习资料一定对你有用

对于0基础小白入门:

如果你是零基础小白,想快速入门大模型是可以考虑的。

一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以根据这些资料规划好学习计划和方向。

资源分享

图片

大模型AGI学习包

图片

图片

资料目录

  1. 成长路线图&学习规划
  2. 配套视频教程
  3. 实战LLM
  4. 人工智能比赛资料
  5. AI人工智能必读书单
  6. 面试题合集

人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取

1.成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图&学习规划。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

图片

2.视频教程

很多朋友都不喜欢晦涩的文字,我也为大家准备了视频教程,其中一共有21个章节,每个章节都是当前板块的精华浓缩

图片

3.LLM

大家最喜欢也是最关心的LLM(大语言模型)

图片

人工智能\大模型入门学习大礼包》,可以扫描下方二维码免费领取

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1899098.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

防勒索病毒袭击,及时定期备份势在必行——易备防勒索备份成功案例

上海某贸易有限公司是于 2010 年 6 月在上海成立的全日资企业&#xff0c;注册资金一亿日元。总公司位于日本东京&#xff0c;从事独立开发制造和销售使用纯天然的植物制成的化妆品、健康食品、日用小商品。 该公司使用用友优普 U8 供应链及电商系统&#xff0c;该系统部署于阿…

CV02_超强数据集:MSCOCO数据集的简单介绍

1.1 简介 MSCOCO数据集&#xff0c;全称为Microsoft Common Objects in Context&#xff0c;是由微软公司在2014年推出并维护的一个大规模的图像数据集&#xff0c;旨在推动计算机视觉领域的研究&#xff0c;尤其是目标识别、目标检测、实例分割、图像描述生成等任务。该数据集…

什么是OSPFv2 ?

什么是OSPF ? 开放式最短路径优先 OSPF&#xff08;Open Shortest Path First&#xff09;是IETF组织开发的一个基于链路状态的内部网关协议&#xff08;Interior Gateway Protocol&#xff09;。 目前针对IPv4协议使用的是OSPF Version 2&#xff08;RFC2328&#xff09;&a…

CAN总线(上)

CAN总线&#xff08;Controller Area Network Bus&#xff09;控制器局域网总线 CAN总线是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线&#xff0c;广泛应用于汽车、嵌入式、工业控制等领域 CAN总线特征&#xff1a; 两根通信线&#xff08;…

mars3d加载wms服务或者wmts服务注意事项

1.wms只支持4326、3857、4490的标准切片&#xff0c;其他坐标系不支持 Mars3D三维可视化平台 | 火星科技 2.wmts同理&#xff0c;Mars3D三维可视化平台 | 火星科技 3.对应级别tilematrix找到的瓦片tilerow&tilecol这两个参数使用常见报错无效参考&#xff1a; 【Mars3d】…

JAVA 八大warrp包装类

一、介绍 二、自动拆箱与手动拆箱 //jdk5前是手动装箱和拆箱//手动装箱 int -> Integerint n1 100;Integer integer new Integer(n1);//只要new就shibuInteger integer1 Integer.value0f(n1)//手动拆箱//Integer -> intint i integer.intValue(); ​//jdk5后&#xff…

源代码防泄漏之反向沙箱方案的经验分享

反向沙箱&#xff08;Reverse Sandbox&#xff09;是一种安全技术&#xff0c;主要用于检测和分析恶意软件的行为。与传统沙箱不同&#xff0c;反向沙箱的重点在于模拟恶意软件的预期运行环境&#xff0c;以诱导恶意软件展示其真实行为。这种技术可以帮助安全专家更深入地理解恶…

Leaflet【六】绘制交互图形、测量、经纬度展示

本文主要探讨了如何利用leaflet-draw插件在地图上绘制图形&#xff0c;以及通过leaflet-measure测量距离和面积&#xff0c;并将经纬度绘制到地图上。首先&#xff0c;我们使用leaflet-draw插件&#xff0c;该插件提供了一种简单而直观的方式来绘制各种形状&#xff08;如点、线…

【K8s】专题六(4):Kubernetes 稳定性之初始化容器

以下内容均来自个人笔记并重新梳理&#xff0c;如有错误欢迎指正&#xff01;如果对您有帮助&#xff0c;烦请点赞、关注、转发&#xff01;欢迎扫码关注个人公众号&#xff01; 目录 一、基本介绍 二、主要特点 三、资源清单&#xff08;示例&#xff09; 一、基本介绍 初…

C电池 和 D 电池的作用和类型详解及其之间的区别

C 和 D 电池是我们日常生活中必不可少的部件。它们通常用于高功率设备。例如手电筒和玩具。 D 型电池和 C 型电池是两种常见的电池类型。它们是一次性圆柱形电池。您可以在很多设备上使用它们。虽然它们有很多相似之处&#xff0c;但它们也有不同的特点。这些特点使它们适合某…

Redis 多数据源自定义配置 Spring Boot 升级版

文章目录 1.前言2.git 示例地址3.需求4.代码实现4.1 application.properties 配置文件4.2 获取 application.properties 中的 redis 配置4.2.1 Environment 对象来获取自定义 redis 配置 4.3 初始化 RedisTemplate 对象&#xff0c;并注册到 Spring IOC 容器4.3.1 初始化方法4.…

Python函数语法详解(与C++对比学习)【未完】

一、Python函数的形式 def function_name (参数, ...) -> return value_type:# 函数体return value# 看具体需求# 如果没有return语句&#xff0c;函数执行完毕后也会返回结果# 只是结果为None。return None可以简写为return 1. Python的返回值 在Python3中&#xff0c;提…

新手教师经常会遇到的问题

教育是塑造未来的关键力量&#xff0c;而教师则是这一过程中不可或缺的角色。然而&#xff0c;对于新手教师来说&#xff0c;步入教育行业往往伴随着一系列挑战。本文将探讨新手教师在职业生涯初期可能遇到的一些常见困难&#xff0c;并提供一些应对策略。 教学准备的挑战 新手…

improved-diffusion-main代码理解

目录 一、 TimestepEmbedSequential二、PyTorch之Checkpoint机制三、AttentionBlock四、use_scale_shift_norm 和nanoDiffusion-main相比&#xff0c;improved-diffusion-main代码是相似的&#xff0c;但有几个不是很好理解的地方记录一下。 一、 TimestepEmbedSequential 代码…

栈复用(覆盖栈上的有用数据)

栈复用&#xff08;覆盖栈上的有用数据&#xff09; 程序给的输入长度&#xff0c;不够溢出 到返回值&#xff0c;甚至都 不到bp位置 &#xff0c;这是要考虑覆盖之前函数(或当前函数)的栈上的有用数据&#xff0c;任何利用 程序后续函数调用 时要利用该位置上的数据&#xff…

机器人具身智能Embodied AI

强调智能体&#xff08;如机器人&#xff09;通过物理身体在物理世界中的实时感知、交互和学习来执行任务。 通过物理交互来完成任务的智能系统。它由“本体”&#xff08;即物理身体&#xff09;和“智能体”&#xff08;即智能核心&#xff09;耦合而成&#xff0c;能够在复…

《HIRI-ViT: Scaling Vision Transformer with High Resolution Inputs》解读

期刊&#xff1a;TPAMI 年份&#xff1a;2024 摘要 视觉Transformer(ViT)和卷积神经网络(CNN)的混合深度模型已经成为一类强大的视觉任务骨干。扩大这种混合主干网的输入分辨率自然会增强模型的能力&#xff0c;但不可避免地要承受二次扩展的沉重计算成本。相反&#xff0c;…

SQL索引事务

SQL索引事务 索引 创建主键约束(primary key),唯一约束(unique),外键约束(foreign key)时,会自动创建对应列的索引 1.1 查看索引 show index from 表名 现在这个表中没有索引,那么我们现在将这几个表删除之后创建新表 我们现在建立一个班级表一个学生表,并且学生表与班级表存…

高速PCB设计Tips

在进行原理图输入过程中&#xff0c;需要注意将设计分解为功能块&#xff0c;将所有相关组件放在同一页。例如&#xff0c;以太网相关的组件&#xff0c;通常运行在50MHz或更高频率&#xff0c;在原理图设计中应集中在同一页。清晰标记高速连接和电源连接。差分信号和单端阻抗控…

免费分享:中国三级及以上河流(附下载方法)

河流分级法的分级方法是从源头最小河流开始,称为一级河流;两条一级河流汇合成二级河流;以此类推,三级河流等等;最后是干流。本文将介绍中国三级及以上河流数据。 数据简介 1:100万中国三级及以上河流矢量数据是涵盖了全国范围内三级及以上级别河流的详细地理信息和空间分布。这…