我自己的原文哦~ https://blog.51cto.com/whaosoft/13083433
#Agile But Safe
足式机器人领域又一次迎来创新!CMU 与 ETH Zurich 团队联合研发了一个名为 「敏捷但安全」(ABS,Agile But Safe)的新框架,为四足机器人在复杂环境中实现高速运动提供了解决方案。ABS 不仅在避免碰撞方面展现出高效能力,还在极速上达到了前所未有的 3.1 米秒!
在高速机器人运动领域,实现同时兼顾速度和安全一直是一大挑战。但现在,卡内基梅隆大学(CMU)和苏黎世联邦理工学院(ETH)的研究团队带来了突破性进展。他们开发的新型四足机器人算法,不仅能在复杂环境中高速行进,还能巧妙避开障碍,真正做到了「敏捷而安全」。
论文地址: https://arxiv.org/pdf/2401.17583.pdf
在 ABS 的加持下,机器狗在各种场景下都展现出了惊艳的高速避障能力:
障碍重重的狭窄走廊:
凌乱的室内场景:
无论是草地还是户外,静态或动态障碍,机器狗都从容应对:
遇见婴儿车,机器狗灵巧躲闪开:
警告牌、箱子、椅子也都不在话下:
ABS 突破性技术:
RL+ Learning model-free Reach-Avoid value
ABS 采用了一种双策略(Dual Policy)设置,包括一个「敏捷策略」(Agile Policy)和一个「恢复策略」(Recovery Policy)。敏捷策略让机器人在障碍环境中快速移动,而一旦 Reach-Avoid Value Estimation 检测到潜在危险(比如突然出现的婴儿车),恢复策略就会介入,确保机器人安全。
创新点 1:怎么训练一个敏捷策略 Agile Policy?
敏捷策略的创新之处在于,与以往简单地追踪速度指令不同,它采用目标达成(position trakcing)的形式来最大化机器人的敏捷性。这一策略训练机器人发展出感知运动技能,以在没有碰撞的情况下达到指定目标。通过追求基座高速度的奖励条件,机器人自然学会在避免碰撞的同时实现最大敏捷性。这种方法克服了传统速度追踪(velocity tracking)策略在复杂环境中可能的保守限制,有效提高了机器人在障碍环境中的速度和安全性。Agile Policy 在实机测试中极速达到了 3.1m/s
创新点 2:学习 Policy-conditioned reach-avoid value
「达防」(Reach-Avoid, RA)值学习的创新之处在于,它采用了无模型的方式学习,与传统的基于模型的可达性分析方法不同,更适合无模型的强化学习策略。此方法不是学习全局 RA 值,而是使其依赖于特定策略,这样可以更好地预测敏捷策略的失败。通过简化的观测集,RA 值网络可以有效地概括并预测安全风险。RA 值被用于指导恢复策略,帮助机器人优化运动以避免碰撞,从而实现在保证安全的同时提高敏捷性的目标。
下图展示了针对特定障碍物集合学习到的 RA(达防)值。随着机器人速度的变化,RA 值的分布景观也相应变化。RA 值的符号合理地指示了敏捷策略的安全性。换句话说,这张图通过不同的 RA 值展示了机器人在不同速度下,面对特定障碍物时的安全风险程度。RA 值的高低变化反映了机器人在不同状态下执行敏捷策略时可能遇到的安全风险。
创新点 3:用 Reach-Avoid Value 和恢复策略来拯救机器人
恢复策略的创新之处在于,它能使四足机器人快速追踪线速度和角速度指令,作为一种备用保护策略。与敏捷策略不同,恢复策略的观测空间专注于追踪线速度和角速度命令,不需要外部感知信息。恢复策略的任务奖励专注于线性速度追踪、角速度追踪、保持存活和保持姿势,以便平滑切换回敏捷策略。这种策略的训练同样在仿真环境中进行,但有特定的域随机化和课程设置,以更好地适应可能触发恢复策略的状态。这种方法为四足机器人提供了在高速运动中快速应对潜在失败的能力。
下图展示了当恢复策略在两个特定情况(I 和 II)下被触发时,RA(达防)值景观的可视化展示。这些可视化展示是在 vx(沿 x 轴的速度)与 ωz(绕 z 轴的角速度)平面以及 vx 与 vy(沿 y 轴的速度)平面上进行的。图中显示了搜索前的初始旋转状态(即机器人基座当前的旋转状态)和通过搜索得到的命令。简单来说,这些图表展示了在特定条件下,通过恢复策略搜索得到的最佳运动指令,以及这些指令如何影响 RA 值,从而反映机器人在不同运动状态下的安全性。
鲁棒性测试
作者在「12kg 负载 / 篮球撞击 / 脚踢 / 雪地」的四个场景下测试了 ABS 框架的鲁棒性,机器狗都从容应对
#Weight Decay
Weight Decay 是一个整个 AI 圈人人都用,却几乎无人多想的算法。
即便在这个大模型时代,它还是那么的有用,却又那么的朴实无华。
即便是在机器学习理论圈,研究过Weight Decay机制的人也是少数派。
在下正是其中之一。
前世今生:三种Weight Decay
先说说 Weight Decay 的起源。
其实现在大家常说的Weight Decay至少有三种不同的形式。只是由于Weight Decay这个名词的滥用,大家都在不同的场合称Weight Decay。
第一种“Weight Decay”,也就是当前PyTorch/TensorFlow/Paddle等深度学习框架里optimizer的默认Weight Decay其实是L2 Regularization。在SGD里可以写成下面这种形式:
好吧,很容易看出来,对于SGD来说,上面两种形式是等价的。这也是为什么L2 Regularization会滥用Weight Decay这个名字。
但更复杂的优化器,比如SGD Momentum或Adam,会使用动量(Momentum)和自适应学习率(Adaptive Learning Rate)等方法。这些实际上大家最常用的优化器里,没有一个是能让上面两种形式正好等价的。
Adam (with L2 Regularization)和AdamW (with Decoupled Weight Decay)这两个大模型训练最常用的两个优化器实际上只有weight decay的形式不同。但是他们的性能差异大到以至于分成了两个名字不同的优化器。为什么会这样,我们下文再专门说。
第三种“Weight Decay”,也就是在训练神经网络时专门被提出来的原始Weight Decay,来自一篇1989年的NeurIPS论文。在SGD里可以写成下面这种形式:
哪种 Weight Decay 更好
其实第三种Weight Decay是一种已经被淘汰的Weight Decay形式。虽然深度学习框架的开发者们可能没有专门研究过这个问题,但实际上和学习率解耦确实不如第二种形式。这是因为对于第三种Weight Decay来说,在学习衰减得比较小的训练末期,Weight Decay的强度总是太大了。我们很容易在实验里观察到第三种Weight Decay的缺陷。
第一种的L2 Regularization仍然在当前的深度学习框架流行;而第二种的Decoupled Weight Decay几乎只在AdamW等少量优化器里有官方实现。这个现状并不好。
对于一些优化器,比如SGD(Momentum)等,L2 Regularization和Decoupled Weight Decay的性能并不是很大。但每当L2 Regularization和Decoupled Weight Decay差别很大时,几乎总是Decoupled Weight Decay显著地比L2 Regularization好。这几乎发生在所有自适应优化器上。
所以更好的原则是把Decoupled Weight Decay作为Weight Decay的默认实现,把L2 Regularization作为备选。
为什么PyTorch/TensorFlow等框架还没这样做?这个可能是因为深度学习框架滥用名词Weight Decay指代L2 Regularization造成的一个历史遗留问题...
Weight Decay的隐藏缺陷
那么Weight Decay的故事就这么结束了吗?
不然,上面这些其实只是我组NeurIPS2023论文的一个motivation。
Weight Decay还有挺严重的隐藏缺陷未被发现,这才是这个工作的主要贡献。
如果一个这么常用的算法还有严重的缺陷,那这个缺陷确实藏得挺深。
这件事说起来也有点离谱。我第一次得到前文两个部分的motivation已经是3年前的事了。但深度学习理论的论文并不多了,所以一直也没有其他人把Weight Decay的这些特点说不清。对于第三种Weight Decay为什么比第二种Weight Decay差那么多,我一直没有得到一个比较完整的理论解释...
直到去年终于有空搞点基础研究(在大厂做研究员确实难得有机会做基础研究),心血来潮做了一个实验,把Gradient Norm随着训练过程的变化可视化出来。
ResNet18在CIFAR-10训练时的Gradient Norm曲线。Gradient Norm会随着Weight Decay增加而显著增加。
好的。如果你有优化理论和泛化理论的基础,那么应该一下就能看出来Weight Decay它确实有点大毛病了!
实验呈现出一个违背传统认知的现象——Gradient Norm会随着Weight Decay增加而显著增加。
这个现象至少从三个角度来说,都是和传统的理解是不相符的。
- 优化角度。Large Gradient Norms说明训练算法的收敛性变成很差,因为gradient norm的大小就是收敛性最常见的指标。
- 泛化角度。Large Gradient Norms说明训练得到的权重泛化性很差,因为gradient norm的大小也是泛化界常见的度量之一。
- 正则化角度。Large Gradient Norms说明训练得到的权重复杂性变高了。而传统上,大家认为Weight Decay是通过正则化作用降低神经网络复杂性,提高泛化能力。而事实竟然正好相反。
从这三个角度来说,Weight Decay都大有问题。这也再次说明,在深度学习里,很多传统理解都是很粗浅的、适用范围狭窄的。关于这三点,我们的论文里提供了分析和参考文献。
其实到这部分分析出来,我们这个工作所发现的东西就很清晰了。
然后花了一天时间把Gradient Norm 的Upper Bound和Lower Bound都和Weight Decay强度正相关的理论证明了一下,算是把Weight Decay过去被忽略的关于gradient norm理论补全了。我们理论也发现这些缺陷在自适应优化器里尤为突出。这部分都是一个理论性论文里的程序性技术工作。
弥补 Weight Decay 的缺陷
我们的工作也设计了一个算法Scheduled Weight Decay来弥补Weight Decay的缺陷,也就是使用Weight Decay的时候,同时可以抑制Gradient Norm。这个方法思想上也很简单——Gradient Norm太大的时候就让Weight Decay强度小一点,Gradient Norm太小的时候就让Weight Decay强度大一点、发挥作用。
如下图所示,我们这个算法AdamS (Adam with Scheduled Weight Decay)的确很好地完成了抑制Gradient Norm的作用。
Scheduled Weight Decay比Constant Weight Decay显著降低训练末期的Gradient Norm。
同时,在下图我们还能看到Weight Decay增加时找到了更sharp的minima(top Hessian eigenvalues增大),这通常意味着泛化性能不好。而Scheduled Weight Decay找到了比Constant Weight Decay更flat的minima(top Hessian eigenvalues明显变小)。
好的,那么这个工作的理论、算法、实验都具备了。
这是科普blog,不是关于论文的中文翻译。到这里,我觉得就可以恰到好处的结束了。更多技术细节看论文就好。
关于应用研究和理论研究的一些想法
一些审稿人会把我们这个算法当作最主要的贡献,这说明这部分审稿人始终是在从Engineering的角度来看待我们这个工作的。AI是一个机器,只要能work得更好,那就是研究的全部。
应用研究的主(quan)要(bu)哲学——那确实就是work得更好就行。带实习生做Neural Fields方向的应用研究最近半年也分别在ICCV2023和ICLR2024一投即中。只要性能好了,基本上就没有遇到过负分的审稿人。老实说,这种对性能的朴素追求,确实有一点朴实无华...
但包括我在内的部分理论研究者一般更愿意把AI当作一个客观的研究对象。这种研究视角可以叫做Science of AI。包括Sébastien Bubeck在内的部分理论研究者一般是把AI当作一个客观的研究对象,也就是我们主要是在做科学发现。偶尔,这些科学发现能促进更好的机器的诞生。微软AI理论研究的带头人Sébastien Bubeck在他的主页(Sébastien Bubeck)称在大模型的时代背景下更近一步把自己的研究定位为Physics of AGI。
研究神经网络和研究玻色爱因斯坦凝聚差别真的很大吗?并不,他们肯定要服从某些真理。渐进地逼近真理就是新的科学。
我们另外一篇NeurIPS2023其实也是科学发现型的论文,和一位物理系任教的朋友第一天讨论idea做实验,然后第二天就在神经网络里发现了我们预言的实验结果。这种并不会出现在论文里的故事,可以留待下回写blog时介绍。
我个人觉得这篇文章最大的贡献其实是定位Weight Decay的隐藏缺陷上,算法只是自然而然的副产品罢了。这个工作也是在理论发现完成后立刻被接收了,而不是在算法和实验的时候(很早就在Github上开源这个Weight Decay算法了)。而Scheduled Weight Decay也必然不是解决Weight Decay隐藏缺陷的最终答案。因为它解决的是Gradient Norm的问题,而不是全部的问题。Weight Decay仍然还有我们不理解的问题。
论文:On the overlooked pitfalls of weight decay and how to mitigate them: A gradient-norm perspective
算法:stable-weight-decay-regularization: [NeurIPS 2023]
#RLHF 常见的思维误区
本文探讨了在学习和实践强化学习人类反馈(RLHF)时常见的思维误区,强调了RLHF与PPO等强化学习算法的区别,并讨论了RLHF中的一些常见技巧,如重要性采样和Critic模型的使用。
今天给大家带来一篇好友知乎@ybq的文章,主要分享在学习和实践 RLHF 时,曾经陷入过的一些思维误区。
知乎:https://zhuanlan.zhihu.com/p/17657567877
本文分享下我在学习和实践 RLHF 时,曾经陷入过的一些思维误区。这些误区的产生大多和我的强化基础知识理解不到位有关,我建议非强化出身的同学都耐心读读下面这些文章。
RLHF 圣经:
https://zhuanlan.zhihu.com/p/7461863937
RLHF 必读论文:
GAE: https://arxiv.org/pdf/1506.02438
PPO: https://arxiv.org/pdf/1707.06347
RLHF 代码流程(背景知识)
Input: prompt,sft_model,reward_model
Initialize: actor_model / ref_model = sft_model,critic_model / reward_model = reward_model
Training:
step1:生产计算 loss 的中间数据(每次 rollout_batch_size 条数据):
- actor_model generate,得到 prompt + response
- reward_model predict, 得到 reward,需要 clip 到一个区间内;
- reference_model / actor_model forward,得到两个 log_probs,分别是 和 ,计算 KL_penalty;
- critic_model forward,得到 values ,此处记作 ;
- reward - KL_penalty:得到修正后的 reward(此处是 reference_model 的生效位置);
- reward 和 values 反传,利用 PPO 论文中的计算公式,得到 advantages 和 returns(此处是 GAE 的生效位置)。
step2:更新 loss(每次 train_batch_size 条数据,反复调用,直到 step1 的数据用尽):
- actor_model forward,又得到一个 log_probs,这里的 actor_model 是 ,与 step1 中得到的 和 advantages 一起计算 loss(此处是 Importance Sampling 和 CLIP 的生效位置);
- actor_model backward;
- critic_model forward,又得到一个 values,此处记作 v,与 step1 中得到的的 和 returns 一起计算 loss,引入 进行 clip,防止 critic_model 的更新幅度太大;
- critic_model backward。
RLHF 训练流程的难点主要集中在以下几个问题:
- PPO 的处理技巧:CLIP,GAE,Importance Sampling
- advantages 和 returns 是怎么计算得到的?
- 凭什么 advantages 和 returns 可以作为 actor_model 和 critic_model 的优化目标?
- 整个训练过程为什么存在三个 policy 模型:
回答不上来的同学建议好好读下前面推荐的文章,然后死磕下 OpenRLHF 的源码。
RLHF 不等于 PPO
RLHF 的含义是“通过强化学习的训练方式,利用人类反馈来优化语言模型”,其和 PPO 是不能完全划等号的,二者的区别主要在于:
- PPO 仅仅是 OpenAI 最喜欢的强化学习训练方法,其他强化学习训练方法也可以;
- Critic_model 是 PPO 需要的模块,并非 RLHF 必备模块,如果 RL 算法是 actor-critic 系列,那么就会引入 critic_model,如果是 REINFORCE 系列,那么就可以省掉 critic_model;
- Reference_model 是 RLHF 提出的概念,目标是防止语言模型在训练中崩溃,和 PPO 没有任何关系;
- Reward_model 也是 RLHF 提出的概念,目标是自动生产训练数据,同样和 PPO 没有关系,其他生产数据的方法(比如 verifier )也可以。
这也就是说,虽然我们熟知的 RLHF 是 4 个模型组成的,但实际上只需要准备好一个微调后的 sft_model 即可启动,毕竟 reference_model 与 sft_model 是同一个模型,critic_model 和 reward_model 并非必备模块。
一言以概之,RLHF = LLM + 任意 RL 算法 + 数据打分工具。
RL 的常用技巧并非 RLHF 必备
强化学习和传统监督学习一个很大的区别就是“训练数据是当场采集出来的”,一边训模型,一边造数据。在传统的强化学习任务中,训练数据的生产是很困难的,比如下完一盘围棋、打完一盘马里奥游戏 …… 往往是十几分钟产生一条训练数据(trajectory),但不到一秒就训完了。然而,在 RLHF 的场景下,训练数据还真就不难生产,生产 1 条 repsonse 和训练 1 条 response 还真不一定谁更快(不过 1 次生产 N 条 response 确实快于 N 次生产 1 条 response)。
下面我就围绕重要性采样这一技巧来展开讲讲。RL 算法引入重要性采样这一概念,其目的是:可以一次性生产多条数据,或者说让生产的数据可以反复使用。
这里,有同学会疑惑为什么“生产的数据能反复使用”还需要特殊处理,这不是天经地义的吗?问题出就出在我们想进行的是 on-policy 的训练方法。假设我用 llm 生产了两条 response,训练完第 1 条 response 后,我便会得到一个 llm_1,此时这个 llm_1 根本就说不出来第 2 条 response,那么第 2 条数据原则上就不能再使用了,硬要使用就需要引入重要性采样。
此外,重要性采样还有稳定训练的作用,引用一下 知乎@猛猿 的科普:由于采样具有随机性,on-policy 算法采样出的 bacth 可能会把 actor 往错误的方向更新。比较谨慎的想法是,每次更新不要离 actor_old 太远(在信任域内)。那实现这个想法的方式之一,就是我拿 old 产出一波数据,分成 K 份,吃每份做更新时,我去参考 old 的结果调整更新方向,相当于 new 在 old 上做了 K 次验证,使得整个过程有“探索-利用”的意味,这也就是 PPO 前身 TRPO 的初衷。
重要性采样有一个重大缺陷:当 p(x) 和 q(x) 差异较大时,需要通过足够多的采样来抵消这种差异对期望的最终影响,可以执行这段代码自行体验,采样少了就是不准。
import numpy as np
import matplotlib.pyplot as plt
from math import sqrt, pi, exp
np.random.seed(1234)
mu_p, sigma_p = -0.5, 0.5
def p(x):
return 1/(sqrt(2*pi)*sigma_p) * exp(-((x - mu_p)**2)/(2*sigma_p**2))
mu_q, sigma_q = 1.5, 0.8
def q(x):
return 1/(sqrt(2*pi)*sigma_q) * exp(-((x - mu_q)**2)/(2*sigma_q**2))
def f(x):
return 1 / (1 + exp(-x)) - 0.5
xs = np.linspace(-3, 3, 200)
pxs = [p(x) for x in xs]
qxs = [q(x) for x in xs]
fxs = [f(x) for x in xs]
plt.figure(figsize=(8,4))
plt.plot(xs, pxs, label='$p(x)$', color='blue')
plt.plot(xs, qxs, label='$q(x)$', color='green')
plt.plot(xs, fxs, label='$f(x)$', color='red')
plt.ylim(-0.5, 1)
plt.legend()
plt.title('Importance Sampling')
plt.show()
samples = np.random.normal(loc=mu_p, scale=sigma_p, size=1000000)
mean_fp = np.mean([f(x) for x in samples])
print(f'在p(x)上采样,期望为:{mean_fp}')
samples = np.random.normal(loc=mu_q, scale=sigma_q, size=1000000)
mean_fq = np.mean([f(x) for x in samples])
print(f'在q(x)上采样,期望为:{mean_fq}')
for size in [10 ** i for i in range(0, 8)]:
samples = np.random.normal(loc=mu_q, scale=sigma_q, size=size)
mean_is = np.mean([p(x) / q(x) * f(x) for x in samples])
print(f"采集{str(size).zfill(8)}个样本点之后,重要性采样的期望为:{mean_is}")
重要性采样
言归正传,RLHF 虽然也是 on-ploicy 训练,但我们却不需要太过于依赖重要性采样。
先普及两个 RLHF 算法中的重要参数:rollout_batch_size 和 train_batch_size,前者代表一次性生成多少条训练数据(response 和 reward),后者代表每次用多少条数据来更新模型,前者是后者的 N 倍。
随着训练框架的不断优化, RLHF 的训练数据并没有那么难生产了,尤其是像 OpenRLHF 这种框架,引入了 vllm 来生产 response,效率极高。我们完全可以令 N = 1 / 2 / 4 这种很小的值,且每条训练数据仅使用一次。事实上,由于重要性采样需要大量样本才能做到无偏替代,这个 N 值还真不能很大,越大就越容易训崩。
一个比较坑的点是,OpenRLHF 在 forward 计算 log_probs 时,micro_batch_size 取不同的值会导致计算结果也不同。这并不怎么影响模型训练,但是会在 debug 的时候让人疑惑,为什么重要性采样的 ratio 最初不是 1 呢?下图里的 old_action_log_probs 是 batch=1 计算所得,action_log_probs 是 batch=2 计算所得
batch_size 不同,结果不同
综上,RL 的很多技巧,是围绕着“训练数据不好生产”,“训练数据量太少”,“训练数据波动太大”,“训练数据分布不均”等出发点提出的。在 RLHF 中使用这些技巧的时候,不妨多思考一下:语言模型场景下是否也有这些痛点?例如,PPO 的 clip 操作,会导致这条数据没有梯度,这条训练数据就起不到贡献了。真的必须这样吗?我能不能换一种 clip 操作,既 clip 了又能保留梯度,说不定就更适合 LLM 的训练呢?
省去 Critic model 未必更好
作为一个 NLPer,我在学习 RLHF 的时候,是先学 PPO,再接触 GRPO、RLOO 等优化算法。这就导致我产生了一种思维误区:“PPO 的 critic model 让训练显得臃肿,省掉 critic model 的算法更好更先进”。
实际上,在 RL 算法的发展史上,是先有 REINFORCE 这种没 critic model 的算法,因为效果不佳或训练不稳定,才出现了 PPO 这种有 critic_model 的算法。因此,GRPO、RLOO 这种省略 critic_model 的 RLHF 算法,它们本质上都是 REINFORCE 算法的变种,而 PPO 则属于 Actor-Critic 算法的范畴。
在分析这些算法之前,我们先复习一下 GAE 这篇论文讲述的内容,熟悉的同学则可以跳过。
对我而言,GAE 这篇论文最大的贡献不在于 GAE 算法本身,而是下面这段内容背后的道理:策略梯度可以是任意形式的函数。
Policy Gradient
说的更直白点:强化学习的 policy_model 在优化的时候,其优化目标没有固定形式,make sense 即可:
- reward,可以
- reward - baseline,可以
- Q 函数,可以
- V 函数,可以
- Advantage 函数,可以
- TD-error,可以
- ……
这个优化目标的设计,就像是神经网络激活函数的选取一样,Relu 可以,0.5 * Relu 也可以,Relu + 0.5 还可以…… 只要保证你新设计的函数,其单调性和原来的函数是一样的,那就可以代替原函数。所以,不要去纠结为什么这么设计优化目标,只要能让模型收敛就是一个好的优化目标(大概率是为了稳定方差,让分布更加均匀)。
有了这个认知,我们就能把 policy-based rl 算法分为三类:
- REINFORCE:让采集到的 Reward 最大化来优化策略;
- REINFORCE with (constant) baseline:使用一个常数作为基线,将 Reward 减去该基线来优化策略;
- REINFORCE with learned baseline / Actor-Critic:使用一个学习得到的基线(例如值函数),将 Reward 减去该基线来优化策略。
PPO 就是第三种,用 Advantage 来优化策略, ,其中, 是通过样本的 Reward 和 共同估算出来的, 是 critic_model 估算出来的。Advantage 的实际计算过程,是通过 GAE 算法完成的,GAE 的动机是:Critic_model 可能不准(偏差大),采样的结果随机性又很大(方差大),因此在计算优势函数时引入一个参数 ,来控制是更相信实际采样得到的 Reward,还是更相信 Critic_model 的结果。 具体细节不再赘述了,大家详看猛猿小姐姐的圣经。
至于其他 RLHF 算法,无一例外都是第二种算法,寻找一个不用学习的 baseline,也就是:
下面简单展开说下每个优化算法的原理,公式取自每个算法的原论文,所以符号不是很一致。
REINFORECE++ :没有 baseline,引入所有 PPO 的 trick(初七大佬说 KL_penalty 是 baseline,但我更倾向于把 KL_penalty 看作是 Reward 的一种修正,毕竟其他 RLHF 算法都是既有 KL_penalty 又有 baseline):
RLOO(REINFORCE leave-one-out):一次生成多条 response,每条 response 用其他 response 的 Reward 均值作为 baseline:
GRPO(Group related policy Optimization):一次生成多条 response,每条 response 用所有 response 的 Reward 均值作为 baseline:
ReMAX(REINFORCE argmax):用 greedy decode 的结果作为 baseline:
关于 critic_model 的大背景终于说完了,可以开始讨论下到底能不能省掉 critic_model 了?
其实不太好说,critic_model 毕竟是一个 token 粒度的评估模型,能对 response 的中间过程起到一个很好的监控作用。但是大部分的 math 数据集,好像也不太在乎中间过程,结果对就是高 reward,结果错就是低 reward,这时候 critic_model 可能就没太大意义。
然而,就算 critic_model 本身没意义,也不代表说 RLOO / GRPO 算法可以更好的取代 PPO,这些算法强调的省去 critic_model 的显存只对算力稀缺的同学有意义。以 OpenRLHF 为例,ray 会把 critic_model 放在一台单独的机器上,只需要多加一台机器就不存在 OOM 的问题,而工业界做 RLHF 往往都是 4 / 8 / 10 / 20 机这样的资源数,不是很在乎 critic_model 占据的资源。反倒是生成多条 response,可能会严重降低训练速度。
所以,是否使用 GRPO / RLOO,出发点应该是目标任务是否需要一次性生成多个 response ,而不是要省资源,例如训 o1 可能就需要模型一次性生成多条 cot 路径。真正做到省资源且训得快的应该是 REINFORCE ++。
个人观点:各 RLHF 变种算法的论文,都论证了其算法相较于 PPO 的优异性,但其实未必公平。on-policy 的算法是很容易训崩溃的:采样数量不够,explore 到 reward model OOD 的样本,critic 和 actor 的收敛时机不 match 等很多细节都会让模型表现不佳。我总感觉 ablation study 的时候,一些工作只对自己提出的算法做了调参优化,而没有对 baseline 算法进行同等精力的调参。不过考虑另外一个角度,对参数的容错率高,可能也是某个算法的优势所在。只要能让自己的模型训练不崩溃,就是一个好的 RLHF 算法。
Reward_model 非必须
Reward_model 是很难训练的,如果 prompt 没有出现在 reward_model 的训练集合中,那它就是打不准,也就是 out of distribution。基本上可以认为,reward_model 只能给它见过的 prompt 进行较准确的打分。同理,如果见过一个 prompt,但是没见过相似的 response 且找不到判别的技巧,也会 OOD。就比如,小说生成创作任务,reward_model 不好训;作诗任务,可以通过判断韵脚来打分,reward_model 好训。
这也是为什么国内的 RLHF 普遍都是在 math / code 进行大量使用的原因之一,训练数据易于大量生产(结果是否正确,代码是否能执行),也就不太容易让 reward_model OOD。
因此用 verifier 取代 reward_model 就是一个训 RLHF 很好用的技巧:首先保证每一条 prompt 都有一个 gold_answer,然后 verifier 的职责就是信息抽取,判断 response 是否包含 gold_answer。这个任务是很简单的,一个 7B 左右的模型就能很好胜任,也基本不会 OOD (外接 GPT4o 作为 verifier 是一个很流行的做法)。generate_reward_model (通过 cot 来判断 response 的质量)则可以视为是一种没有 gold_answer 的 verifier,除了训练有点慢之外它没有缺点。
不过 verifier 也不全都是优点,它的输出结果毕竟是离散的,引用一下 知乎@真中合欢 说过的话:“RLHF 用 llm 做 verifier 直接产生奖励信号,或者直接使用基于规则的奖励信号也可以,这种叫做稀疏奖励,用 reward 的叫稠密奖励。深度学习一路走来的经验就是,稠密通常优于稀疏,soft 通常优于 hard。一般认为稠密,soft 的信号包含更多的信息。”
由于 Critic_model 是需要用 reward_model 进行初始化的,那我们没有 reward_model 怎么办,两个方案:
- 用上文介绍过的 GRPO / RLOO / ReMAX / REINFORCE++ 算法;
- OpenRLHF 代码中给的解决方案是:冻结 actor_model 一段时间,先让 critic_model 学习一段时间(actor-critic 算法中,两个模型是有对抗关系的,先保护一下不太准的 critic_model)。
前段时间炒的比较热的一个点是强化微调(RFT),其核心点总共两个,一个是 base 模型需要是 o1 这种有较强推理能力的模型,另一个就是用 verifier 来进行 RL 训练,来定向增强模型的领域能力。
写在最后
暂时就写到这里吧,后面意识到更多的思维误区我再更新。之前我以为我只要会用 trl / deepspeed-chat / OpenRLHF 这种开源 RLHF 框架进行训练就够了,基本只看了 PPO 相关的知识。事实证明这样是不对的,老老实实按照 RL 发展史的顺序去学习,搞懂 TD-error,GAE 这种基础概念,很多认知都会焕然一新的。
#data2vec
自监督学习能在各种任务中学习到分层特征,并以现实生活中可使用的海量数据作为资源,因此是走向更通用人工智能的一种途径,也是深度学习三巨头之一、图灵奖得主 Yann LeCun 一直推崇的研究方向。
LeCun 认为:相比于强化学习,自监督学习(SSL)可以产生大量反馈,能够预测其输入的任何一部分(如预测视频的未来画面),从而具有广泛的应用前景。
自监督学习通过直接观察环境来进行学习,而非通过有标签的图像、文本、音频和其他数据源进行学习。然而从不同模态(例如图像、文本、音频)中学习的方式存在很大差异。这种差异限制了自监督学习的广泛应用,例如为理解图像而设计的强大算法不能直接应用于文本,因此很难以相同的速度推动多种模态的进展。
现在,MetaAI(原 Facebook AI)提出了一种名为 data2vec 的自监督学习新架构,在多种模态的基准测试中超越了现有 SOTA 方法。
data2vec 是首个适用于多模态的高性能自监督算法。Meta AI 将 data2vec 分别应用于语音、图像和文本,在计算机视觉、语音任务上优于最佳单一用途算法,并且在 NLP 任务也能取得具有竞争力的结果。此外,data2vec 还代表了一种新的、全面的自监督学习范式,其提高了多种模态的进步,而不仅仅是一种模态。data2vec 不依赖对比学习或重建输入示例,除了帮助加速 AI 的进步,data2vec 让我们更接近于制造能够无缝地了解周围世界不同方面的机器。data2vec 使研究者能够开发出适应性更强的 AI,Meta AI 相信其能够在多种任务上超越已有系统。
- 论文地址:https://ai.facebook.com/research/data2vec-a-general-framework-for-self-supervised-learning-in-speech-vision-and-language
- 项目地址:https://github.com/pytorch/fairseq/tree/main/examples/data2vec
论文一作 Meta AI 研究员 Alexei Baevski 表示:我们发布了最新 SSL 方法 data2vec,与单独训练相比,我们在具有相同预训练任务的视觉、语音和 NLP 上获得了 SOTA。语音和文本的代码和模型已经发布,视觉模型代码即将到来!
即将成为 Meta CTO 的 Boz(领导 Reality Labs 团队的 AR、VR、AI、Portal 等)也发推表示:很高兴 data2vec 能够帮助为跨多种模态的、更通用的自监督学习铺平道路——这项工作还将对我们正在构建的 AR 眼镜开发情境化 AI 产生重大影响。
data2vec 是如何工作的?
大部分 AI 仍然基于监督学习,它只适用于具有标注数据的任务。但是,假如我们希望机器可以完更多的任务,那么收集所有的标注数据将变得不现实。例如,虽然研究人员在为英语语音和文本创建大规模标注数据集方面做了大量工作,但对于地球上成千上万的语言来说,这样做是不可行的。
自监督使计算机能够通过观察世界,然后弄清楚图像、语音或文本的结构来了解世界。不需要专门训练就能对图像进行分类或理解语音的机器,其扩展性也会大大提高。
data2vec 训练方式是通过在给定输入的部分视图的情况下预测完整输入模型表示(如下动图所示):首先 data2vec 对训练样本的掩码版本(学生模型)进行编码,然后通过使用相同模型参数化为模型权重的指数移动平均值(教师模型)对输入样本的未掩码版本进行编码来构建训练目标表示。目标表示对训练样本中的所有信息进行编码,学习任务是让学生在给定输入部分视图的情况下预测这些表示。
data2vec 以相同的方式学习图像、语音和文本。
模型架构
Meta AI 使用标准的 Transformer 架构(Vaswani 等人,2017):对于计算机视觉,Meta AI 使用 ViT 策略将图像编码为一系列 patch,每个 patch 跨越 16x16 像素,然后输入到线性变换(Dosovitskiy 等人, 2020;Bao 等人,2021)。语音数据使用多层 1-D 卷积神经网络进行编码,该网络将 16 kHz 波形映射到 50 Hz 表示(Baevski 等人,2020b)。对文本进行预处理以获得子词(sub-word)单元(Sennrich 等人,2016;Devlin 等人,2019),然后通过学习的嵌入向量将其嵌入到分布空间中。
data2vec 还可以为不同模态预测不同的单元:图像的像素或视觉 token、文本的单词以及语音的学习清单。像素的集合与音频波形或文本段落非常不同,因此,算法设计与特定的模态紧密联系在一起。这意味着算法在每种模式下的功能仍然不同。
掩码:在输入样本作为 token 序列嵌入后,Meta AI 用学习的掩码嵌入 token 替换掩码单元的一部分,并将序列馈送到 Transformer 网络。对于计算机视觉,Meta AI 遵循 Bao 等人的分块掩码(block-wise)策略;对于语音,Meta AI 掩码潜在语音表示的跨度 ;对于语言,Meta AI 使用掩码 token 。
训练目标:Meta AI 预测的表示是上下文表示,不仅对特定的时间步长进行编码,还对来自样本的其他信息进行编码,这是由于在 Transformer 网络中使用了自注意力,这是与 BERT、wav2vec 2.0 或 BEiT、MAE、SimMIM 和 MaskFeat 重要区别,这些预测目标缺乏上下文信息。
面向多种模态:data2vec 通过训练模型来简化其方法,以预测输入数据的表征。没有预测视觉 token、词、声音等的方法,而是专注于预测输入数据的表征,单个算法就可以处理完全不同类型的输入。这消除了学习任务中对特定模态目标的依赖。
直接预测表征并不简单,它需要为任务定义一个稳健的特征归一化,以对不同的模态都是可靠的。该研究使用教师网络首先从图像、文本或语音中计算目标表征。然后掩码部分输入并使用学生网络重复该过程,然后预测教师网络的潜在表征。即使只能查看部分信息,学生模型也必须预测完整输入数据的表征。教师网络与学生模型相同,但权重略有不同。
实验及结果
该研究在 ImageNet 计算机视觉基准上测试了该方法,结果如下。
用于计算机视觉的 data2vec:在 ImageNet 基准上,ViT-B 模型与其他方法的性能比较结果。
应用于语音的 data2vec:在 LibriSpeech 基准测试中使用 10h 标记数据的 Base 模型与其他方法的性能比较结果,错误率越低,性能越好。
应用于文本的 data2vec:在使用原始 BERT 设置重新训练时,与 RoBERTa 相比,Base 模型在 GLUE 自然语言理解基准上的性能。分数越高,性能越好。
通过观察进行学习
自监督学习在计算机视觉、视频等多种模态方面取得了很大进展。这种方法的核心思想是为了更广泛地学习,以使人工智能可以学习完成各种任务,包括完全未见过的任务。研究者希望机器不仅能够识别训练数据中显示的动物,而且还能通过给定描述识别新生物。
data2vec 证明其自监督算法可以在多种模态下良好执行,甚至比现有最佳算法更好。这为更一般的自监督学习铺平了道路,并让人工智能更接近使用视频、文本、音频来学习复杂世界的目标。
由于收集高质量数据成本很高,因此该研究还希望 data2vec 能让计算机仅用很少的标记数据来完成任务。data2vec 是迈向更通用人工智能的重要一步,未来有望消除对特定模态特征提取器的需求。
#EquiVSet
又搬来一个于最优子集的神经集合函数学习方法
集合函数被广泛应用于各种场景之中,例如商品推荐、异常检测和分子筛选等。在这些场景中,集合函数可以被视为一个评分函数:其将一个集合作为输入并输出该集合的分数。我们希望从给定的集合中选取出得分最高的子集。鉴于集合函数的广泛应用,如何学习一个适用的集合函数是解决许多问题的关键。为此,腾讯 AI Lab、帝国理工与中山大学合作发表论文《Learning Neural Set Functions Under the Optimal Subset Oracle》,提出基于最优子集的集合函数学习方法。该方法在多个应用场景中取得良好效果。论文已被 NeurIPS 2022 接收并选为口头报告(Oral Presentation)。
腾讯 AI Lab、帝国理工与中山大学合作发表论文《Learning Neural Set Functions Under the Optimal Subset Oracle》,提出基于最优子集的集合函数学习方法。
- 论文地址:https://arxiv.org/abs/2203.01693
- 代码地址:https://github.com/SubsetSelection/EquiVSet
一、引言
很多现实应用场景与集合密切相关,例如推荐系统、异常检测和分子筛选等。这些应用都潜在地学习了一个集合函数来评价给定集合的得分,使得输出的集合拥有最高得分。以商品推荐为例子(如下图所示),我们希望从某个网店的商品库V中推荐子集,使得用户对该商品子集拥有最高评分
图 1 集合函数学习在商品推荐中的例子
二、方法简介
图 2 EquiVSet 训练和推理过程概览
图 3 EquiVSet 参数更新示意图
三、实验结果
为了验证 EquiVSet 的有效性,我们在三个任务上进行测试:商品推荐、异常检测和分子筛选。
1. 在商品推荐任务中,我们使用 amazon baby register dataset,该数据集包含了真实的用户购买记录。在该任务上,EquiVSet 在大部分场景中都取得最佳性能。具体地,相比于先前的 SOTA 算法 PGM,EuiVSet 的性能平均提升 33%。相比于传统的黑盒端到端子集预测方法 DeepSet(NoSetFn)(该方法相当于仅建模了变分网络 EquiNet),EquiVSet 的性能平均提升 39%,说明了显式建模集合函数的重要性。
2. 在异常检测任务中,我们使用四个经典数据集:double mnist,celebA,fashion-mnist 和 cifar-10。下图给出了 celebA 上异常检测的例子。
图 3 celebA 数据集。每一行是一个数据样本。在每个样本中,正常图片拥有两个共同属性(最右列),异常图片(红色方框)没有该属性。
以下表格提供不同方法在该任务上的性能对比,可以看出 EquiVSet 显著优于其他方法, 并比 PGM 和 DeepSet(NoSetFn) 的性能分别平均提高 37% 和 80%。
3. 在分子筛选中,我们使用 PDBBind 和 BindingDB 两个经典数据。该任务是从给定的分子库中,筛选出符合一定属性的分子。下表是 EquiVSet 和各个方法的对比结果。
四、结论
本文提出的基于最优子集的集合函数学习方法。通过将集合概率定义成能量模型,使得模型满足置换不变性、最小先验等特点。借助最大似然方法和等变变分技巧,模型能够高效地训练和推理。在商品推荐、异常检测和分子筛选上的应用认证了该方法的有效性。
#一个关于MoE的猜想
本文提出了一个关于如何演进MoE(Mixture of Experts)模型的猜想,主要是在MoE Routing的基础上再套一层,构建The Mixure of Expert Group(MoEG)。文章从代数和范畴论的角度分析了MoE模型的结构和计算过程,并探讨了如何通过两层Routing Gate来优化模型的并行计算和通信效率。
这是一个关于如何演进MoE模型的猜想. 主要是在MoE Routing的基础上再套一层, 构建The Mixure of Expert Group(MoEG), 另一方面是在BIS一些新规出来后,探讨如何进一步用更低的算力,更松耦合的模型架构来适配.
先从MoE谈起
MoE的整个计算过程如下图所示:
从代数的角度来看,MoE计算实际上是对Token进行一次置换群的操作,构成
P为一个进行Token位置置换的稀疏矩阵,实际上也构成了代数上的一个置换群的结构, 而我们再来看Monarch矩阵,两者代数结构上是相通的,Monarch矩阵定义如下
其中 是Permutation矩阵, 是Block Diagonal矩阵:
而在MoE中,是需要对Token进行还原,保证原有的Token顺序输出到下一层。
对于MoE实现的本质问题是,基于Permutation矩阵后构建的稀疏矩阵乘法如何进行并行
然而MoE有一个天然的缺点, 就是Permutation后的矩阵是一个Block Diagonal.另一方面,BigBird把稀疏性玩到花了,随机Attention,然后又是滑动窗口,再加上Global Attention,好处是这样的稀疏性是有理论保证的,坏处是随机性带来的影响和计算效率的问题.
从范畴论的视角看MoE
对于一个局部小范畴,每个对象包含一个C上的预层:可表示的预层(representable presheaf),实际上也就构成了一个的函子,这些函子构成预层范畴。Yoneda Lemma 这些函子是完全忠实(Fully faithful)的,即任何局部小范畴中的对象都可被对应的预层范畴中的元素表示
问题 这不正是我们对基础大模型泛化的要求么? 大模型的预训练的本质不就是构建预层范畴么?
另一方面
而 的函子完全忠实的,那么
于是,, 当且仅当它们对应的Hom函子同构。而这个推论来看,我们可以说:"对象由它与其他对象之间的关系完全决定"
然而MoE的Block Diagonal矩阵其实本质上是破坏了这样的结构, 使得一些态射被忽视了.
所以期望的方式是构造2级的Routing Gate, 使得本来Attention里面携带的信息通过两个Gate找到矩阵中(x,y)对应的某个Expert,或者多个expert.
Maybe,还可以cross MoEGroup做一些连接. 然后第一层Routing function某种意义上变成了一个Multicast to multiple rows of Experts, 第二层Routing Function Dispatch to some collumn. 然后就构成了
似乎这样又natively构成了一个态射图的结果, 然后对于通信而言,似乎也有不少可以优化的方法.
只是深夜突发奇想, 把它记录下来....
#WKD
超越KL!大连理工提出:基于WD距离的知识蒸馏新方法
大连理工大学的研究人员提出了一种基于Wasserstein距离的知识蒸馏方法,克服了传统KL散度在Logit和Feature知识迁移中的局限性,在图像分类和目标检测任务上表现更好。
自Hinton等人的开创性工作以来,基于Kullback-Leibler散度(KL-Div)的知识蒸馏一直占主导地位。
然而,KL-Div仅比较教师和学生在相应类别上的概率,缺乏跨类别比较的机制,应用于中间层蒸馏时存在问题,其无法处理不重叠的分布且无法感知底层流形的几何结构。
为了解决这些问题,大连理工大学的研究人员提出了一种基于Wasserstein距离(WD)的知识蒸馏方法。所提出方法在图像分类和目标检测任务上均取得了当前最好的性能,论文已被NeurIPS 2024接受为Poster
论文地址:https://arxiv.org/abs/2412.08139
项目地址:https://peihuali.org/WKD/
代码地址:https://github.com/JiamingLv/WKD
背景与动机介绍
知识蒸馏(KD)旨在将具有大容量的高性能教师模型中的知识迁移到轻量级的学生模型中。近年来,知识蒸馏在深度学习中受到了越来越多的关注,并取得了显著进展,在视觉识别、目标检测等多个领域得到了广泛应用。在其开创性工作中,Hinton等人引入了Kullback-Leibler散度(KL-Div)用于知识蒸馏,约束学生模型的类别概率预测与教师模型相似。
从那时起,KL-Div在Logit蒸馏中占据主导地位,并且其变体方法DKD、NKD等也取得了令人瞩目的性能。此外,这些Logit蒸馏方法还可以与将知识从中间层传递的许多先进方法相互补充。
尽管KL-Div取得了巨大的成功,但它存在的两个缺点阻碍了教师模型知识的迁移。
首先,KL-Div仅比较教师和学生在相应类别上的概率,缺乏执行跨类别比较的机制。
然而,现实世界中的类别呈现不同程度的视觉相似性,例如,哺乳动物物种如狗和狼彼此间的相似度较高,而与汽车和自行车等人工制品则有很大的视觉差异,如图1所示。
不幸的是,由于KL-Div是类别对类别的比较,KD和其变体方法无法显式地利用这种丰富的跨类别知识。
图1 左图使用t-SNE展示了100个类别的嵌入分布。可以看出,这些类别在特征空间中表现出丰富的相互关系 (IR)。然而,右图中的KL散度无法显式地利用这些相互关系
其次,KL-Div在用于从中间层特征进行知识蒸馏时存在局限性。图像的深度特征通常是高维的且空间尺寸较小,因此其在特征空间中非常稀疏,不仅使得KL-Div在处理深度神经网络特征的分布时存在困难。
KL-Div无法处理不重叠的离散分布,并且由于其不是一个度量,在处理连续分布时能力有限,无法感知底层流形的几何结构。
图2 基于Wasserstein距离(WD)的知识蒸馏方法的总览图
为了解决这些问题,研究人员提出了一种基于Wasserstein距离的知识蒸馏方法,称为WKD,同时适用于Logit蒸馏(WKD-L)和Feature蒸馏(WKD-F),如图2所示。
在WKD-L中,通过离散WD最小化教师和学生之间预测概率的差异,从而进行知识转移。
通过这种方式,执行跨类别的比较,能够有效地利用类别间的相互关系(IRs),与KL-Div中的类别间比较形成鲜明对比。
对于WKD-F,研究人员利用WD从中间层特征中蒸馏知识,选择参数化方法来建模特征的分布,并让学生直接匹配教师的特征分布。
具体来说,利用一种最广泛使用的连续分布(高斯分布),该分布在给定特征的1阶和2阶矩的情况下具有最大熵。
论文的主要贡献可以总结如下:
- 提出了一种基于离散WD的Logit蒸馏方法(WKD-L),可以通过教师和学生预测概率之间的跨类别比较,利用类别间丰富的相互关系,克服KL-Div无法进行类别间比较的缺点。
- 将连续WD引入中间层进行Feature蒸馏(WKD-F),可以有效地利用高斯分布的Riemann空间几何结构,优于无法感知几何结构的KL-Div。
- 在图像分类和目标检测任务中,WKD-L优于非常强的基于KL-Div的Logit蒸馏方法,而WKD-F在特征蒸馏中优于KL-Div的对比方法和最先进的方法。WKD-L和WKD-F的结合可以进一步提高性能。
用于知识迁移的WD距离用于Logit蒸馏的离散WD距离
类别之间的相互关系(IRs)
如图1所示,现实世界中的类别在特征空间中表现出复杂的拓扑关系。相同类别的特征会聚集并形成一个分布,而相邻类别的特征有重叠且不能完全分离。
因此,研究人员提出基于CKA量化类别间的相互关系(IRs),CKA是一种归一化的Hilbert-Schmidt独立性准则(HSIC),通过将两个特征集映射到再生核希尔伯特空间(RKHS)来建模统计关系。
首先将每个类别中所有训练样本的特征构成一个特征矩阵,之后通过计算任意两个类别特征矩阵之间的CKA得到类间相互关系(IR)。计算IR的成本可以忽略,因为在训练前仅需计算一次。
由于教师模型通常包含更丰富的知识,因此使用教师模型来计算类别间的相互关系图片。
损失函数
用 和 分别表示教师模型和学生模型的预测类别概率,其通过softmax函数和温度对Logit计算得到。将离散的WD表示为一种熵正则化的线性规划:
其中 和 分别表示每单位质量的运输成本和在将概率质量从 移动到
时的运输量; 是正则化参数。
定义运输成本 与相似度度量 成负相关。
因此,WKD-L的损失函数可以定义为:
用于Feature蒸馏的连续WD距离
特征分布建模
将模型某个中间层输出的特征图重塑为一个矩阵,其中第 i 列 表示一个空间特征。
之后,估计这些特征的一阶矩 和二阶矩 ,并将二者作为高斯分布的参数来建模输入图像特征的分布。
损失函数
设教师的特征分布为高斯分布
设教师的特征分布为高斯分布
。类似地,学生的分布记为
。
两者之间的连续Wasserstein距离(WD)定义为:
其中,
和
是高斯变量,q表示联合分布。最小化上式可以得到闭集形式的WD距离。此外,为了平衡均值和协方差的作用,引入了一个均值-协方差比率γ,最后损失定义为:
实验分析和比较
研究人员在ImageNet和CIFAR-100上评估了WKD在图像分类任务中的表现,还评估了WKD在自蒸馏(Self-KD)中的有效,并且将WKD扩展到目标检测,并在MS-COCO上进行了实验。
在ImageNet上的图像分类
研究人员在ImageNet的在两种设置下与现有工作进行了比较。设置(a)涉及同质架构,其中教师和学生网络分别为ResNet34和ResNet18;设置(b)涉及异质架构,在该设置中,教师网络为ResNet50,学生网络为MobileNetV1。
对于Logit蒸馏,WKD-L在两种设置下均优于经典的KD及其所有变体。对于特征蒸馏,WKD-F也超过当前的最佳方法ReviewKD;最后,WKD-L和WKD-F的结合进一步提升了性能,超越了强有力的竞争方法。
表1 在ImageNet上的图像分类结果
在CIFAR-100上的图像分类
研究人员在教师模型为CNN、学生为Transformer或反之的设置下评估了WKD方法,使用的CNN模型包括ResNet(RN)、MobileNetV2(MNV2)和ConvNeXt;Transformer模型包括ViT、DeiT和Swin Transformer。
对于Logit蒸馏,WKD-L在从Transformer到CNN迁移知识或反之的设置下始终优于最新的OFA方法。对于特征蒸馏,WKD-F在所有实验设置中排名第一;
研究人员认为,对于跨CNN和Transformer的知识转移,考虑到两者特征差异较大,WKD-F比像FitNet和CRD这样直接对原始特征进行对齐的方法更为合适。
表2 CIFAR-100上跨CNN和Transformer的图像分类结果(Top-1准确率)
在ImageNet上的自蒸馏
研究人员在Born-Again Network(BAN)框架中将WKD方法用于自蒸馏任务(Self-KD)。
使用ResNet18在ImageNet上进行实验,结果如表3所示,WKD-L取得了最佳结果,比BAN的Top-1准确率高出约0.9%,比第二高的USKD方法高出0.6%。这一比较表明,WKD方法可以很好地推广到自蒸馏任务中。
表3 在ImageNet上自蒸馏(Self-KD)的结果
在MS-COCO上的目标检测
研究人员将WKD扩展到Faster-RCNN框架下的目标检测中。对于WKD-L,使用检测头中的分类分支进行Logit蒸馏。对于WKD-F,直接从输入到分类分支的特征中进行知识迁移,即从RoIAlign层输出的特征来计算高斯分布。
对于Logit蒸馏,WKD-L显著优于经典的KD,并略微优于DKD。对于特征蒸馏,WKD-F在两个设置中均显著超过之前的最佳特征蒸馏方法ReviewKD。最后,通过结合WKD-L和WKD-F,表现超过了DKD+ReviewKD。当使用额外的边框回归进行知识迁移时,WKD-L+WKD-F进一步提高并超越了之前的最先进方法FCFD。
表4 在MS-COCO上的目标检测结果。†:使用了额外的边框回归进行知识迁移
结论
Wasserstein距离(WD)在生成模型等多个领域中已展现出相较于KL散度(KL-Div)的显著优势。然而,在知识蒸馏领域,KL散度仍然占据主导地位,目前尚不清楚Wasserstein距离能否实现更优的表现。
研究人员认为,早期基于Wasserstein距离的知识蒸馏研究未能充分发挥该度量的潜力。
因此,文中提出了一种基于Wasserstein距离的全新知识蒸馏方法,能够从Logit和Feature两个方面进行知识迁移。
大量的实验表明,离散形式的Wasserstein距离在Logit蒸馏中是当前主流KL散度的极具潜力的替代方案,而连续形式的Wasserstein距离在中间层特征迁移中也取得了令人信服的性能表现。
尽管如此,该方法仍存在一定局限性:WKD-L相比基于KL散度的Logit蒸馏方法计算开销更高,而WKD-F假设特征服从高斯分布。
参考资料:
https://arxiv.org/abs/2412.08139
#Composer
又发现了个开源库
项目地址:https://github.com/mosaicml/composer
随着越来越多的企业转向人工智能来完成各种各样的任务,企业很快发现,训练人工智能模型是昂贵的、困难的和耗时的。
一家公司 MosaicML 的目标正是找到一种新的方法来应对这些层出不穷的挑战。近日, MosaicML 推出了一个用于高效神经网络训练的 PyTorch 库「Composer」,旨在更快地训练模型、降低成本,并获得表现更好的模型。
Composer 是一个用 PyTorch 编写的开源库,旨在集成更好的算法来加速深度学习模型的训练,同时实现更低的成本和更高的准确度。
Composer 具有一个功能界面(类似于 torch.nn.functional),用户可以将其集成到自己的训练循环中;它还包含一个 Trainer,可以将高效的训练算法无缝集成到训练循环中。
项目中已经部署了 20 几种加速方法,只需几行代码就能应用在用户的训练之中,或者与内置 Trainer 一起使用。
总体而言,Composer 具备几个亮点:
- 20 多种加速计算机视觉和语言建模训练网络的方法。当 Composer 为你完成工作时,你就不需要浪费时间尝试复现研究论文。
- 一个易于使用的 Trainer,其编写的目的是尽可能提高性能,并集成了高效训练的最佳实践。
- 所有加速方法的功能形式,都允许用户将它们集成到现有的训练循环中。
- 强大、可重现的基线,让你尽可能地快开始工作。
那么,使用 Composer 能够获得怎样的训练效果提升呢?
多个模型系列的训练中减少的时间和成本。
据项目信息介绍,使用 Composer 训练,你可以做到:
- ResNet-101 在 ImageNet 上的准确率在 1 小时 30 分钟内达到 78.1%(AWS 上 49 美元),比基线快 3.5 倍,便宜 71%。
- ResNet-50 在 ImageNet 上的准确率在 1 小时 14 分钟内达到 76.51%(AWS 上 40 美元),比基线快 2.9 倍,便宜 65%。
- 在 4 小时 27 分钟内将 GPT-2 在 OpenWebText 上的困惑度提高到 24.11(AWS 上 145 美元),比基线快 1.7 倍,便宜 43%。
在 Reddit 社区,项目作者 Jonathan Frankle 现身说法,他介绍说,Composer 是自己关于彩票假设研究的直接延续。
2019 年,Frankle 和 Carbin 的《The Lottery Ticket Hypothesis: Finding Sparse, Trainable Neural Networks》获得了 ICLR 2019 的最佳论文荣誉。在这篇论文中,Frankle 等人发现标准的剪枝技术会自然地发现子网络,这些子网络经过初始化后能够有效进行训练。二人基于这些结果提出了「彩票假设」(lottery ticket hypothesis):密集、随机初始化的前馈网络包含子网络(「中奖彩票」),当独立训练时,这些子网络能够在相似的迭代次数内达到与原始网络相当的测试准确率。
目前,Frankle 是 Mosaic 公司的首席科学家,推动了 Composer 的打造。
这次,Frankle 表示,深度学习背后的「数学」并没有什么神圣之处。从根本上改变「数学」是完全没问题的(比如删除很多权重)。你将获得与其他方式不同的网络,但这不像原始网络是「正确的」网络。如果改变「数学」让你的网络变得同样好(例如同样的准确性)而速度更快,那就是胜利。
如果你愿意打破深度学习背后的「数学」,彩票假设就是一个例子。Composer 有几十种技术可以做到这一点,并且拥有与之匹配的加速。
同时,项目作者们也将 Composer 与 PyTorch Lightning 进行了对比:「PyTorch Lightning 是一个具有不同 API 的不同训练库。实际上,我们在 PTL 之上构建了我们的第一个 Composer 实现。」
PyTorch Lightning 的创建者 William Falcon 也出现在了后续讨论中,但二人似乎未达成共识。
目前,Composer 的训练器可以应用于众多模型,包括对于 Resnet-50、Resnet-101、UNet 和 GPT-2 的加速。
作者表示,未来还将扩展至更多模型,比如 ViT、BERT、分割和目标检测等等。
又是较短的哦 完了
#RepGhost
轻量级的CNN模块重参数化技术构建硬件高效的 Ghost 模块,通过结构重新参数化技术开发一种硬件高效的 RepGhost 模块,以实现特征的隐式重用。RepGhostNet 把 Concat 操作去掉,同时修改现有结构以满足重参数化的规则。最终得到的 RepGhostNet 是一个高效的轻量级 CNN,在几个视觉任务中都展示出了移动设备的精度-延迟权衡方面良好的技术水平。
1 RepGhost:重参数化技术构建硬件高效的 Ghost 模块
论文名称: RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization
论文地址:
https://arxiv.org/pdf/2211.06088.pdf
GhostNetV2 解读:NeurIPS'22 Spotlight|华为诺亚GhostNetV2出炉:长距离注意力机制增强廉价操作
G-GhostNet 解读: 想要一个适配GPU端的轻量级网络?安排!华为诺亚带着 G-GhostNet 走来
1.1.1 特征复用技术和本文动机
特征复用技术是指:通过简单地连接来自不同层的已有的一些特征图,来额外获得一些其他的特征。比如在 DenseNet[1] 中,在一个 Stage 内,前面层的特征图被重复使用并被馈送到它们的后续层,从而产生越来越多的特征图。或者在 GhostNet 中,作者通过一些廉价的操作来生成更多的特征图,并将它们与原始特征图 Concat 起来,从而产生越来越多的特征图。它们都通过 Concat 操作,利用特征复用技术,来扩大 channel 数量和网络容量,同时保持一个比较低的 FLOPs。似乎 Concat 操作已经成为特性复用的标准操作。
Concat 操作确实是一种 0 Params,0 FLOPs 的操作。但是,它在硬件设备上的计算成本是不可忽略的。 因为参数量和 FLOPs 不是机器学习模型实际运行时性能的直接成本指标。作者发现,在硬件设备上,由于复杂的内存复制,Concat 操作比加法操作效率低得多。因此,值得探索一种更好的、硬件效率更高的方法,以更好地适配特征复用技术。
因此,作者考虑引入结构重参数化方法,这个系列方法的有效性在 CNN 体系结构设计中得到了验证。具体而言,模型训练时是一个复杂的结构,享受高复杂度的结构带来的性能优势,训练好之后再等价转换为简单的推理结构,且不需要任何时间成本。受此启发,作者希望借助结构重参数化方法来实现特征的隐式重用,以实现硬件高效的架构设计。
所以本文作者希望通过结构重新参数化技术开发一种硬件高效的 RepGhost 模块,以实现特征的隐式重用。如前文所述,要把 Concat 操作去掉,同时修改现有结构以满足重参数化的规则。因此,在推断之前,特征重用过程可以从特征空间转移到权重空间,使 RepGhost 模块高效。
1.1.2 Concat 操作的计算成本
作者将 GhostNet 1.0x 中的所有 Concat 操作替换成了 Add 操作,Add 操作也是一种处理不同特征的简单操作,且成本较低。这两个运算符作用于形状完全相同的张量上。如下图1所示为对应网络中所有32个对应运算符的累计运行时间。Concat 操作的成本是 Add 操作的2倍。
图1:在基于 ARM 的手机上 Concat 操作和 Add 操作处理不同 Batch Size 的数据的运行时间
图2:每个操作符在整个网络中的运行时间的百分比。Diff:Concat 操作和 Add 操作的差值的百分比
1.1.3 Concat 操作和 Add 操作
基于此,作者提出了以下 RepGhost 模块。
1.1.4 RepGhost 模块
这一小节介绍如何通过重参数化技术来进行特征复用,具体而言介绍如何从一个原始的 Ghost 模块演变成 RepGhost 模块。如下图3所示,从 Ghost 模块开始:
图3:从一个原始的 Ghost 模块演变成 RepGhost 模块的过程
(a) 原始的 Ghost 模块,这里省去了第一步的 1×1 卷积。
(b) 把原始的 Ghost 模块的 Concat 操作换成 Add 操作,以求更高的效率。
(c) 把 ReLU 移到 Add 操作之后,这种移动使得模块满足结构重新参数化规则,从而可用于快速推理。
(d) 在恒等映射 Identity Mapping 分支中添加 BN 操作,使得在训练过程中带来非线性,并且可以被融合用于快速推断。
(e) 模块 (d) 可以被融合成模块 (e),用于快速推断。RepGhost 模块有一个简单的推理结构,它只包含规则的卷积层和ReLU,这使得它具有较高的硬件效率。特征融合的过程是在权重空间,而不是在特征空间中进行,然后把两个分支的参数进行融合产生快速推理的结构。
与 Ghost 模块的对比
作用:
- Ghost 模块提出从廉价的操作中生成更多的特征图,因此可以以低成本的方式扩大模型的容量。
- RepGhost 模块提出了一种更有效的方法,通过重参数化来生成和融合不同的特征图。与 Ghost 模块不同,RepGhost 模块去掉了低效的 Concat 操作,节省了大量推理时间。并且信息融合过程由 Add 操作以隐含的方式执行,而不是留给其他卷积层。
1.1.5 RepGhostNet 网络
如下图4所示,(a) GhostNet 网络的一个 Block。(b) RepGhost 网络训练时的一个 Block。(c) RepGhost 网络推理时的一个 Block。这里值得注意的是 RepGhost 网络的维度问题。对于一个 RepGhost 模块,输出维度等于输入维度;但是对于原来的 Ghost 模块,输出维度是输入维度的2倍。因此为了维持 RepGhost 网络和原始 GhostNet 的维度一致,有个变化需要注意下:
图4:(a) GhostNet 网络的一个 Block。(b) RepGhost 网络训练时的一个 Block。(c) RepGhost 网络推理时的一个 Block
下图5所示是 RepGhostNet 的网络架构。首先是一个输出通道为16的卷积层处理输入数据。一堆正常的 1×1 卷积和 AvgPool 预测最终输出。根据输入大小将 RepGhost Bottleneck 分成5组,并且为每组中除最后一个 Bottleneck 之外的最后一个 Bottleneck 设置 stride=2。
图5:RepGhost 网络架构
1.1.6 实验结果
ImageNet-1K 实验结果
如下图所示是 ImageNet-1K 图像分类任务的实验结果。NVIDIA V100 GPUs ×8 作为训练设备,Batch size 开到1024,优化器 SGD (0.9 momentum),基本学习率为 0.6,Epoch 数为 300,weight decay 为1e-5,并且使用衰减系数为0.9999的 EMA (Exponential Moving Average) 权重衰减。数据增强使用 timm 库的图像裁剪和翻转,prob 0.2 的随机擦除。对于更大的模型 RepGhostNet 1.3×,额外使用 auto augment。
图6:ImageNet-1K 实验结果
实验结果如上图6所示。根据 FLOPs,所有模型被分为3个级别。在基于 ARM 的手机上评估每个模型的相应延迟。图1描绘了所有模型的延迟和精度。可以看到,在准确性-延迟权衡方面,RepGhostNet 优于其他手动设计和基于 NAS 的模型。
RepGhostNet 实现了与其他先进的轻量级 CNN 相当甚至更好的准确性,而且延迟低得多。例如,RepGhostNet 0.5× 比 GhostNet 0.5× 快 20%,Top-1 准确性高 0.5%,RepGhostNet 1.0× 比 MobileNetV3 Large 0.75× 快 14%,Top-1 准确性高 0.7%。在延迟相当的情况下,RepGhostNet 在所有三个量级大小的模型上面都超过所有对手模型。比如,RepGhostNet 0.58× 比 GhostNet 0.5× 高 2.5%,RepGhostNet 1.11× 比MobileNetV3 Large 0.75× 高 1.6%。
目标检测和实例分割实验结果
使用 RetinaNet 和 Mask RCNN分别用于目标检测任务和实例分割任务。仅替换 ImageNet 预训练的主干,并在8个 NVIDIA V100 GPUs 中训练12个时期的模型结果如下图7所示。RepGhostNet 在两个任务上都优于MobileNetV2,MobileNetV3 和 GhostNet,且推理速度更快。例如,在延迟相当的情况下,RepGhostNet 1.3× 在这两项任务中比 GhostNet 1.1× 高出 1% 以上,RepGhostNet 1.5× 比 MobileNetV2 1.0× 高出 2% 以上。
图7:目标检测和实例分割实验结果
消融实验1:与 Ghost-Res50 的对比
为了验证大模型的 RepGhost 模块的泛化性,作者将其与 GhostNet 模型 Ghost-Res50 进行了比较。用 RepGhost 模块替换 Ghost-Res50 中的 Ghost 模块,得到 RepGhost-Res50。所有模型都使用相同的训练设置进行训练。对于 MNN 延时,与图6结果使用相同的手机测得。对于 TRT 延迟,作者首先将模型转换为 TensorRT,然后在 Batch size 为32的 T4 GPU 上运行框架上的每个模型100次,并报告平均延迟。
结果如下图8所示。可以看到,RepGhost-Res50 在 CPU 和 GPU 上都明显快于 Ghost-Res50,但精度相当。特别地,在 MNN 推理和 TensorRT 推理中,RepGhost-Res50 (s=2) 比 Ghost-Res50 (s=4) 分别获得了 22% 和44% 的加速比。
图8:与 Ghost-Res50 的对比
消融实验2:重参数化结构
为了验证重新参数化结构,作者在 RepGhostNet 0.5× 上进行消融实验,方法是在图 3(c) 所示的模块的恒等映射分支中交替使用 BN,1×1 Depth-wise Convolution 和恒等映射本身。结果如下图9所示。可以看到,带有 BN 重参数化的 RepGhostNet 0.5× 达到了最好的性能。作者将其作为所有其他 RepGhostNet 的默认重新参数化结构。
作者将这种改善归因于 BN 的非线性,它提供了比恒等映射更多的信息。1×1 Depth-wise Convolution 之后也是 BN,因此,由于后面的归一化,其参数对特征不起作用,并且可能使 BN 统计不稳定,作者推测这导致了较差的性能。
图9:重新参数化结构消融实验
消融实验3:Shortcut 的必要性
尽管 会增加内存访问成本 (从而影响运行时性能),但对于计算受限的移动设备来说,这种影响可以忽略不计,如表所示。7.考虑到所有这些,我们确认快捷方式对于轻量级CNN是必要的,并在我们的RepGhostNet中保留快捷方式。mageNet 数据集上的准确性,结果如下图显示了使用和不使用快捷方式时 RepGhostNet 的准确性和延迟。很明显,Shortcut 不会严重影响实际运行的延时,但有助于优化过程。另一方面,大模型去掉 Shortcut 对 Latency 的影响要小于小模型,这可能意味着 Shortcut 对于轻量级 CNN 比大型模型更重要,例如 RepVGG 和 MobileOne。
尽管 Shortcut 会增加内存访问成本 (从而影响运行时性能),但对于计算受限的移动设备来说,这种影响可以忽略不计。考虑到所有这些,我们认为 Shortcut 对于轻量级 CNN 是必要的,并在 RepGhostNet 中保留了 Shortcut 操作。
图10:Shortcut 的必要性消融实验结果
总结
GhostNet 通过一些廉价的操作来生成更多的特征图,并将它们与原始特征图 Concat 起来,从而产生越来越多的特征图,它利用特征复用技术,来扩大 channel 数量和网络容量,同时保持一个比较低的 FLOPs。似乎 Concat 操作已经成为特性复用的标准操作。Concat 操作确实是一种 0 Params,0 FLOPs 的操作。但是,它在硬件设备上的计算成本是不可忽略的。所以本文作者希望通过结构重新参数化技术开发一种硬件高效的 RepGhost 模块,以实现特征的隐式重用。RepGhostNet 把 Concat 操作去掉,同时修改现有结构以满足重参数化的规则。最终得到的 RepGhostNet 是一个高效的轻量级 CNN,在几个视觉任务中都展示出了移动设备的精度-延迟权衡方面良好的技术水平。
#GAN模型1
本次是用GAN模型弄出时光机效果~ 穿越时空的人脸 得到你100年前的样子~~
时光穿梭第一步:解决数据集难题
鉴于最近StyleGAN在高质量人脸合成和编辑方面的成功,许多工作都集中在使用预先训练好的StyleGAN模型进行人像编辑。
然而,现有的技术通常会处理定义明确的语义属性。例如,添加或删除一个微笑或修改图片中人像的年龄。
这项工作背后的逻辑是保持这些构成一个人身份的属性不变,与此同时,用这辆人工智能的马车送他们回到过去或去往未来。
在这种情况下,人们面对的主要问题是缺乏合适的数据集。众所周知,即使有完美的神经网络模型,数据集仍然是每个人工智能研究者的噩梦。
数据不平衡、不充分或不可用是深度学习领域常见的问题,会导致数据偏见或结果不准确。
为了克服这个问题,来自康奈尔大学的华裔科学家Eric Ming Chen(左2)主导的研究团队创建了FTT(穿越时光的人脸)数据集。
Chen与来自佐治亚大学的华人科学家Jin Sun等人共同发刊,详细解释了「穿越时光的人脸」数据集的运作原理。
该数据集中的图片来自维基共享资源(Wikimedia Commons)。该平台拥有众包和开放许可的五千万张图片。FTT分析了26,247张19至21世纪的肖像,平均每十年大约有1,900张图片。
GANs父子层次结构,化身AI「时光机」
这些变化是如何实现的呢?
研究团队借助了StyleGAN(生成对抗网络)父子层次结构。特殊之处在于,他们没有选择训练一个涵盖所有年代的单一模型,而是为每十年的图像集添加一个子模型,通过训练模型集更好地综合每个时期的数据分布。
同时,为了保留被描述者的身份和姿势,研究团队采用一个父模型,将这些信息映射到隐空间向量中。
首先,训练一个StyleGAN模型集,每个年代各设置一个,使用对抗性损失和身份损失来训练一张混合人脸图。这张人脸图是子模型的输出,经过修改后,该混合图与父模型的颜色相似。
研究团队提示,在此过程中,有必要避免由于ArcFace(一种流行的面部识别模型)中的特征计算导致的身份损失的不一致性。由于ArcFace模型只在现代图像上训练,研究人员发现它在历史图像上的表现很差。
之后,每张真实图像被投射到十年流形上的一个向量w上(下图中的1960)。在该向量上,生成器G′t被训练来将精细化细节转移到所有的子模型上。最后,在输入图像上应用一个掩码,以鼓励模型保留人像的面部细节。
在微调全部子模型后,研究团队发现,FTT的不同年代的子模型(下图橙色)在发型、妆容发生改变的同时,都成功捕捉到父模型中(下图蓝色)每张图片的人像特征。
这项全新的合成图像框架有两大亮点:首先,它使人像穿越时光的愿望成真;其次,在对人脸进行时光转换时,该技术还能保留人像的大部分细节。
尽管它在数据集中还存在微小偏差(例如,在20世纪初的图像中出现了几个短发的女性),导致输出图像的不一致,但与以前的工作相比,这个模型在真实性上有了很大改善。
「穿越时光的人脸」开启了时光穿梭的第一步。如此高的准确度让人不禁遐想:这次跨越时光的是人像,那么下次呢?
参考资料:
https://www.marktechpost.com/2022/11/09/latest-artificial-intelligence-ai-research-proposes-a-method-to-transform-faces-through-time/
https://facesthroughtime.github.io
#V-JEPA
继去年推出 I-JEPA 之后,Meta 现在又带来了 V-JEPA,这是一种通过观看视频教会机器理解和建模物理世界的方法,这加快了向 Yann LeCun 所设想的高级机器智能进军的步伐。
论文链接:https://ai.meta.com/research/publications/revisiting-feature-prediction-for-learning-visual-representations-from-video/
Meta 副总裁兼首席 AI 科学家 Yann LeCun 表示:“V-JEPA 让我们更接近于实现让机器具备对世界的深入理解,进而实现更加广泛的推理与规划能力。” 这番话再次强调了提高机器智能的宏大目标 —— 仿照人类学习过程,构建世界内在模型,以便于学习、适应,并在复杂的任务中进行有效规划。
#01 什么是 V-JEPA?
V-JEPA 是一种视觉模型,它通过预测视频中的特征来进行训练,这种方法与传统依赖预先训练好的图像编码器、文本或人工注释的机器学习方法不同。V-JEPA 能够直接从视频数据中学习,无需外部的监督。
#02 V-JEPA 的几大特点
- 自我监督学习:V-JEPA 采用自我监督学习,这意味着它能够在没有标记数据的情况下进行训练,这提高了其适应性和多样性。
- 以特征预测为目标:不同于重建图像或依赖像素级预测,V-JEPA 专注于预测视频特征,这使得训练更加高效,且在后续任务中表现更佳。
- 效率提高:Meta 通过 V-JEPA 实现了显著的效率提升,在缩短训练时间的同时,仍然保持了高性能。
- 多功能的视觉表征:V-JEPA 能够产生适用于多种任务的视觉表征,无论是基于运动还是外观的任务,它都能有效捕捉视频数据中的复杂互动。
#03 V-JEPA 方法论
该 AI 模型利用了 VideoMix2M 数据集进行训练,在没有明确指导的情况下,通过观察视频像素来学习。V-JEPA 通过一个无监督学习的方法来预测视频中的特征,而不需要依赖任何外部的标签或注释。这种独特的训练方式使其区别于传统的学习方法,因为它在训练过程中既不依赖预训练的图像编码器、文本、负例、人工注释,也不进行像素级的重建。
与直接处理像素级信息不同,V-JEPA 在潜在空间进行预测,这一点与生成模型明显不同。接下来,一个条件扩散模型被训练来将这些在特征空间中的预测转化为可理解的像素图像,而在这个过程中,V-JEPA 的编码器和预测网络被冻结,不参与更新。值得注意的是,解码器仅处理视频中被遮挡区域的预测表征,而不触及其他部分。
这种方法确保了 V-JEPA 的特征预测与视频中未遮挡部分在时间和空间上的一致性,这对于它能够生成在后续视频和图像任务中表现出色的多功能视觉表征至关重要,而且这一切都无需对模型参数进行调整。
#04 相较于传统的像素预测的优势
V-JEPA 在一个更为抽象的表征空间中进行预测,这使得它能专注于视频中的高层概念信息,而不会被不重要的细节所干扰。
它是首个在 “冻结评估” 环境下表现出色的视频模型,即对编码器和预测器只进行一次预训练后,便不再进行调整。这意味着,为新任务定制模型只需要在其基础上训练一个轻量级的专用层,既高效又迅速。
不同于之前的方法,每个新任务都需要进行全面的微调,V-JEPA 的策略允许在多个任务中复用相同的模型部件,而无需每次都进行针对性训练。这证明了它在执行动作分类和对象交互等任务时的多用途性。
#05 V-JEPA 性能
V-JEPA 在一个包含了 200 万个视频的庞大数据集上接受了训练,这些视频来源于公开的数据集。随后,在一系列的下游图像和视频任务上对模型进行了评估,V-JEPA 在各方面都展示了出色的性能。
与像素预测的比较
在进行像素预测的视频处理方法中,V-JEPA 通过保持所有基准测试的架构一致性进行了评估。诸如 VideoMAE、Hiera 和 OmniMAE 等模型被采用了 ViT-L/16 或 Hiera-L 编码器进行了评估,这两种编码器具有相似的参数设置。评估涵盖了使用注意力探针进行的冻结评估和端到端微调,在下游的视频和图像任务上进行。
在冻结评估的环境下,V-JEPA 在所有下游任务上均展现了优越性能,仅在 ImageNet 任务上与直接在 ImageNet 上训练的 OmniMAE 模型相比,V-JEPA 的准确率为 74.8%,与 OmniMAE 的 75.1% 相近。
在微调协议下,V-JEPA 的表现超过了其他使用 ViT-L/16 进行训练的模型,并且与使用 Hiera-L 的表现持平,但 V-JEPA 在预训练阶段使用的样本数量明显更少,这强调了以特征预测为核心的学习原则的高效性。
与最先进模型的比较
在视频上预训练的 V-JEPA 模型与当前最先进的自我监督图像和视频模型进行了对比。这包括了针对图像预训练模型的 OpenCLIP、DINOv2 和 I-JEPA,以及视频预训练模型的 VideoMAE、OmniMAE、Hiera、VideoMAEv2 和 MVD 等多个基线的比较。
通过对下游图像和视频任务使用注意力探针进行的冻结评估,V-JEPA 在所有任务中都展现了持续的改进,特别是在需要理解运动的任务上表现突出。它有效地缩小了在依赖静态外观特征的任务上,视频和图像模型之间的性能差距。
#06 V-JEPA 应用案例探索
视频内容洞察
V-JEPA 在解析各种视频流内容方面展现出了卓越能力,这使其成为视频分类、动作识别和时空动作侦测等计算机视觉任务的宝贵工具。它能够详细捕捉对象之间的互动并识别精细的动作,这使得 V-JEPA 在视频理解领域独树一帜。
情境智能助理
V-JEPA 提供的情境理解能力为开发具备深层次环境感知的 AI 助手打下了基础。无论是提供基于情境的推荐,还是帮助用户在复杂环境中导航,V-JEPA 都能在多种应用场景中提升 AI 助手的功能。
AR 体验
通过对视频内容的深入理解,V-JEPA 能够为增强现实体验提供丰富的情境信息,无论是提升游戏体验还是提供实时信息的叠加,V-JEPA 都能为沉浸式 AR 应用的发展做出贡献。
随着 Apple Vision Pro 的推出,这项技术可能在提升混合现实体验方面发挥至关重要的作用。
#07 推动高级机器智能(AMI)的 JEPA
V-JEPA 的开发主要集中在感知方面 —— 理解各种视频流的内容,以实现对周围世界的即时情境感知。它的预测器在联合嵌入预测架构中扮演了一个早期的物理世界模型角色,能够在不需深入分析每个细节的情况下理解视频帧中的事件。Meta 的未来目标是利用这一预测模型进行规划和序列决策任务,使其应用范围扩展到感知之外。
作为一种研究模型,V-JEPA 为未来的各种应用带来了希望。它的情境理解能力对于实体化 AI 的发展以及未来 AR 眼镜中情境智能助理的开发可能极为重要。
Meta 强调负责任的开放科学精神,已经在 CC BY-NC 许可下发布了 V-JEPA 模型,鼓励 AI 研究社区的合作与这一开创性工作的进一步发展。
GitHub:https://github.com/facebookresearch/jepa
原文链接:https://encord.com/blog/meta-v-jepa-explained/