51c深度学习~合集8
我自己的原文哦~ https://blog.51cto.com/whaosoft/13856549
#patchmix
近期中南大学的几位研究者做了一项对比学习方面的工作——「Inter-Instance Similarity Modeling for Contrastive Learning」,主要用于解决现有对比学习方法在训练过程中忽略样本间相似关系,从而导致所学习无监督表征在不同样本之间的泛化能力下降问题。他们所提出的方法在 ImageNet-1K、CIFAR10 和 CIFAR100 上取得了显著的性能提升。
论文地址:https://arxiv.org/pdf/2306.12243.pdf
GitHub地址:https://github.com/visresearch/patchmix
具体地,研究者做了以下工作:
- 提出了 PatchMix,实现了样本间相似性关系构造,提高了表征在不同样本之间的泛化能力;
- 提出了 mix-to-origin contrast、mix-to-mix contrast 以及origin-to-origin contrast 目标函数,实现了无监督表征对复杂样本间相似度关系构造;
- 所学习无监督表征在 ImageNet-1K、CIFAR10 和 CIFAR100上取得了包括 finetuning accuracy、linear accuracy 和 kNN accuracy 3 项主要指标的显著提升。
对比学习中存在的问题
对比学习主要的思路是,首先利用数据增强技术,构造具有外观差异的正样本对(来自同一图像的不同 view),并将不同图像作为负样本对;然后利用对比学习损失(最常见的 InfoNCE loss),最大化正样本对之间的 cosine 相似度,并最小化负样本对之间的 cosine 相似度,以抽取外观无关的图像表征 (appearance-invariant representation),从而理解同一图像在不同数据增强下的语义一致性,实现无监督条件下的图像语义表征的抽取。
这种思路存在一个问题,即自然图像相互之间存在丰富的相似性,而非对比学习设定中正样本对之间的单一相似性,如图1 所示。

现有对比学习所采用的目标函数只关注了同一样本不同数据增强的相似性,忽略了图像间相似性,使得所学习表征并不能很好地反映图像在语义上的相似性,降低了表征在不同样本之间的泛化能力。
研究动机
针对上面对比学习中目标函数不准确的问题(inaccurate target issue),如何在无监督设定下构造具有样本间相似性关系的正样本对成为关键问题。其实在人类认知视觉物体的时候,也存在利用已有物体定义新物体概念的思路,例如鸭嘴兽、猫头鹰等。这些动物在部分结构上与已有常见动物具有相似性,如图所示。

在对比学习中,我们是否可以借鉴上面这个思路,人为构造一个新样本,使得新样本和多个样本之间存在相似性,从而引导深度模型学习样本之间的相似性关系。
Vision Transformer(ViT)将图像作为图像块的序列进行图像建模,为计算机视觉发展提供了一个全新的思路。同时,掩码图像建模(MIM, Masked Image Modeling)无监督学习方法(如 BEiT、SimMIM、MAE)的成功,也表明只用少量的 patch(如整图 25% 的 patch)也能够有效表征原始图像的语义(这样我们就可以用包含多张图像 patch 的混合图像,表示多张图像的语义)。
受到上述观察的启发,通过混合多个图像的 Patch,形成新的混合图像,以人为构造混合图像和多个图像之间的相似性关系,实现无监督条件下的图像间复杂相似性关系的模拟。例如,混合包括狗、鸟 、飞机、汽车物体的 4 张图片,形成一张具有狗的头、鸟的翅膀、飞机的尾翼、汽车的轮子的混合图像,使得混合样本和上述 4 个样本之间具有确定的相似性关系,作为训练样本去引导深度模型无监督地学习样本之间的相似性关系。我们把这种方法称之为 PatchMix,如下图所示。

方法介绍
PatchMix
方法的完整数学描述略显复杂,如果只是想了解主要思想,可以只看上面 PatchMix的流程图即可(其实只是公式多,每个公式也不复杂,后续有机会做个演示动画,帮助大家理解。这个方法也可以用简单的 Mask 方法实现,但是本方法在大规模图像处理上效率是最高的),对该工作感兴趣的同行可以看一下,我尽量写得清楚一些。
结合 PatMix 的流程图,主要过程如下:




由于混合图像和混合图像之间,重叠比例的不同,mix-to-mix label 中每一项的权重分数是不同的,根据上图,可以得到权重系数可以表示为

综上,所提出的 PatchMix 算法可以概括为

算法具体的实现代码如下:







实验结果
Image Classification on ImageNet-1K

Image Classification on CIFAR10 and

Inter-Instance Similarity Visualization

总结
- PatchMix 通过混合不同图像的 Patch,构造了具有多图像实例相似性的对比学习代理任务,以引导模型在对比学习过程中关注不同图像之间潜在的相似性,提高所学习表征在不同图像上的跨实例泛化能力。
- 在具体的目标函数上,采用 mix-to-origin contrast 构造混合图像和正常图像的相似关系,进一步引入 mix-to-mix contrast 构造更为复杂的样本间相似性关系,并利用 origin-to-origin contrast 消除混合图像在表征上的 gap,提高表征在正常图像上的适配性。
- 实验上,PatchMix 大幅提升了无监督表征在 ImageNet-1K, CIFAR10, CIFAR100和 COCO 数据集下游任务上的性能,证明了其有效性。
....
#xxx
.....
#xxx
.....
#xxx
.....
#Fill the GAP
视觉latent reasoning为什么不稳?这篇论文从特征空间找到了关键缺口
导读:视觉 latent reasoning 希望让多模态模型在内部生成连续 latent token,用这些中间表示补充多模态理解和推理任务中缺失的视觉证据。但问题在于,模型生成出来的 latent token 可能并不落在它原本熟悉的视觉输入空间里;如果模型无法稳定读取这些 token,它们就很难成为有效的中间视觉证据。
来自阿里 Qwen 大模型应用团队、滑铁卢大学、浙江大学和 Vector Institute 的研究者提出 GAP(Granular Alignment Paradigm)。它的核心思路是既然问题出在「生成的 latent token 能不能被模型读懂」,就需要从三个粒度同时做对齐:
• 特征对齐:让 latent 回到模型熟悉的视觉表示空间,而不是直接复用输出侧 hidden state;• 语义对齐:用文本描述检查 latent 表达了什么视觉证据,让连续向量不再完全黑箱;• 分配对齐:只在基座模型真正困难的样本上启用 latent,避免简单题引入额外噪声。
在 Qwen2.5-VL 7B 上,GAP 围绕这三层对齐展开验证。在本文评测设置下,它同时改善了平均视觉感知与平均多模态推理表现。
- 论文标题:Fill the GAP: A Granular Alignment Paradigm for Visual Reasoning in Multimodal Large Language Models
- 论文链接:https://arxiv.org/pdf/2605.12374
- 方法名称:GAP(Granular Alignment Paradigm)
- 作者:Yanting Miao、Yutao Sun、Dexin Wang、Mengyu Zhou、Pascal Poupart、Lei Lv、Li Xu、Qi Zhao、Li Wang、Hao Li、Xiaoxi Jiang、Guanjun Jiang
- 机构:Qwen Large Model Application Team, Alibaba;University of Waterloo;Zhejiang University;Vector Institute

GAP 将视觉 latent reasoning 拆成数据层、特征层和模型能力层三类对齐问题。
为什么多模态模型需要「中间视觉证据」?
多模态大模型已经能够在大量图文任务上给出流畅答案,但在更细粒度的视觉推理任务中,错误往往不是单纯来自语言推理能力不足,而是来自视觉证据定位不充分。
视觉 latent reasoning 试图让模型在内部生成连续的视觉 latent token。这些 token 可以被理解为一种中间视觉表示,它们在自回归生成过程中被重新输入模型,帮助后续文本推理。
问题是,这条路看起来轻量,却并不天然稳定。
现有视觉 latent 方法的关键假设:
输出可以直接当输入
许多视觉 latent 方法采用一种「输出即输入」的范式:模型先生成一个输出侧 hidden state,然后把这个 hidden state 直接作为下一步 latent token 的输入 embedding。
这在概念上很自然。既然 hidden state 已经承载了模型当前步的推理状态,为什么不能把它继续喂回去,让模型沿着这个连续空间继续「想」?
论文指出,这个看似自然的做法在现代 pre-norm MLLM 中存在一个特征空间层面的风险:decoder 输出侧 hidden states 并不一定和输入侧文本与视觉 embedding 位于同一个分布或尺度区间。也就是说,一个向量适合作为输出读出,并不意味着它适合作为下一步输入。

在 Monet-7B 中,decoder hidden states 的范数随层数显著增长,远高于输入 embedding 的尺度区间。
论文以 Monet-7B 为代表进行分析。Monet-7B 是基于 Qwen2.5-VL 7B 的视觉 latent 模型。作者观察到,在 pre-norm Transformer 中,层归一化作用于子层输入,而残差流本身并不会在每次残差相加后被重新归一化。因此,hidden states 的范数会沿 decoder 深度累积。
具体测量显示:
- 输出侧文本 hidden states 的 L2 范数约为文本输入 embedding 的 546.4 倍;
- 输出侧视觉 hidden states 的 L2 范数约为视觉输入 embedding 的 8.7 倍;
- 这种范数增长在 Monet-7B 的 latent 微调后依然存在,说明它不是原始基座模型的偶然现象,而与底层 pre-norm decoder 的残差流机制相关。
这意味着,如果直接把输出侧 hidden state 作为下一步视觉 latent 输入,模型实际上是在读取一种它训练时并未作为输入 embedding 见过的向量分布。论文将这一问题概括为特征空间错配:latent 存在输出空间与输入空间之间的错配。
只校正范数,也能带来收益
为了验证这种错配不是纯粹的理论担忧,论文做了一个简单但有说服力的干预实验。
作者以 Monet-7B 作为「输出即输入」的 latent baseline,在推理时加入无需训练的 EMA(Exponential Moving Average,移动指数平均)范数校准。这个操作不改变训练数据、不更新模型参数,也不改变主干模型;它只把预测 latent 的范数重标定到输入视觉 embedding 的范数范围。
结果显示,仅这个推理时范数校正,就让 HRBench4K 从 70.75 提升到 71.63,让 MathVista 从 61.30 提升到 63.30,平均提升从 66.03 到 67.46。

GAP 的重构路径使生成 latent 回到更接近输入视觉 embedding 的范数区间。
这个实验的意义在于,它把问题收束到一个更具体的位置:视觉 latent 本身并不是无效的,关键在于它是否以输入兼容的形式反馈给模型。范数校准只处理了尺度问题,而 GAP 进一步处理的是子空间与监督方式的问题。
GAP:三层对齐
GAP 的全称是 Granular Alignment Paradigm。它不是把视觉 latent reasoning 简化为「插入更多连续 token」,而是将 latent 训练与反馈拆成三类对齐:数据层对齐、特征层对齐和模型能力层对齐。
数据层:让连续 latent 有可检查的视觉目标
连续 latent 的一个难点是不可见。模型生成一个向量,我们很难直接知道它到底应该表达什么视觉信息。GAP 的数据层对齐并不只是 “收集更多样本”,而是把每个 latent 监督样本组织成一种可检查的 response 范式:让连续 latent 目标和可读的视觉意图描述同时出现在同一条教师回复里。
<think>
文本推理上下文
→ <latent> visual latent tokens </latent>
→ <parser>这段 latent 预期表达的辅助视觉证据</parser>
→ 继续文本推理
</think>
→ <answer>最终答案</answer>
GAP 的 response 范式。数据层对齐的重点,是让 latent supervision 既有连续视觉目标,也有可读的 parser 描述,而不是只暴露训练数据来源配比。
具体来说,每个训练样本包含查询图像、问题、中间辅助图像和结构化教师回复。训练时,中间辅助图像不会作为学生模型的输入;它经过冻结 ViT 得到的 embedding 只作为 latent head 的监督目标。文本侧则保留 <think>、<latent> 和 <parser> 等结构,其中 <parser> 用自然语言记录这段 latent 预期表达的辅助视觉内容。
也就是说,连续 latent 负责提供可学习的视觉目标,<parser> 负责提供可读的语义解释。推理时没有辅助图像,模型需要自回归地产生这些 latent 位置,再把它们反馈给后续推理。
这样做的好处是,连续 latent 不再是完全不可检查的黑箱目标。训练信号里既有连续视觉目标,也有可读的 response 描述,便于分析 latent 监督到底在教模型生成什么视觉证据。
特征层:用低秩参数化约束视觉 latent 空间
既然不能直接把输出侧 hidden state 当作视觉输入,怎样才能让模型生成的 visual latent 更像它原本熟悉的视觉输入?
Naive Solution. 训练一个完整 latent head,让它从 decoder state 预测高维视觉 embedding。但视觉 latent 要表达高信息密度的中间视觉证据,而当前缺乏大规模、高质量 latent 监督数据。因此,在这种条件下,完整高维映射会带来大量冗余自由度和高维噪声。对于需要逐步反馈的自回归推理来说,一旦某一步 latent 学到不稳定方向,后续生成就可能继续放大这种误差。
为了应对高维映射带来的冗余,作者提出了一种新的 latent head 构建方式:PCA-aligned latent head。它让 latent head 先预测 PCA 系数,而不是直接预测完整高维视觉 embedding。这种设计带来两点好处。
第一,PCA 约束参数空间。 传统完整 head 近似优化一个 D×D 的高维映射;论文发现了,vision embedding space 是具有低秩化的特点: 通过固定 PCA basis,把需要学习的部分压到 D×d,其中 d≪D。在保留 95% 信息量1的设置下,可学习 latent 系数维度从 3584 降至 629,约为原空间的 17.6%。PCA 基由训练集中辅助图像的 vision embedding 离线计算,并在训练中固定不更新。因此,GAP 的做法不是让模型自由学习一个完整视觉重构器,而是在已有视觉 embedding 的主成分坐标系里学习 latent 系数。
第二,PCA 重构的 latent 更接近模型熟悉的视觉输入。 真实视觉 embedding 的主要变化方向已经由 PCA 提供,latent head 只需要学习如何预测这些主方向上的系数。它既节省了参数化自由度,也把生成 latent 限制在更紧凑、更接近真实视觉输入分布的子空间中,从而降低输出侧 hidden state 与输入侧 vision embedding 之间的特征错配。
从更长远的角度看,PCA 有效也可能提示一个更大的问题:视觉 latent reasoning 也许需要类似 “latent 预训练” 的阶段。当前没有专门的大规模 latent 预训练时,直接训练高秩 latent 空间很难。PCA 相当于暂时借用了模型已有视觉特征空间中的统计结构,把已有视觉编码器学到的主成分作为结构先验,用一种更轻量、更数据友好的方式完成对齐和压缩。
模型能力层:只在基座模型真正困难的样本上施加 latent 监督
特征层解决的是 latent 如何生成,模型能力层解决的是 latent 应该用在什么样的样本上。GAP 的判断是:visual latent 不应该被当作默认步骤,而应该依照模型当前能力和题目难度,分配给基座模型确实困难的样本。
这种难度感知分配的直觉是:当基座模型无法仅根据问题图像正确解答时,它往往需要额外的中间视觉证据来辅助推理;而 visual latent 正是为这类样本提供这种证据。如果基座模型已经可以稳定答对,强行加入 latent 监督可能会引入额外噪声,甚至有破坏原有能力的风险。
论文对每个训练问题使用 Qwen2.5-VL 7B 基座模型进行 8 次采样,估计经验正确率。在当前实验中,只有基座模型 8 次都未答对的样本,才保留 latent 监督;其他样本转为纯文本训练。
主结果:同时改善平均感知与平均推理
论文最关键的实验问题是:对齐后的 visual latent,是否能避免多模态感知能力提升但推理能力下降的问题?
结果显示,在本文评测设置下,GAP 同时改善了平均视觉感知和平均多模态推理表现。视觉感知侧,论文使用 HRBench4K、MMStar 和 MME-RealWorld-Lite,并定义 Avg-P 为三者 Overall 指标的平均值。

论文 Table 2。GAP 在 Avg-P 上取得本文评测方法中的最佳结果。
从表中可以看到,Qwen2.5-VL 7B 基座模型的 Avg-P 为 57.66,Dense Caption SFT 为 59.40,Monet-7B 为 59.58,LVR 为 60.75。GAP 达到 61.32,在本文评测方法中最高。单项指标上,GAP 在 HRBench4K Overall 达到 73.25,在 MMStar 达到 63.40。
多模态推理侧,论文使用 MathVista 和 WeMath,其中 WeMath 同时报告 strict 与 loose 两种准确率,并定义 Avg-R 为 MathVista、WeMath-S 和 WeMath-L 的平均值。

论文 Table 3。GAP 在 Avg-R 上取得本文评测方法中的最佳结果。
在 Avg-R 上,Qwen2.5-VL 7B 为 52.62,Dense Caption SFT 为 47.24,Monet-7B 为 47.99,LVR 为 47.66。GAP 达到 53.97。这个结果尤其值得注意:一些既有 latent baselines 在感知任务上有所提升,但平均推理指标下降明显;GAP 是唯一一种能同时改善 Avg-P 和 Avg-R 的 latent 推理方法。
组件分析:
低秩结构先验与选择性监督的作用
在数据监督质量与监督分配方面,论文比较了 Monet latent 模型、使用 Monet SFT 数据的 latent-head 训练配置,以及使用 49K 精选 latent 监督设置的全 latent 版本和难度感知版本。结果显示,精选 latent 监督在 HRBench4K 和 MathVista 平均上显著优于 Monet 125K SFT 数据相关设置;难度感知版本又优于全 latent 版本。
这说明 GAP 的收益不只来自「有 latent head」,也来自更干净、更匹配任务的 latent 监督,以及对 latent 监督使用位置的选择。
在维度约减相关实验中,论文比较了无 PCA 的完整 latent head,以及保留 85%、90%、95% 信息量的 PCA 版本。保留 95% 信息量对应 629 个主成分,在 HRBench4K、MMStar 和 MathVista 的 Avg-3 上达到 69.22,相比 Qwen2.5-VL 7B 的 65.69 提升 +3.53,也高于无 PCA 的 LH+DA。
从这个角度看,这组实验的意义不仅是验证「降维有没有用」,而是在验证一个更基本的假设:在 latent 数据规模有限、latent 预训练尚未充分建立的阶段,视觉 latent head 需要显式的低秩结构先验。PCA 提供的主成分坐标系让模型优先学习视觉 embedding 中方差最大、最稳定的变化方向,而不是把优化预算浪费在完整高维空间的冗余自由度上。
论文对这一结果的解释是:PCA 同时起到了子空间约束、容量控制和输入空间参数化的作用。它并不证明 PCA 是唯一可行的低秩方法,但说明将生成 latent 约束到经验视觉 embedding 坐标系中,是比不受约束的完整 head 更稳健的方向。也可以把它理解为一种过渡方案:在缺乏大规模 latent 预训练的情况下,先借助模型已有视觉特征空间做对齐和压缩。
生成的 latent 是否真的有视觉信息?
一个自然疑问是:GAP 的收益是否只是来自增加了 latent token 位置?如果模型只是通过test-time scaling 的方式来获得收益,而这些连续 token 本身没有有用内容,那么视觉 latent reasoning 的有效性则会大打折扣。为此,论文设计了推理干预实验,实验设置如下:
- 原始基座模型:Qwen2.5-VL 7B,不使用 latent,用来给出基础能力参照;
- 纯文本监督对照:Dense Caption SFT,使用同一批精选数据做纯文本 SFT,用来判断收益是否只是来自更细的文本描述;
- GAP 无 latent 生成(zero latent):使用 GAP 模型,但禁用 latent 生成,用来观察 GAP 的训练本身是否能带来视觉理解增益;
- GAP 噪声 latent(noise latent):使用 GAP 模型,但用高斯噪声替换模型正常预测的 latent 内容;
- GAP 预测 latent(clean latent):使用 GAP 模型,并保留模型自生成的 latent 特征。

正常生成的 latent 高于禁用 latent 和噪声 latent 设置,说明收益不只是来自额外 token 位置。
在 HRBench4K 与 MathVista 的 Avg-2 上,基座模型为 68.31,Dense Caption SFT 为 68.79。GAP 模型在禁用 latent 生成后仍达到 70.33,说明具备 latent 训练目标的模型本身会学习到与视觉更加相关的推理模式。进一步使用正常生成的视觉 latent 后,Avg-2 达到 72.13;而用高斯噪声替换 latent 内容时下降到 69.69,甚至比 Dense Caption SFT 更差,则说明了 GAP 的收益来自于生成的 visual latent, 而非单纯的增加推理时的算力。
latent token budget:不是越多越好
论文还分析了 latent token budget。非零 token 预算被组织为方形 latent 网格,例如 4 个 token 对应 2×2,16 个 token 对应 4×4,36 个 token 对应 6×6。

latent token 容量有收益,但并非单调增加;36 个 token 在 Avg-3 上最好,16 个 token 也很接近。
结果显示,在 HRBench4K、MMStar 和 MathVista 的 Avg-3 上,36 个 token 达到最高平均值 69.22,16 个 token 也接近,为 69.11。继续增加到 64 或 144 个 token 后,平均表现并没有继续提升。
但这个结果不能简单理解为「36 个 token 就是普适最优」。更合理的解释是:latent token 预算需要和图像分辨率、任务类型一起看。MathVista 和 MMStar 的输入分辨率相对较低,需要建模的中间视觉证据也更压缩,较小的 latent 网格往往已经足够;如果继续增加 latent token 数,自回归生成链会变长,后续 latent 更依赖前面已经生成的内容,暴露偏差和噪声反馈反而可能被放大。
相比之下,HRBench4K 面向高清图像,更容易需要局部、细粒度的中间视觉证据。对这类任务来说,更多 latent token 可以提供更细的空间承载能力,帮助模型在内部形成更充分的视觉线索。因此,视觉 latent reasoning 的 token 预算并不是一个单调的容量参数,而是需要在图像分辨率、任务粒度、推理成本和自生成 latent 的可靠性之间取得平衡。
结论:
要补上的不是一步推理
而是输入与输出之间的 GAP
这篇论文的核心贡献,在于指出了一个当前 latent 推理的失败模式:在 pre-norm MLLM 中,输出侧 hidden states 与输入侧 vision embedding 可能处于不同的范数区间和经验子空间,直接采用「输出即输入」会让 latent 分布错配。
GAP 的回答是三层对齐:
- 数据层:用辅助图像监督和 parser 文本让 latent 目标更可检查;
- 特征层:用 PCA 对齐的 latent head 将生成 latent 对齐并重构回 vision embedding 空间,使自生成的视觉证据更输入兼容;
- 模型能力层:用难度感知分配将 latent 监督放在基座模型更需要的样本上。
从结果看,GAP 在本文评测设置下同时提升了平均视觉感知与平均多模态推理表现;从干预实验看,正常生成的视觉 latent 携带了任务相关信号;从 token 预算扫描看,latent 容量需要控制,而不是简单做大。
因此,GAP 在视觉 latent reasoning 要补上的并不只是推理链中的一步,而是输出空间与输入空间之间的那个 gap。
注:这里的「信息量」指 PCA 中的累计解释方差(Cumulative Explained Variance),即主成分所保留的数据方差信息比例。
.....
#FusionINV
无需训练,用扩散反演让红外融合图像"看起来像可见光"
红外与可见光融合之后该"长什么样",这个被长期忽视的问题,才是融合图像能否真正被下游 AI 模型接受的关键。哈工大江俊君教授团队提出 FusionINV——无需任何训练,借助预训练 Stable Diffusion 的反演机制,将红外信息"穿进"可见光风格的外壳,让融合结果在保留热源目标的同时,直接兼容检测、分割等现有视觉系统。
在红外与可见光图像融合研究中,有个常被忽略却超级重要的问题:融合后的图像,到底该长什么样?红外图像靠“热量”看世界,可见光靠“颜色”看世界,二者风格天差地别。大多数现有方法虽然把信息揉在一起,却生成了既不像红外、也不像可见光的“四不像”——信息丰富,但人眼看着别扭,AI模型也认不出来,用起来像鸡同鸭讲。
为此,哈工大江俊君教授团队指出,图像融合的关键不是简单“搅拌”信息,而是让融合结果的整体气质尽量贴近可见光分布。基于此,提出FusionINV:它无需训练,就能保留红外里的关键目标(热源、人、车),同时让画面“穿上”可见光风格的外套——既自然顺眼,又能直接喂给现有AI模型,用得顺手!
- 论文: https://ieeexplore.ieee.org/document/11114795
- 代码: https://github.com/erfect2020/FusionINV
01 概要
可见光图像擅长呈现场景的细节与纹理,却易受光照条件制约;红外图像对光照和天气变化更为稳健,但在结构层次与细部表现上有所不足。红外与可见光融合的意义,正在于兼收二者之长,形成更完整、更具表现力的场景表征。近年来,围绕这一任务,研究者相继提出了自编码器、生成对抗网络以及扩散模型等多类方法,推动融合质量持续提升。然而,一个更深层的问题始终未获充分回应:现有方法生成的融合图像,往往同时携带红外与可见光的外观特征,因而落入一个游离于两者之外的新分布。这样的图像虽承载了更丰富的信息,却难以自然融入那些主要建立在可见光数据之上的下游视觉模型。 随着基础模型时代的到来,这种分布上的隔阂愈发凸显。
基于这一认识,我们提出了 FusionINV。我们所关心的,既是多模态信息的有效融合,也是融合结果在视觉分布上的恰当归属。我们的目标,是在充分保留红外与可见光互补信息的同时,使生成结果尽可能贴近可见光图像的分布,从而更自然地适配检测、分割等下游视觉系统。
为此,我们引入扩散模型的反演机制:
- 先将可见光与红外图像映射到噪声潜空间,再以可见光特征引导红外图像的反演,使红外表征在潜空间中隐式获得一定的可见光外观属性;
- 随后,在去噪生成阶段设计相应的融合规则,逐步生成更接近可见光风格的融合图像。
本工作的主要贡献如下:
- 我们提出了一个无需额外训练的融合框架 FusionINV,可直接借助预训练扩散模型的先验实现多模态融合。
- 我们首次从扩散反演的角度生成可见光风格的融合图像,从而在一定程度上弥合了融合图像与预训练下游模型之间的分布鸿沟。
- 大量实验结果表明,FusionINV 不仅提升了融合图像的视觉质量,也显著增强了其在检测、分割等机器感知任务中的适用性。
02 骨架犹在,风貌已新
可见光线索引导反演的意义,在于它揭示了一点:图像的内容结构与视觉外观,并非总是紧紧捆绑在一起。如下图所示,边缘图、语义图乃至红外图像,尽管在外观上与可见光图像相去甚远,但在可见光线索的牵引下,仍可生成结构未改而风格趋于自然的可见光式结果。
这表明,预训练扩散模型不仅蕴含着强大的生成先验,也具备在不同模态之间重新调和“内容”与“外观”的能力。对于 FusionINV 而言,这一点尤为关键。它意味着,我们可以在保持红外内容表达的同时,将生成结果自然而然地引向更接近可见光图像的分布,从而更容易为下游视觉系统所接受。
图1 可见光线索引导反演结果示意
03 方法介绍
3.1 方法概述
FusionINV 的方法可以概括为两个核心步骤:先通过可见光线索引导红外反演,使红外表征逐步获得可见光风格;再在扩散去噪过程中,以可见光外观为基础,分阶段注入红外信息,生成最终的融合图像。整个框架建立在预训练 Stable Diffusion 之上,无需额外训练,其整体结构如图 2所示。
图2 FusionINV 框架图
3.2 可见光线索引导的红外反演
我们首先对可见光图像进行反演,提取各步的潜变量与注意力特征;随后利用这些可见光线索去引导红外图像的反演过程,使红外表征在保留自身结构信息的同时,逐步具备可见光外观属性。其关键更新公式可写为:

其中, 用于控制可见光外观注入的强度。这个公式体现了方法的核心思想:以红外内容为主体,以可见光线索调节其去噪方向,从而得到更接近可见光分布的红外表示。其直观过程如图 3 所示。
图3 可见光线索引导的红外反演示意
3.3 基于外观注入的融合生成
在生成融合图像时,我们以可见光潜变量作为基础,以保证最终结果保留可见光的主要外观属性,即
仅依赖这一更新时,结果仍更接近于可见光图像,因此还需要进一步注入红外信息。为此,我们在自注意力层中分阶段替换键值特征:
其中
这一设计的含义很明确:在去噪早期注入红外信息,以影响整体结构与目标显著性;在中期引入可见光特征,以恢复自然外观;在后期交由模型自身完成细节协调,从而保证结果整体一致、风格自然。
3.4 文本条件与生成质量控制
为了保留模型的文本交互能力,并进一步提升生成质量,我们在融合去噪过程中引入 classifier-free guidance:
其中, 表示文本条件。由此,FusionINV 不仅能够完成红外与可见光融合,也保留了语言驱动的调控能力。
从整体上看,FusionINV 的核心机制可以概括为:先利用可见光线索将红外表征拉向可见光分布,再以可见光外观为基础,在扩散生成过程中分阶段注入红外信息,最终得到兼具红外信息与可见光风格的融合图像。
04 实验
4.1 实验设置
实验基于 Stable Diffusion v1.5 作为骨干网络,在单张 NVIDIA RTX 3090 GPU 上完成。可见光线索注入强度设为 ,classifier-free guidance 的权重设为 。其中,较小的 有助于在文本引导生成与内容保持之间取得更好的平衡。在去噪步数设置上,我们取总步数 ,并将外观注入过程中的两个阶段分界点设为 和 。
4.2 感知质量评价
在感知质量评估中,我们给出了基于多种感知模型的 violin plot 分布结果。考虑到这类深度感知指标对数据质量较为敏感,我们选用了质量更高的 FMB 融合数据集,以保证评价结果更具可信度。结果表明,FusionINV 在 PAQ2PIQ 和 LIQE 两项指标上优于其他方法,在 ARNIQE 和 QALIGN 上也保持了较强的竞争力。这说明,FusionINV 生成的融合图像不仅在视觉上更加自然,也在不同感知模型下表现出较好的稳定性与一致性。
图4 FMB 数据集上各红外与可见光融合方法感知评价结果对比
4.3 语义分割结果
在下游语义分割实验中,我们更关注融合图像能否被现有预训练模型直接利用。为贴近实际应用场景,我们没有针对不同数据集分别训练专门的分割网络,而是直接采用预训练的 Grounding DINO 与 SAM 进行评估。以 MSRS 数据集为例,FusionINV 在整体上取得了最好的分割表现,平均性能优于各类对比方法。值得注意的是,多数融合方法在分割任务中的表现普遍优于原始源图像,这说明融合本身确实有助于提升场景表达能力。而 FusionINV 在此基础上进一步取得最优结果,表明其生成的融合图像不仅包含更充分的有效信息,也更容易被现有分割模型理解和利用。
表1 MSRS 数据集上的语义分割结果
4.4 定性结果与下游案例
在 MSRS 数据集上,由于场景普遍存在低照度问题,可见光图像往往偏暗,细节表达受到限制。相比其他方法,FusionINV 生成的融合图像在亮度、对比度和色彩表现上更加自然,能够更有效地缓解低照退化带来的影响,整体视觉效果也更具可读性。
图5 MSRS 数据集上的定性结果
在 FMB 数据集上,FusionINV 同样表现出明显优势。面对红外目标突出、可见光细节丰富的场景,多数对比方法难以同时兼顾两类信息,常常出现细节缺失、目标不显著或伪影等问题。相比之下,FusionINV 在保持可见光自然外观的同时,较好地保留了红外图像中的关键信息,使目标更加清晰、画面更加协调。这说明,我们的方法能够更有效地实现红外信息向可见光风格图像中的自然迁移。
图6 FMB 数据集上的定性结果
进一步地,从下游任务的可视化结果可以看到两个关键现象:
- 其一,红外图像在汽车轮廓的表达上明显优于可见光图像;
- 其二,自行车目标在可见光图像中较难辨认。与此相对应,FusionINV 配合预训练模型后,不仅能够更准确地分割汽车,还能获得更精细的实例分割结果。与此同时,得益于 Grounding DINO 的开放词汇能力,其分割结果也不受 MSRS 数据集预定义类别的限制,因而能够覆盖更丰富的目标类型。
图7 FusionINV 与先进语义感知融合方法的定性对比
总结
本文提出了 FusionINV,一种无需额外训练的红外与可见光融合方法。与传统方法侧重于信息叠加不同,我们更关心融合结果最终呈现为何种形态:它不仅应当容纳红外与可见光的互补信息,也应尽可能贴近可见光图像的外观分布,从而更自然地进入现有视觉系统。
围绕这一目标,FusionINV 借助预训练 Stable Diffusion 的生成先验,通过可见光线索引导反演,将红外信息逐步纳入可见光风格之中,并在去噪过程中完成两种模态的协调融合。由此生成的融合图像,在保留关键信息的同时,也具有更自然的视觉观感和更好的下游适配性。
归结起来,这项工作的意义,不仅在于提出了一种新的融合方法,更在于重新强调了图像融合的目标:融合图像不应只是信息的汇聚之所,也应成为一种自然、可用、能够被人和机器共同理解的视觉表达。
.....
#Sparse MoE+LLM
YOLO集体沉默:Sparse MoE+LLM,用15.66M参数干翻YOLO26x的检测新范式!
深夜的电力巡检现场,无人机盘旋在高空,拍摄的绝缘子图像里,裂纹可能只有几个像素,闪络痕迹与正常表面几乎无法区分。你调试了无数个YOLO系列模型,换了数十组超参数,检测精度始终卡在瓶颈——小缺陷漏检、长尾故障误判、训练过程玄学调参……这几乎是每个做工业缺陷检测的工程师都会遇到的绝望时刻。
为什么99%的优化尝试都失败了?关键就在于:传统YOLO的卷积处理路径对所有图像一视同仁,而绝缘子缺陷具有极强的异质性——闪络、破损、正常,它们的纹理、尺度、空间分布完全不同,用同一套权重去处理,自然会顾此失彼。更糟糕的是,超参数调优还停留在人工试错的阶段,浪费大量算力却收效甚微。
但今天这篇论文给出了一条颠覆性的解决路径——将稀疏混合专家(Sparse MoE)装入YOLO26的检测头,再让大语言模型Agent自动指挥整个超参数调优流程。结果令人震撼:mAP@0.5[1]达到0.9900,mAP@0.5[1]:0.95达到0.9515,全面超越YOLOv10、YOLO11、YOLO12、YOLO26所有变体,参数量却只有15.66M,计算量58.8 GFLOPs,介于YOLO26s和YOLO26m之间。这意味着,你不需要把模型做得更大,而是让模型“学会看情况办事”——这正是MoE的精髓。
🔗 先看效果:真实场景下的缺陷追踪
在无人机拍摄的绝缘子图像中,闪络损伤(蓝色框)和破损(红色框)被精准定位,正常绝缘子(绿色框)无一漏判。这种复杂的场景中,缺陷区域极小、背景杂乱,传统方法极易误检。但YOLO26-MoE在三个尺度上协同工作,尤其在高分辨率P3分支上,MoE模块让每个样本都能激活最适合其视觉特征的专家子网络,从而精准捕捉细微纹理变化。

图4
图:绝缘子闪络损伤与破损的真实检测效果,边界框清晰区分缺陷类别,展现了模型在复杂背景下的鲁棒定位能力。
但等等,这种“按需激活”的机制是怎么实现的?它和传统YOLO的静态卷积有何本质区别?我们拆开整个架构,从Pipeline开始一步步解剖整篇论文的智慧体现在一个巧妙的设计上:用一个大脑(LLM Agent)来指挥双手(超参数调优、训练、评估),而双手内部又嵌入了更精细的“专家分工”机制(MoE)。我们从上到下拆开看看。
🚀 原理拆解:认知+执行双层自动化系统
💡 整体Pipeline:LLM Agent + Optuna 驱动自动化
论文的第一步,是定义一个可复现的优化工作流。如下图所示,整个系统分为认知模块和执行模块两层:

图1
图:LLM Agent协调的YOLO26-MoE自动优化工作流。认知模块(顶部)负责生成数据集配置和超参数搜索空间,执行模块(中部)通过Optuna TPE采样器进行50次试验循环,最后选出最优参数完成最终训练和测试。
认知模块的核心是LLM(GPT-OSS:20b),它维护着语义记忆和工具管理器,能够理解自然语言指令,并根据领域知识自动生成超参数搜索空间——比如调整输入分辨率、学习率、数据增强幅度的范围。执行模块则通过Optuna的TPE采样器进行逐次试验,每次训练20个epoch后评估验证集mAP@[0.5:0.95],并利用回调机制及早终止不佳试验。最终,最优配置 被用于100个epoch的最终训练,再在测试集上评估,并生成推理可视化。
这个流程的核心优势在于:LLM Agent不直接调参数,而是利用预训练的计算机视觉知识来指导Optuna搜索,大大加速收敛。传统贝叶斯优化只靠数值,而LLM能理解“小缺陷需要更高分辨率”、“mixup增强对小数据集有用”这类语义知识,从而缩小搜索空间。
💡 YOLO26-MoE架构:将专家路由装入高分辨率分支
现在进入模型层面。标准的YOLO26在P3(高分辨率)、P4、P5三个尺度上做检测。P3分支负责小目标,经过一个C3k2精炼模块。论文的创新点就是:把P3分支的C3k2替换成一个稀疏MoE模块,而P4和P5保持不变。为什么要选P3?因为绝缘子缺陷往往只占图像中很小的区域,高分辨率特征图中保留了最丰富的空间细节,最适合让多个专家去专门处理不同的缺陷模式。

图2
图:左为标准YOLO26,右为MoE-YOLO26。右侧在P3分支中嵌入MoEBlock,内含Router(top-k=2)、四个ConvExpert(E1-E4),通过加权聚合和辅助损失实现稀疏门控。
具体来说,给定P3输入特征 ,先通过全局平均池化得到紧凑描述子,再由一个小型MLP生成路由logits (这里专家总数E设为4)。然后取top-2个专家(K=2),计算softmax归一化权重:
每个专家是一个轻量级卷积子网络(卷积+BN+SiLU+逐点投影),只对当前输入样本求值。最终输出由选中的专家加权求和得到:
这种稀疏激活的优势是:计算量不随专家总数增加而增加(只激活K个),但模型容量更大——因为不同专家可以专门强化对不同缺陷特征的学习。
💡 辅助平衡损失:防止路由崩溃
MoE训练中的经典问题是路由崩溃——路由器很快学会只选一两个专家,其他专家得不到梯度信号。为此,论文引入了辅助平衡损失:
其中 是平均路由重要性, 是经验性专家选择频率,CV²是变异系数的平方。这个损失鼓励专家的利用分布更均匀。但为了避免在训练初期干扰检测损失,采用线性预热策略:
其中 , 次迭代。整个训练pipeline如下:

图3
图:训练阶段总损失由检测损失和辅助损失组成,辅助损失通过预热调度逐渐加入,确保训练稳定。
这个设计太巧妙了!它让路由器在初期先专注于学习基本特征,随着训练稳定再逐渐强化专家平衡,从而在避免崩溃的同时最大化模型容量。
📊 实验验证:数据碾压,统计显著
再精彩的架构都需要数据说话。论文在专为绝缘子缺陷检测构建的数据集上进行了全面评估,与YOLOv10、YOLO11、YOLO12、YOLO26各尺度变体对比。
🏆 SOTA对比:全面领先
下表是核心对比结果。我们的方法(Proposed)在mAP@0.5[1]达到0.9900,mAP@0.5[1]:0.95达到0.9515,F1达到0.9745,全部最优:

表4
图:与YOLO系列最新变体的完整对比表,Proposed方法在全部指标上取得最优,尤其mAP@0.5:0.95领先第二名YOLO12s达0.0167。
注意看训练时间:虽然Proposed的9.29小时比轻量级模型长,但比YOLO26l(15.67h)还短,而精度远超它。这就是MoE的效率优势——不需要把模型做得更大,而是让计算资源更智能地分配。
再看复杂度:

表5
图:参数量和GFLOPs对比。Proposed(15.66M, 58.8G)介于YOLO26s和YOLO26m之间,远小于YOLO26l和YOLO26x,说明精度提升来自有效容量而非盲目增大模型。
🔬 超参数调优过程
LLM Agent指导Optuna进行了50次试验,最优配置如下:

表3
图:Optuna自动搜索得到的最优超参数组合,包括imgsz=960、AdamW、lr0=0.00108等,为模型提供了精确训练基准。
优化历史的收敛曲线和超参数重要性分析也很有趣:

图5
图:50次试验的收敛历史,蓝色散点为每次目标值,红色折线为最优值,最终稳定收敛。

图6
图:超参数重要性排序,Mosaic增强贡献最大(0.19),HSV色调(0.13)、学习率与批大小(0.11)紧随其后,而warmup_epochs几乎无影响——指导调优应优先调整数据增强。
📈 训练收敛与稳定性
最终模型训练500个epoch的曲线:

图7
图:mAP@0.5(红色)在前100轮迅速升至接近1.0,mAP@0.5:0.95(绿色)稳步收敛至约0.95,训练稳定高效。
50次独立运行的小提琴图更直观地展示了模型的鲁棒性:

图8
图:五项指标在小提琴图上呈现高度集中的分布,mAP@0.5集中于0.990附近,方差极小,说明模型多次运行结果一致。
🔬 统计显著性:远超YOLO26基线
最硬核的分析在于Wilcoxon符号秩检验(配Holm校正)。以mAP@0.5[1]:0.95为例,YOLO26-MoE与YOLO26n/s/m/l/x全部五组比较均拒绝H0(p<0.05),中位数差异均为正。尤其与最强基线YOLO26l相比,在mAP@0.5[1]:0.95上仍取得显著提升(p=0.048828,中位数差异+0.001878),充分证明了MoE模块在严格IoU阈值下的定位精度优势。

图9
图:Proposed与YOLO26l的mAP@0.5:0.95箱线图对比,Proposed中位数更高、分布更紧凑,统计检验证实差异显著。
⚖️ 客观评价:精度与复杂度的权衡
当然,没有方案是完美的。本文承认了几个局限性:
- • 计算开销:由于MoE的稀疏门控和辅助损失计算,训练时间比YOLO26s等轻量级变体长,但绝对训练时间9.29小时仍在可接受范围,且推理时只激活少量专家,延迟可控。
- • 可解释性:专家的路由行为增加了模型黑箱程度,但论文通过辅助损失和统计检验间接验证了其有效性。
- • 搜索空间依赖:最优解受限于预设超参数范围,LLM Agent的知识也有边界。未来可以探索更开放的搜索策略。
但从工程落地角度看,这套方法提供了一个可复现的自动化调优框架——只要定义好数据集和搜索空间,LLM Agent就能自主完成优化,大大降低了人工调参的试错成本。
🌟 价值升华:从“一刀切”到“因材施教”
三个核心收获:
- 稀疏MoE让模型学会“看情况办事”:在P3高分辨率分支中嵌入专家路由,使模型能针对不同缺陷形态激活不同处理通路,在不扩大模型规模的前提下提升容量。
- LLM Agent = 带领域知识的智能调参师:LLM利用预训练知识指导Optuna搜索,比纯贝叶斯优化更快、更准,50次试验就找到接近最优的超参数组合。
- 统计显著性验证为论文加分:通过成对假设检验证明改进不是偶然,这在工业级部署中至关重要——要的是可靠提升,而非一次运气。
🤔 深度思考:你认为这项技术除了绝缘子检测,最可能落地在哪个AI应用场景?比如医疗影像中的病灶检测、工业质检中的微小瑕疵识别?欢迎在评论区留下你的观点!
💝 支持原创:如果本文帮到你,点赞+在看就是最好的支持!分享给你的技术伙伴,让更多人看到AI在工业领域的落地创新。
🔔 关注提醒:设为星标,第一时间获取深度技术解读!
#AI技术 #深度学习 #模型优化 #目标检测 #论文解读
参考
A novel YOLO26-MoE optimized by an LLM agent for insulator fault detection considering UAV images
.....
#VGGT-Ω
牛津 & Meta AI 推出 VGGT-Ω:前馈 3D 重建迈入 10B 参数时代,动态场景精度升 77%
在计算机视觉领域,3D 重建一直被视为一项“硬核”任务。传统的结构从运动(Structure-from-Motion, SfM)算法往往需要复杂的离线优化,而近年来兴起的前馈重建模型虽然速度快,但在处理大规模数据和复杂动态场景时尚需提升。最近,来自牛津大学视觉几何组(Visual Geometry Group, VGG)和 Meta AI 的研究团队发布了全新的重建大模型 VGGT-Ω,试图通过“规模化(Scaling)”的力量彻底改变这一现状。
它不仅将参数量推向了 100 亿(10B),更通过一套精妙的架构改进,实现了对动态场景的高精度重建,在 Sintel 等极具挑战性的基准测试中,将相机估计精度足足提升了 77%。
- 论文地址: https://arxiv.org/abs/2605.15195
- 项目主页: https://vggt-omega.github.io
- 代码仓库: https://github.com/facebookresearch/vggt-omega
- 录用信息: CVPR 2026 Oral
为什么重建也需要 Scaling Law?
在自然语言处理和 2D 视觉领域,我们已经见证了模型性能随数据和参数规模呈幂律增长的奇迹。但在 3D 视觉中,这种“规模效应”是否依然存在?
VGGT-Ω 的研究团队发现,重建任务其实是学习空间理解表征的绝佳“代理任务”。通过训练模型预测相机姿态和深度,模型被迫理解场景的几何结构、物体间的遮挡关系甚至是物体的运动规律。为了验证这一猜想,团队将模型从 2 亿参数扩展到 100 亿,并将训练数据从几千个序列增加到 400 万个。实验结果显示:性能提升的曲线几乎是一条完美的直线。
性能随规模提升的曲线
架构的“减法”与“加法”
要在如此大规模的数据上训练 10B 模型,原有的 VGGT 架构显然太重了。VGGT-Ω 通过对计算瓶颈的精准打击,实现了效率与能力的双重飞跃。
核心输入与输出流程
VGGT-Ω 作为一个前馈 Transformer 模型 ,其核心任务是将 张输入图像 直接映射为对应的相机参数和深度图:
其中, 是深度图, 包含了旋转四元数、平移向量和视场角(Field of View, FoV)。
引入寄存器注意力(Register Attention)
研究人员观察到,Vision Transformer(ViT)在处理图像时,往往会自发地利用一小部分 Token 来携带全局信息。于是,VGGT-Ω 显式地为每帧图像添加了 16 个寄存器(Registers),也称为“场景 Token”。
更有趣的设计在于寄存器注意力:在 25% 的全局注意力层中,不同帧之间的信息交换被严格限制在这些寄存器之间。这就像是开会时,每帧图像只派代表(寄存器)去沟通,而不是所有人乱哄哄地挤在一起。这种设计不仅形成了有效的信息瓶颈,强制寄存器提取高层几何特征,还让训练时的内存消耗降低了约 70%。
VGGT-Ω 架构概览
显存优化的解码头
传统的密集预测头(如 DPT)在处理高分辨率特征图时会消耗巨大的显存。VGGT-Ω 的替代方案:在分辨率高于 1/4 的层级,使用单个 MLP 配合像素打乱(Pixel Shuffle)操作进行上采样。这种设计在不损失精度的情况下,极大地降低了前向激活值的存储成本。
此外,VGGT-Ω 简化了多任务学习。它不再为点云和匹配特征设计独立的密集解码头,而是在训练时仅保留对应的损失函数(Loss):
这意味着模型在“脑子里”学会了这些能力,但不需要在输出端浪费显存去显式表达。
全局注意力的稀疏性可视化
4000 万视频中淘出的“金矿”
数据是 Scaling 的燃料。研究团队构建了一个严苛的自动化标注流水线,将互联网上的海量视频转化为高质量的 3D 训练素材。
- VLM 预过滤:利用视觉语言模型(VLM)剔除掉 50% 的“垃圾视频”(如剪辑、特效、无意义转场)。
- 动态掩码提取:使用 Grounding DINO 识别行人、车辆等可能在运动状态的物体,确保几何校验时避开这些区域。
- 一致性校验:通过多视图几何一致性检查(重投影误差等),仅保留那些能够被精准重建的片段。
最终,他们从 4000 万个视频中筛选出了 80 万个高质量序列,其中约三分之一包含动态内容。结合现有的合成数据集,VGGT-Ω 拥有了高达 400 万 个带有精确 3D 标注的训练序列,规模是前作的 15 倍以上。
性能表现:动态重建的新标杆
VGGT-Ω 的强大在动态场景中体现得淋漓尽致。在 Sintel 这种充满剧烈运动的基准测试中,刷新了性能表现。
定量评估:刷新多项纪录
在相机姿态估计方面,VGGT-Ω 在 Sintel 数据集上的 AUC@3° 指标从此前 SOTA 的 22.5 提升到了 40.0,相对提升高达 77%。在深度估计方面,AbsRel(平均绝对相对误差)也大幅下降。
相机姿态与深度估计定量对比
深度估计定量对比
定性对比:鲁棒性提升
面对重复纹理(如雪地)或剧烈的相机翻转,此前的标杆模型如 Depth Anything 3 可能会出现严重的“重影”或轨迹丢失,而 VGGT-Ω 依然能保持全局几何的一致性。
定性重建结果
与 MegaSaM 的对比
与 Depth Anything 3 的对比
在推理速度上,得益于 DINOv3 的 16-pixel patch size 和寄存器注意力机制,VGGT-Ω 在处理 1000 帧以上的长视频时,速度和显存表现均优于同类模型。
推理速度与显存对比
深入洞察:模型内部发生了什么?
除了精度提升,研究团队还通过一系列有趣的实验揭示了 10B 大模型的内在特性。
寄存器的语义对齐
VGGT-Ω 学到的“寄存器”特征不仅包含几何信息,还具有语义通用性。研究人员将模型冻结,将其场景 Token 作为 视觉语言动作模型(Vision-Language-Action, VLA) 的额外输入。在 LIBERO 机器人操作基准测试中,这一简单的操作就让平均成功率从 97.1% 提升到了 98.5%。
LIBERO 机器人基准测试结果
此外,通过对比学习,这些寄存器甚至可以与自然语言对齐,实现“用文字检索 3D 场景”。
语言对齐实验
“涌现”出的运动感知
更有趣的是,即使没有显式的运动监督,模型内部的特征也能清晰地将移动的舞者与静止的背景区分开来。这说明在学习“如何重建”的过程中,模型自发地理解了“什么是运动”。
运动感知表征可视化
数据质量的“坑”
在构建 4M 数据集的过程中,团队也总结了许多宝贵的教训。例如,传感器数据中常见的“前景泄露”、合成数据中的“薄结构失效”以及 SfM 优化中常见的“圆顶效应(Doming Effect)”。这些噪声如果处理不好,会直接导致模型在特定场景下产生幻觉。
常见数据质量问题
写在最后
VGGT-Ω 的成功再次证明了:在 AI 时代,规模化往往是通往鲁棒性的最短路径。通过将 3D 重建从一个复杂的优化问题转变为一个可扩展的学习问题,VGGT-Ω 不仅刷新了多项精度纪录,更为未来的xx 智能和世界模型提供了一个强大的几何底座。
.....
#Glance
武大&新国大等提出Glance:仅需1个样本,1小时训练,扩散模型推理加速5倍!
- 论文标题: Glance: Accelerating Diffusion Models with 1 Sample
- 作者: Zhuobai Dong, Rui Zhao, Songjie Wu, Junchao Yi, Linjie Li, Zhengyuan Yang, Lijuan Wang, Alex Jinpeng Wang
- 机构: 武汉大学、新加坡国立大学、中南大学、电子科技大学、微软
- 论文地址: https://arxiv.org/abs/2512.02899
- 代码仓库: https://github.com/CSU-JPG/Glance
这是一篇相当有意思的论文,关于扩散模型加速。我们都知道,扩散模型虽然效果惊艳,但“慢”这个字一直是它绕不开的痛。为了让它跑得更快,学术界和工业界想尽了办法,比如模型蒸馏(Distillation),但通常需要海量数据和巨大的算力成本,让人望而却步。
而这篇名为《Glance》的论文,就像它的名字一样,仅需“惊鸿一瞥”的数据,就完成了对大模型的加速,一种极为高效的方案。它的核心亮点可以用几个数字来概括:仅需1个训练样本,在单张V100上训练不到1小时,就能让庞大的扩散模型在推理时实现高达5倍的加速——例如,将原本需要50步的推理过程大幅压缩到10步甚至8步,同时画质基本不掉队。这听起来是不是有点不可思议?
上图直观地展示了Glance在数据和算力消耗上的惊人效率。与动辄需要数百万样本和数千GPU小时的传统蒸馏方法相比,Glance的成本几乎可以忽略不计,堪称“四两拨千斤”的典范。
核心思想:智能加速,而非均匀“跳步”
以往的加速方法,大多是均匀地“跳过”一些去噪步骤,就像快进播放视频,但每个阶段都用同样的倍速。这种方式虽然快,但容易丢失关键信息,导致画质下降。
Glance的作者们换了一个思路:去噪过程的每个阶段并非同等重要。他们发现,可以被“跳过”或“大步跨越”的,主要是后半段负责精调细节的步骤。而前半段构建轮廓和核心语义的步骤则需要相对谨慎。
基于这个洞察,他们提出了一种“相位感知(Phase-aware)”的加速策略,称之为“慢-快(Slow-Fast)”策略。论文的图3(Figure 3)给出了一个非常直观的例子:
如上图所示,我们可以将一个50步的去噪过程划分为两个不同速度的阶段:
- 慢速阶段 (Slow Stage): 对应去噪早期、高噪声的步骤(例如前20个时间步)。在这个阶段,模型主要在构建画面的整体结构和语义,至关重要。因此,这里的加速是相对保守的,比如采用“小步快跑”的策略,每隔一步采样一次,保证核心信息不丢失。
- 快速阶段 (Fast Stage): 对应去噪后期、低噪声的步骤(例如后30个时间步)。此时画面轮廓已定,模型主要在雕琢纹理和细节,存在大量冗余。因此,这里可以采用“大步流星”的策略,进行大幅度的跨越。例如,在剩下的30个步骤中,可能只均匀地挑出5个步骤来执行。
通过这种智能的“变速”处理,Glance在保证了核心生成质量的同时,实现了最大化的加速。
实现方式:轻量级的LoRA“双专家”
那么,如何让一个固定的模型在不同阶段采用不同的“速度”呢?重新训练一个庞大的学生模型显然不符合“高效”的初衷。
作者们想到了一个绝妙的办法:利用轻量级的LoRA(Low-Rank Adaptation)技术。这里简单解释一下,LoRA是一种非常高效的模型微调方法。它的核心思想是“冻住”几十上百亿参数的庞大基座模型不动,只在模型的关键部分旁边挂上一些参数量极小的“补丁模块”(也就是适配器)。训练时,只更新这些“补丁”的参数。因为“补丁”很小,所以训练起来又快又省资源。
Glance正是利用了这一点。他们没有动原始的基座模型,而是为其配备了两个小巧的、可插拔的LoRA适配器,分别扮演不同角色的专家:
- Slow-LoRA: 专门负责“慢速”的语义构建阶段。
- Fast-LoRA: 专门负责“快速”的细节精雕阶段。
在推理时,模型会先加载Slow-LoRA处理前期的去噪步骤,然后在某个时间点(论文中基于信噪比SNR来划分)切换到Fast-LoRA,完成后续的冲刺。整个过程就像一场接力赛,两位专家各司其职,无缝衔接。
这种方式的好处是巨大的。由于LoRA的参数量极小,训练它所需要的数据和算力自然就非常少。这也就解释了为什么仅用1个样本和1小时的训练,就能达到如此惊艳的效果。它完美地绕过了传统蒸馏方法“费时费力”的缺点,提供了一种即插即用、成本极低的加速方案。
实验效果:又快又好,泛化性强
Glance的性能究竟如何?作者在多个主流的文生图大模型(如FLUX.1和Qwen-Image)和多个权威的Benchmark上进行了全面的评测。
从上面两张表中的数据可以看出,Glance在大幅减少推理步数(NFE)的情况下,各项生成质量指标(如FID、CLIP Score等)与需要几十步推理的原始模型相比,虽有差距但依然保持了很强的竞争力,并且优于一些同样是少步数的模型。
上图的视觉对比更加直观。可以看到,Glance在8步或10步的设置下,生成的图像在语义保真度上非常接近50步的原始模型,只是在一些精细纹理上略有损失。这证明了“慢-快”策略的有效性:保住了核心,牺牲了部分细节,换来了巨大的速度提升。
为什么一个样本就足够了?
看到这里,相信大家最大的疑问是:只用一张图训练,模型难道不会“过拟合”到这张图上,只会画它吗?选择什么样的样本会影响最终效果呢?
这正是这篇论文最反直觉也最有趣的地方,作者们也专门针对“单一训练样本的泛化能力”做了详细的实验。他们尝试了用几种不同内容和来源的单一图片去分别训练模型:
- “狐狸”图像:一张模型自身生成的(即“分布内”的)卡通狐狸图片。
- “山谷风景”图像:一张同样是“分布内”的自然风光图片。
- “书店”图像:一张同样是“分布内”的、富含密集文字信息的图片。
- “真实世界”图像(分布外OOD):一张完全“分布外”的真实街景照片。
- “高斯噪声”图像:对照组。
实验结果非常有意思。他们发现:
- 关于数量:将训练样本从1个增加到10个甚至100个,模型的最终性能并没有显著提升。
- 关于样本风格:不同样本(如狐狸、风景、书店、真实世界OOD图)训练出的模型,虽然在风格上略有差异,但定量性能指标却相对接近。这说明 Glance对单个样本的选择并不特别敏感。
- 最值得注意的是,即使是使用“分布外”的真实世界图片进行训练,模型也能达到与“分布内”图片相媲美的性能。这进一步证明了Glance的强大泛化能力。
- 唯一的失败案例是使用纯粹的“高斯噪声”训练时,模型完全无法生成有意义的图像。
这说明,Glance的训练过程并不是在学习样本的具体内容(比如“一只狐狸的样貌”),而是在学习一种普适的“如何快速且有效地去噪”的动态行为。可以这样理解:那唯一的一个样本就像一个“陪练”,它的作用是为模型提供一个符合自然图像统计规律的信号,让Slow-LoRA和Fast-LoRA这两个“专家”能在各自负责的“赛段”(高噪声和低噪声阶段)里,学会如何与基座模型配合,以最有效的方式完成接力跑。它们学到的是一套通用的加速“技巧”,而非某个特定图像的“知识”。因此,一旦学会,这套技巧就可以应用到任何内容的生成任务上,展现出强大的泛化能力,只要你选择的是一张有意义、有结构的“正常图片”,而非纯噪声即可。
即使只用一张“狐狸”的图片进行训练,模型也能很好地泛化到各种完全没见过的场景提示词,比如生成建筑、风景和人物。这说明Glance学到的是普适的“加速去噪”能力,而不是过拟合到某个特定的样本上。
当然,Glance也并非完美无缺。实验同样指出了它的一个短板:在处理非常细小或密集的文字渲染时,效果会打折扣,容易出现模糊或扭曲。
写在最后
总的来说,Glance的出现为扩散模型加速提供了一个全新的、极具吸引力的新视角。它告诉我们,通过对扩散过程的深刻理解,设计巧妙的“变速”策略,再结合轻量级的微调技术,同样能实现卓越的加速效果。
.....
#UniLIP
鱼与熊掌兼得!北大x通义提出UniLIP: 训练CLIP做重建,理解不降反升,支持生成和编辑
北大&阿里通义万相提出UniLIP:两阶段自蒸馏让CLIP同时保持语义与像素级细节,双条件连接MLLM-DiT,3B模型在GenEval、WISE、ImgEdit上SOTA,可直接替换InternVL视觉编码器,代码权重已开源。
本文作者来自北京大学和阿里通义万相实验室。其中论文第一作者是汤昊,北京大学2022级博士生,发表多篇NeurIPS, CVPR,ICCV和ECCV,目前主要关注统一的多模态理解和生成。指导教授是王立威老师,北京大学智能学院教授,曾获NeurIPS 2024和ICLR 2023 最佳论文奖
01 背景
统一的多模态模型需同时具备丰富的语义(用于理解)和精细的细节(用于生成/编辑)。像VAE这样的早期方法,因其特征缺少语义,导致理解性能较差 。目前统一编码器多基于类似CLIP的语义编码器构建,但它们普遍面临一个理解与重建性能之间的权衡挑战 :
- 直接量化并重建CLIP特征,会削弱其原有的强大理解能力 。
- 为冻结的CLIP训练解码器,则因特征细节丢失导致重建质量低下,难以支持编辑 。例如,近期的RAE模型使用冻结的DINOv2进行重建,其重建PSNR仅达到了19.23 。
为应对这一挑战,UniLIP采用两阶段训练及自蒸馏损失策略 。该方法使其在实现高质量图像重建的同时,能完整保留CLIP原有的语义理解性能,成为一个强大的统一编码器,在生成和编辑任务上表现突出 。


- 论文标题:UniLiP: Adapting CLIP for Unified Multimodal Understanding, Generation and Editing
- 论文地址:https://www.arxiv.org/pdf/2507.23278
- 项目地址:https://github.com/nnnth/UniLIP
- 模型地址:https://huggingface.co/kanashi6/UniLIP-3B
02 亮点
- 无损重建训练:UniLIP提出新颖的两阶段自蒸馏方案,赋予CLIP高质量图像重建能力(压缩,PSNR ),同时保持其卓越的理解能力 8。UniLIP可直接替换MLLM(如InternVL)中的CLIP模块,保持甚至略微提升理解性能 。
- 双条件编辑架构:与RAE仅在ImageNet上实验不同,UniLIP进行了大规模生成和编辑训练 。为实现精准编辑,UniLIP设计了双条件架构,同时利用大模型的隐变量(保留图像细节)和查询嵌入(激发推理能力),确保编辑任务的高度一致性 。
- SOTA性能:UniLIP以更少的参数量() 12在GenEval ()、WISE () 和 ImgEdit () 等多个生成和编辑基准上超越了BAGEL()等更大模型 13。
03 方法3.1 CLIP重建训练,理解不降反增


为解决CLIP特征细节缺失导致的重建模糊问题,UniLIP提出创新的两阶段训练方案。该方案基于一个包含 CLIP、像素解码器及投影层的自编码器架构。
第一阶段:解码器对齐。 此阶段冻结 CLIP,仅训练像素解码器和投影层,使其学习从固定的 CLIP 特征中重建图像。训练目标为:
其中 代表像素级重建损失, 代表使用LPIPS度量计算的感知损失。
第二阶段:自蒸馏微调。 由于原始 CLIP 特征缺乏像素细节,第一阶段的重建质量受限。因此,此阶段将共同训练 CLIP,并通过自蒸馏方法约束其特征,防止其偏离原始分布,从而在注入细节的同时保留语义。训练目标为:
其中 是蒸馏损失的权重, 表示原始CLIP特征, 是微调后的CLIP特征。UniLIP经验性地发现将 设为1就足够了。
该方案克服了语义理解与像素重建的权衡(如下表所示,理解性能不降反增),实现了高保真压缩和完备的特征表示(兼具高级语义与像素细节) 。

3.2 用于图像生成和编辑的双条件架构

UniLIP 借鉴了 MetaQuery 范式,但突破了其在图像编辑任务中的信息瓶颈。传统方法仅用固定数量的查询嵌入(Query Embeddings)连接 MLLM 与扩散模型,这在传递参考图像丰富的像素级细节时力不从心,常导致编辑结果细节退化或内容不一致。
为此,UniLIP提出了一种双条件架构。该架构在查询嵌入之外,额外引入MLLM的多模态隐藏状态作为第二个条件 ,有效补充了缺失的像素级信息。这种设计成功地将复杂任务解耦:MLLM 专注于高级推理和意图理解,DiT 则基于这套无损传递的、兼具高级语义与底层细节的丰富线索,进行高保真度的图像合成。
04 实验4.1 模型架构
UniLIP包括1B和3B两个版本,分别基于InternVL3 (1B/2B) 与SANA (0.6B/1.6B) 集成 。视觉编码器采用InternViT,像素解码器来自DC-AE 。
4.2 训练数据
UniLIP的生成数据来自BLIP3-o,包括38M的预训练数据和60k的指令微调数据。UniLIP的编辑预训练数据来自GPT-Image-Edit-1.5M,指令微调数据来自包含46K编辑数据的ShareGPT-4o-Image。
4.3 图像重建

UniLIP在256x256分辨率下超越了对CLIP进行量化的方法 。在448x448分辨率下,由于打开CLIP进行重建训练,UniLIP显著优于使用扩散解码器的Emu2 。
4.4 多模态理解

UniLIP可以直接替换InternVL的视觉编码器在理解基准上进行测试。得益于重建训练对原始能力的有效保持,UniLIP实现了同规模最好的理解性能,并超越了采用量化CLIP特征的更大模型(如Tar 7B)
4.5 图像生成

4.6 图像编辑

在ImgEdit-Bench图像编辑基准上,UniLIP以3.94的高分超越了OmniGen2等先进模型。其强大性能归功于UniLIP特征的丰富细节与精准语义对齐能力。UniLIP创新的双条件架构充分利用了这些特征,确保了编辑的精确性和非编辑区的一致性。
4.7 可视化

在生成任务中,UniLIP可以生成美观且紧密遵循用户提示的图像;而在编辑任务中,UniLIP可以在准确修改图像的同时保持周围区域的一致性。
05 总结
UniLIP通过精心设计的两阶段自蒸馏训练,有效解决了CLIP在统一模型中面临的语义理解与像素细节保留的矛盾 。其创新的双条件架构无缝连接了MLLM与扩散模型,确保了生成和编辑任务的高保真度与一致性,为下一代统一多模态模型提供了新范式 。
.....
#25种正则化方法
训练中的一个关键因素是网络的正则化,它可以防止模型在训练的过程中出现过拟合的现象。本文分析了过去几年发展起来的几种正则化方法,显示了不同CNN模型的显著改进。
一些图像处理任务,如图像分类和目标检测,已经通过使用卷积神经网络(CNN)性能得到了显著的改进。像ResNet和EfficientNet一样,许多架构在创建时已经在至少一个数据集上取得了出色的结果。训练中的一个关键因素是网络的正则化,它可以防止模型在训练的过程中出现过拟合的现象。这项工作分析了过去几年发展起来的几种正则化方法,显示了不同CNN模型的显著改进。这些工作分为3个主要领域:
第一:是“数据正则化”,其中所有的方法都专注于对于输入数据的更改
第二:是“结构正则化”,主要是修改神经网络或核函数生成特征映射的过程
最后:是“标签正则化”,主要是对给定输入的标签进行转换和修正
1 简介
1.1 背景说明
卷积神经网络已经在一些与计算机视觉相关的任务上取得了相当不错的结果,如图像分类和目标检测。这种成功可以用卷积神经元的工作原理来解释:它根据图像的空间属性来突出给定的特征。浅层网络注意是归纳一些形状或者纹理特征;然而,更深层次的网络可以检测出更复杂更抽象的特征,比如整个物体或人脸。如今,从生物识别到疾病检测,很难找到其他没有CNN的计算机视觉技术。
关于CNN的一个关键问题是如何对卷积核进行堆叠?以在给定的任务上实现最佳的结果。在几个不同的任务上使用相同的基本架构是很普遍的,只需要改变输出。例如,EfficientNet是一种用于图像分类的神经网络,它也被用于EfficientDet体系结构来处理目标检测任务。
该体系结构可能是计算机视觉模型的核心部分;然而,在开始训练之前还有其他相关的要点。例如,优化技术可能会影响最终的性能。即使是kernel的初始化方法都有可能会影响模型最终的性能。
本研究集中讨论在这些可能影响最终性能因素的一个方面:正则化。
根据所使用的正则化策略,一些架构可以在最终结果上获得相关的增益。使用良好的正则化方法的一个重要方面是,它不会影响最终模型的性能。这意味着,独立于使用或不使用一个正则化方法,模型的推理计算成本是相同的。然而,在某些情况下,它可以影响训练阶段的性能,使用少量的计算开销或训练周期。无论如何,产出的结果通常是可以补偿这一成本的。
1.2 为什么正则化方法有效?
CNN通常用于计算机视觉任务,如图像分类和目标检测,以创建像人类视觉一样强大的视觉模型。如果考虑到可用的信息数量,很明显,训练任务需要更多数据可变性。考虑到一个健康的大脑和眼睛正常的人,不考虑睡觉的时间,平均每天保留大约16个小时的新信息。
即使考虑到像ImageNet这样的巨大数据集,与人类大脑通过眼睛接收到的数据数量相比,可用的图像数量也是最小的。这种新数据的不可用性可能会导致一种称为过拟合的情况,即模型学习如何很好地表示训练数据,但它不能有效地处理新信息,即测试数据。这种情况通常发生在模型在可用的训练信息中进行了详尽的训练时,而它不能很好地扩展到其他新信息中。
作为一个人工神经网络,神经网络的训练步骤可以描述为一个优化问题,目标是训练得到一个合适的权值;假定给一个输入和损失函数,可以转换期望的信息输出最低可能的误差。实现这一目标的一种方法是最小化以下功能:

其中|. 为Frobenius norm, 为输入数据, 和 分别表示权重 矩阵和目标标签。Frobenius norm增加了 和 之间的相似性。
这种解释有一个主要优点:这个公式可以通过矩阵分解进行优化,产生X的结构化分解。然而,只有当W或 固定在优化两个矩阵时,将原始方程转换为非凸公式时,才能实现全局最小值。如果矩阵分解为矩阵近似,可以解决这个问题:

其中,目标是估计矩阵A,最终得到一个凸优化,这意味着它有一个全局最小值,通过梯度下降算法可以找到。当使用正则化时,这个方程变为:

其中,描述了基于A的正则化函数,而λ是设置正则化函数对目标函数的影响程度的标量因子。正则化方法的一个关键方面,独立于训练阶段的工作,是为了防止模型过拟合。它通过增加CNN不同阶段的数据的可变性来操作。当处理图像时,最直接的方法是随机改变图像,比如旋转和翻转。虽然这种类型的正则化工作得很好,但应该考虑到一些问题。例如,一些转换可能会将图像扭曲成分类中的另一个现有类。更直接的例子是MNIST数据集上的基线图像分类:如果旋转太多,输入“6”可能会转换为“9”,导致模型学习错误的信息。
1.3 正则化和标准化
机器学习中的一个普遍问题是调整给定模型的参数,使其对训练数据和新的数据能够有更好的鲁棒性。旨在减少不属于训练集的数据上的误差的算法的集合被称为正则化技术。
标准化和正则化技术的一个主要区别是,正则化在训练期后不再使用,而标准化保留在模型之中。例如,Cutout和MaxDropout在推理期间没有被执行,但是Batch Normalization在推理时需要执行。
1.4 正则化主要用在哪里?
尽管大多数作品都应用于输入,但也有很多研究致力于内部结构和标签层。图1描述了本次调查中科学工作的比例。

图1
大约44%的工作依赖于对输入的正则,其中最著名的是数据增强策略。CNN输入中参数和结构的容易改变可以解释如此多的工作量。图像处理和计算机视觉驱动的应用程序在处理深度学习时仍然发挥着重要的作用。
第二种最常见的正则化方法是那些对模型的内部结构进行正则的方法。Dropout为这一研究领域的进展做出了很大的贡献。一些作品主要是基于Dropout进行的改进,当然其中也有一些是全新的方法。
1.5 正则化方法的缺点
第一个是标签不随输入或在神经网络的中层直观地改变。在这2个级别中执行变化是更自然的,因为在视觉上更容易理解在训练和推理过程中发生了什么。然而,要解释执行标签更改时会发生什么就比较困难了。尽管最初的研究认为它防止了过拟合问题,但它未能解释为什么会避免这种情况。
另一种解释是对大多数方法缺乏数学解释。幸运的是,一些技术,如Dropout和Mixup,对它们的内部机制提供了有趣的见解。
最后,最好要记住,开发机器学习领域最关键的步骤之一是创建标签可靠的数据集。虽然本文关注的是正则化策略,但值得记住,最终,与标签的组合方式上的突破可能会促进更强大的系统。因此,强调更多与标签正则化相关的工作值得研究。
2 正则化方法大集结
2.1 Cutout
Cutout是一种直接而强大的数据增强的技术。在训练过程中,它在输入神经网络之前随机去除图像的区域。Cutout作者详尽地分析了CIFAR-10和CIFAR-100数据集中被移除区域的理想大小。

图3 Cutout
理想的大小根据每个类的实例的数量和给定数据集的类的数量而变化。例如,在CIFAR-10数据集上的最佳结果是通过删除一个大小为16×16的patch来完成的,而对于CIFAR-100,关于最佳结果的区域大小是8×8。对于SVHN数据集,通过使用网格搜索找到了最佳的crop大小为20×20。对于STL-10数据集,最佳结果的crop大小为32×32。
2.2 RandomErasing
RandomErasing是在Cutout技术的基础上进一步的发展。Cutout是对图像的随机裁剪,而RandomErasing关注的是在空白空间中去除并随机添加信息,例如噪声。与Cutout不同,RadomErasing并不是每次都删除图像的一部分。在这项工作中,作者在3种不同的分类数据集(CIFAR-10,CIFAR-100和Fashion-MNIST)上评估了该方法,用于目标检测的VOC2007数据集,以及用于ReID的三种不同的CNN架构(IDE, TriNet和SVDNet)。

图4 RandomErasing
对于分类任务,4种不同的架构被用于评估目的:ResNet、ResNet with pre-activation、Wide Residual Networks和ResNeXt。在所有情况下,RandomErasing方法完成了相关的误差减少(至少0.3%)。
对于目标检测任务,当只使用该数据集中的可用数据训练模型时,平均精度(mAP)提高了0.5,当训练数据与VOC2012训练数据集结合时,平均精度(mAP)提高了0.4。图4显示了随机擦除是如何工作的。
2.3 AutoAugment
AutoAugment试图找出给定数据集上的哪些transformations可以提高模型的准确性。它使用5个不同的transformations为给定策略创建一个搜索空间,这些transformations由2个附加参数控制:给定更改概率(Cutout,SamplePairing,Shear X/Y,Translate X/Y,Rotate,AutoContrast,Invert,Equalize,Solarize,Posterize,Contrast,Color,Brightness以及Sharpness)和变化幅度。

图5 AutoAugment
然后将这些策略输入一个“child”模型,该模型是一个用部分训练数据集训练的CNN。这个CNN的准确性被告知一个“控制器”模型,它是一个循环神经网络(RNN)。这个RNN输出一个给定策略在未来被使用的概率。在控制器训练过程的最后,使用5个最佳策略(每个策略有5个子策略)来训练最终的模型,用于评估数据集。使用这些生成的策略和子策略使得AutoAugment在CIFAR-10、CIFAR-100、SVHN和ImageNet数据集上达到了最先进的结果。
这种方法的一个巨大优势是这些策略在不同数据集之间的可迁移性:在最初的工作中,为ImageNet找到的策略被用来训练其他5个不同的数据集,即使没有在这些数据集上训练AutoAugment,也能显著改善结果。这种方法的一个缺点是用来训练控制器模型的时间:例如,对于ImageNet数据集,它需要大约15000个小时的处理,这在一些情况下可能是不切实际的。Fast AutoAugment的目标就是通过一种新的算法来克服这一瓶颈,在产生相似结果的同时,显著减少搜索过程所需的时间。
2.4 PBA
Population Based Augmentation(PBA)不仅展示了一种新的增强算法,而且展示了调度策略而不是固定策略,改进了以往研究的结果。

图6 PBA
在每3步中,它改变了一半的策略,即1/4的权重变化,另外1/4的超参数变化。虽然自动增强意味着在CIFAR-10数据集上的训练开销为5000个小时,但PBA只增加了5个小时。
2.5 RandAugment
如前所述,寻找最佳数据增强的方法的一个巨大瓶颈涉及到它们的计算负担,因为它可能比自己的神经网络训练需要更长的时间。另一个问题与在搜索过程中发现的策略有关,这可能会导致次优策略,即它确实改善了局部的结果;然而,它并不会带来最好的全局结果,因为它使用了一个较浅的神经网络,并假设这个规则可以应用于任何其他的,更深的架构。

图7 RandAugment

14个最常见的策略
RandAugment使用了在之前的工作中发现的14个最常见的策略,并在训练期间对每个策略的大小进行搜索,从而消除了初步探索步骤的需要,并根据当前的训练CNN定制数据放大。结果表明,该方法不仅比以往的方法更快,而且显著改善了结果。
2.6 Mixup
训练CNN的一种可能性是,Mixup来自训练数据集中的2幅图像,并迫使模型可靠地确定这种Mixup图像属于哪一类。然而,如何为这种Mixup生成编码标签并不普遍。提供这个新的输入/输出训练对可以让模型从损坏的输入中学习更多的特征。最初的工作表明,使用这种方法的模型不仅可以改善图像分类任务的结果,而且可以改善语音识别、生成对抗网络的稳定、表格数据集等问题的结果。图5演示了Mixup的工作原理。

图5 Mixup
2.7 CutMix
另一种混合输入和标签以改善结果的策略是CutMix。与Mixup不同,CutMix会替换给定输入中的整个区域,并通过给予与每个类使用的区域相同的权重来更改标签。例如,如果一只猫的图像被30%的图像替换为一个飞机的图像,则该标签被设置为70%的猫和30%的飞机。这一策略的结果有了显著的改善。通过使用绘制Grad-CAM可以观察到生成的Heatmap更好地突出了更准确地定义感兴趣目标的区域。

图6 CutMix
2.8 CutBlur
一些针对图像处理的深度学习任务,如图像分类或目标检测,可以通过使用数据增强来提升模型性能。一些工作,如AutoAugment、Cutout和RandomErasing可以通过对训练图像应用一些transformations来显著改善结果。然而,对于超分辨率(SR)任务,文献中缺乏提出正则化技术来明确地处理这个问题的工作。

图7 CutBlur
尽管可以使用上述技术并可能改善结果,但它们并不是通过手工设计来处理SR问题的。到目前为止,唯一发现的方法是CutBlur,它的工作原理是用来自类似区域的低分辨率(LR)版本替换高分辨率图像(HR)上的给定区域。作者表明,CutBlur有助于模型在SR问题上更好的推广,但同样的技术可以用于重建被高斯噪声退化的图像。
2.9 BatchAugment
训练cnn的一个重要超参数与mini-batch size有关,mini-batch size用于计算反向传播中使用的梯度。该超参数通常采用GPU的上限,这对于提高训练收敛速度至关重要。BatchAugment工作巧妙地利用了这个限制。它不只是使用来自数据集的不同实例来满足整个内存,而是使用默认的数据扩展设置来考虑内存限制的一半,然后复制具有不同数据扩展可能性的所有实例。这听起来像是一个简单的技巧;然而,结果表明,使用这种方法的神经网络在最终结果上有显著的改善。另一点是,通过复制增强图像,分析表明需要更少的时间点来实现收敛。
2.10 FixRes
图像分辨率可能会影响训练周期效率和最终的分类精度。例如,对EfficientNet的研究通过将输入大小作为影响最终结果的参数之一,从而强调了这一想法。然而,如果一个模型被训练,例如,分辨率为224×224,测试集的推理应该使用一样的图像分辨率。

图8 FixRes
FixRes提出的工作强调了测试集的分辨率应该高于用于训练的分辨率。这种变化不仅产生了一个更可靠的神经网络,而且比传统方法训练得更快,因为它需要更少的计算量,因为用于这种目的的图像比用于推理的图像要小。该方法表明,在使用迁移学习时,它可以改善在其他数据集上的结果。
2.11 Bag-of-Tricks
这里分析的工作的一个关键点是,它们经常没有将任何其他正则化方法与它们当前的研究结合起来。因此,很难知道两个正则化器是如何相互影响的。Bag-of-Tricks研究通过结合几种已知的正则化方法,如Mixup、Label Smoothing和Knowledge Destilation。消融研究表明,如果应用一定的方法,最终结果可以显著改善。例如,使用这种方法组合的MobileNet在ImageNet数据集中提高了近1.5%的结果,这是一个显著的收益。然而,该研究缺乏对层间正则化方法的深入评价,如Dropout。
3 结构正规化
正则化方法可以以不同的方式工作。在本文中,将结构正则化定义为在训练过程中改变权值而不改变输入kernel值的方法。本节分为两个主要部分:第一部分介绍了Dropout如何工作和它的一些变体的更深入的描述,如SpatialDropout和DropBlock。在第二部分中,描述了其他旨在执行其他张量操作的方法,如Shake-shake Regularization。
3.1 Dropout and variants
Dropout被认为是一种简单但功能强大的正则化器,旨在去除一些神经元,从而迫使整个系统学习更多的特征。最初的工作表明,它不仅可以应用于cnn,还可以应用于多层感知器(MLPs)和受限玻尔兹曼机(rbm)。

图9 Dropout
在训练阶段的每一步,通过伯努利分布来估计每个神经元的dropping out概率,从而在训练过程中增加了一些随机性。最初的研究表明,被dropping out的神经网络可以比标准的神经网络更好地进行推广。
3.2 MaxDropout
Dropout随机去除训练阶段的神经元,Maxdropout则根据神经元的激活情况去激活神经元。它首先将张量s值归一化,然后将每一个大于给定阈值p的输出设置为0,因此这个值越高,它就越有可能被禁用。

图10 MaxDropOut
最初的工作表明,它可以改进在CIFAR-10和CIFAR-100数据集上的ResNet18结果,而且它在WideResNet-28-10模型上的性能也优于Dropout。
3.3 DropBlock
DropBlock表明,去除给定张量(即特征图)的整个区域可以帮助模型更好地泛化。通过使用ResNet-50和AmoebaNet-B模型对图像进行分类任务,使用retinanet模型对物体进行检测,使用ResNet-101模型对图像进行分割,结果表明该模型比Dropout等内部正则化算法对结果有更好的改善。

图11 DropBlock
DropBlock应用在CNN的每个feature map上,从一个小的比例开始训练,然后慢慢的增加它的值。它的实验显示了ImageNet数据集上的相关结果,当使用ResNet-50时,Baseline精度提高了近2%,打败了其他正则化方法,如Cutout和AutoAugment,使用AmoebaNetB时,基线精度提高了约0.3%。在目标检测任务中,retavanet模型在AP度量上改进了1.5%以上。
3.4 TargetDrop
注意机制可以被整合到一个给定的正则化器中,这样它就可以在适当的区域发挥作用。例如,TargetDrop将这种机制与DropBlock结合在一起。在训练过程中,它允许整个系统去除给定通道上的大多数有区别的区域。结果表明,这种方法不仅比DropBlock获得了更好的结果,而且,通过使用grade-cam,在决定给定输入属于哪个类的区域中显示了更多的一致性。

图12 Dropout,DropBlock,TargetDrop
3.5 AutoDrop
虽然有效,但Dropout缺乏选择掉哪个神经元的空间信息。DropBlock的策略是将整个随机区域放在隐藏层上,而不是单一的神经元,从而迫使CNN学习更好的空间信息。然而,Drop方法是手动设计和固定的,如果这些模式可以在训练中学习,这可能会得到改进。

图13 AutoDrop
AutoDrop迫使CNN根据训练信息学习最佳设计,使用控制器逐层学习最佳滴模式。CIFAR-10和ImageNet的结果表明,这些模式改善了结果,并可以在数据集之间传输。
3.6 LocalDrop
Rademacher复杂性被用来重新定义Dropout和DropBlock。通过对该问题进行广泛的数学分析,提出了一种新的两阶段正则化算法。该方法虽然耗时,但针对图像分类的不同CNN架构取得了相应的改进。CIFAR-10的结果表明,LocalDrop方法至少可以改善结果0.15%,比最佳结果提高了近0.6%。CIFAR-100的结果改善了0.4%;然而,在这种特定的情况下,在反向传播时删除权重的变化最终会得到略微更好的结果,提高了0.5%。除了改进之外,该方法只适用于3分支ResNet,很难直接比较其他方法。
3.7 Shake-Shake
在这些体系结构上强制正则化的一种方法是在训练期间为残差连接的每个分支赋予不同的权重。最初的ResNets的工作原理是在每个分支上添加权重,没有任何区别。在训练过程中,Shake-shake作用于3个分支的ResNets,在前传时改变每个分支的乘因子,在后传时乘以不同的值,从而改变每个分支对最终结果的影响。对于推理,它将每个分支乘以0.5倍。
3.8 ShakeDrop
解决Shake-shake问题的一个改进是ShakeDrop。它不仅适用于ResNeXt架构,也适用于ResNet、Wide ResNet和PyramidNet。为了实现这样的结果,ShakeDrop改变了由Shake-shake提出的配置。这些分支上的Shake组合显示,ShakeDrop有更好的性能,不会被困在局部极小值上。结果表明,该方法可以比前面提到的每一种体系结构获得的原始结果更好。
3.9 Manifold Mixup
神经网络通常被概括为一个函数,给定输入数据和一组可学习参数,输出相应的目标值。Manifold Mixup的作用类似于Mixup,然而,它在CNN的任何内部层中运行,而不仅仅是在输入层。深度神经网络可以被认为是一组较小的神经网络,每一个都输出一些期望的特征;因此,如果所有的子网都运行良好,则可以认为最终的结果是良好的。
Yang等提出了一种新的损失函数设计策略:首先通过前馈过程计算传统的小批量损失。然后,它从原始网络生成子网络,然后通过使用不同的图像变换提供相同的小批处理,为每个模型计算一个损失。最后,将传统损失与各个子网络的损失相加,计算出最终损失。该技术在不同的数据集和CNN架构中显示了巨大的潜力改进。
3.10 其他方法
在过去的几年里,残差连接的使用,首先在众所周知的神经架构ResNet中引入,并对其进行了进一步的改进,在几个任务上取得了相关的成果。后来的研究表明,这种成功是由于创建了一种名为“identity mapping”的结构,它是对原始输入的重建。残差连接迫使模型学习如何构造这些结构。
4 标签正则化
有方法使用Label Smoothing作为其正则化策略的一部分。例如,Mixup根据2个不同图像之间的插值来平均标签的值。同样的规则也适用于Manifold Mixup技术;然而,数据插值是在层之间计算的,并使用相同的微积分来重置标签值。
另一个使用标签转换的正则化器是Cutblur。在本例中,使用了反式格式,在训练期间,可以将标签与输入倒置,使输入作为标签,模型将按照预期收敛。这一预期结果的原因是由于低分辨率和高分辨率图像的切割尺寸,这是没有预先定义的。这意味着输入可以是高分辨率图像中的低分辨率图像,标签可以是高分辨率图像中的低分辨率图像。因此,将标签和输入倒排仍然是有意义的。
其他方法也可以通过使用Manifold Mixup来改进它们的结果。例如,Cutout从输入中删除部分,所以根据crop size“remove”部分标签也是有意义的。假设crop size是图像的25%,因此活动类可以从1下降到0.75。同样的策略也适用于RandomErasing。在训练过程中丢弃神经元的方法,如Dropout,可以在训练过程中将热标签的值降低到相同的范围。
4.1 Label Smoothing
在一般的分类任务中,使用热编码标签是普遍存在的。从2015年开始,Label Smoothing提出了一种在标签编码过程中的正则化技术,通过修改hone-hot表示的每个位置上的值。
Label Smoothing的工作原理是防止了2个主要问题。
- 首先,过拟合问题
- 其次,对于不确定结果的过度自信问题
根据作者论述,通过使用编码标签上的平滑因子,应用在向量上的Softmax函数产生更接近平滑编码向量的值,限制了反向传播算法中使用的值,并根据类产生更真实的值。
4.2 TSLA
使用标签平滑的一个困难是找出ϵ的什么值(即平滑因子)是理想的,无论是对于一般的还是对于特定的数据集。最初的工作表明,ϵ=0.1是极好的条件;然而,两阶段标签平滑(TSLA)表明,一般来说,梯度下降结合Label Smoothing技术只能提高结果,直到一定的训练点,之后最好将活动类的所有值设置为0和1。例如,当在CIFAR-100数据集中对ResNet18进行200个Epoch的训练时,结果表明,当使用Label Smoothing时仅仅到160个Epoch便可以获得最好的性能。
4.3 SLS
通常,很难为Label Smoothing因子定义适当的值。结构标签平滑(SLS)提出通过估计贝叶斯估计误差来计算这样的值,根据作者,这有助于定义每个实例的标签边界。实验表明,该方法在不同场合都可以克服传统的标签平滑方法。
虽然这项工作在MobileNetV2上得到了充分的评估,但它没有考虑到其他的神经网络架构。尽管一些流行的数据集被用于比较目的,例如,CIFAR和SVHN,但这项工作仅限于MobileNet-V2。
4.4 JoCor
本文提出了一种避免噪声标签对神经网络的影响的新方法。JoCoR在同一数据集上训练2个相似的神经网络,并试图关联2个不同的标签。该方法通过将2个网络的交叉熵损失加上它们之间的对比损失来计算损失,然后只使用批处理上最可忽略的损失来更新架构的参数。
作者认为,通过使用最小的值来更新参数,这2种网络都与预测结果一致,而且标签的噪声往往更小。虽然该方法是针对弱监督问题开发的,但它可以很容易地适应传统的监督问题,如数据分类,以改善结果。这种方法的缺点是使用2个神经网络进行训练,这需要更多的处理和内存。
....
#RL-PPO理论知识
关于强化学习中PPO算法的全面解读,从基础概念到算法细节,旨在帮助读者深入理解PPO的理论基础和实现机制。
在去年的这个时候,我以deepspeed-chat的代码为例,解读了rlhf运作的流程。当时写这篇文章的目的,主要是想让读者在没有强化学习知识的情况下,能从直觉上快速理解这份代码,以便上手训练和修改。
由于这篇文章侧重“直觉”上的解读,因此有很多描述不严谨的地方。所以去年我就想接着敲一篇比较严谨的介绍强化学习理论的文章(策略梯度->actor-critic -> PPO),但是由于敲公式真得太累了,所以一直delay到今天。
所以今天这篇文章就来做这件事,我的主要参考资料是Sutton的这本强化学习导论(http://incompleteideas.net/book/the-book-2nd.html)。在现有的很多教材中,一般会按照这本导论的介绍方式,从MDP(马尔可夫决策过程)和价值函数定义介绍起,然后按照value-based,polciy-based,actor-critic的顺序介绍。但是由于本文的重点是actor-critic,所以我在写文章时,按照自己的思考方式重新做了整理:
- 我们会先介绍policy-based下的优化目标。
- 然后再介绍价值函数的相关定义。
- 引入actor-critic,讨论在policy-based的优化目标中,对“价值”相关的部分如何做优化。
- 基于actor-critic的知识介绍PPO。
为什么在网络上已经有无数强化学习理论知识教程的前提下,我还要再写一篇这样类型的文章呢?主要是因为:
- 作为一个非RL方向出身的人,我对RL的理论知识其实一直停留在“它长得是什么样”,而不是“它为什么长这样”
- 当我想去探究“它为什么长这样”的时候,我发现最大的难点在各类资料对RL公式符号定义的太混乱,或者写的太简略了。举例来说:
- 我们在RL会看到大量 这样求期望的形式, 但是很多公式会把E的下标省略掉, 使人搞不清楚它究竟是从哪里采样,而这点非常重要。
- 在RL的公式中, 混合着随机变量和确定性变量, 对于随机变量我们常讨论的是它的期望。可是在有些资料中, 经常给出诸如 这样的形式, 且不带符号说明。乍一看你很难想到, 它究竟代表某一次采样中的即时奖励, 还是代表多次采样的即时奖励的期望? 诸如此类
- 最后,只有当我把所有的过程按自己的思路想一遍,推一遍后,我才发现原来之前自己还有这么多理解不深刻的地方。写这篇文章的过程,也是在问自己为什么的过程。
【全文目录如下】
一、策略
二、奖励
三、运动轨迹和状态转移
四、Policy-based下的强化学习优化目标
五、策略的梯度
5.1基本推导
5.2总结
六、价值函数
6.1 总述:衡量价值的不同方式
6.2 回报
6.3 状态价值函数
6.4 动作价值函数
6.5 状态价值函数和动作价值函数的关系
6.6 优势函数和TD error
七、Actor-Critic
7.1 Actor优化目标
7.2 Critic优化目标
7.3 Actor和Critic之间的关系
八、PPO
8.1 朴素Actor-Critic存在的问题
8.2 重要性采样
8.3 GAE:平衡优势函数的方差与偏差
8.4 PPO前身:TRPO
8.5 PPO做法1: PPO-Clip
8.6 PPO做法2: PPO-Penalty
8.7 PPO中的critic loss
一、策略(policy)
策略分成两种:确定性策略和随机性策略。我们用表示策略的参数。
1.1 确定性策略
智能体在看到状态 的情况下, 确定地执行
1.2 随机性策略
智能体在看到状态 的情况下, 其可能执行的动作服从概率分布 。也就是此时智能体是以一定概率执行某个动作 。
在我们接下来的介绍中,都假设智能体采用的是随机性策略。
二、奖励(Reward)
奖励由当前状态、已经执行的行动和下一步的状态共同决定。
2.1 单步奖励
- 奖励和策略 无关
- 用于评估当前动作的好坏,指导智能体的动作选择。
2.2 T步累积奖励
T步累积奖励等于一条运动轨迹/一个回合/一个rollout后的单步奖励的累加.
2.3 折扣奖励
这里 。
三、运动轨迹(trajectory)和状态转移
智能体和环境做一系列/一回合交互后得到的state、action和reward的序列,所以运动轨迹也被称为episodes或者rollouts, 这里我们假设智能体和环境交互了 次:
- 是初始时智能体所处的状态, 它只和环境有关。我们假设一个环境中的状态服从分布 , 则有 .
- 当智能体在某个 下采取某个动作 时, 它转移到某个状态 可以是确定的, 也可以是随机的:
- 确定的状态转移: ,表示的含义是当智能体在某个 下采取某个动作 时,环境的状态一定会转移到
- 随机的状态转移:
在我们接下来的介绍中,都假设环境采用的是随机状态转移。
四、Policy-based强化学习优化目标
抽象来说,强化学习的优化过程可以总结为:
- 价值评估:给定一个策略 , 如何准确评估当前策略的价值 ?
- 策略迭代:给定一个当前策略的价值评估 , 如何据此优化策略 ?
整个优化过程由以上两点交替进行, 最终收玫, 得到我们想要的最优策略 和能准确评估它的价值函数

此时, 你肯定会想, 这是否意味着强化学习过程中一定存在 和 两个实体呢? 例如, 这是否意味我们一定要训练两个神经网络,分别表示策略和价值评估?答案是否定的:
- 你可以只有一个价值实体 , 因为它的输入和状态与动作相关(这里我们不区分 V 和 Q , 留到后文细说)。这意味着只要我们知道状态空间 和动作空间 就可以作用到这两个空间上帮助我们衡量哪个状态/动作的价值最大,进而隐式地承担起制定策略的角色,我们也管这种方法叫value-based。
- 你可以只有一个策略实体 , 在对策略的价值评估中, 我们可以让策略和环境交互多次, 采样足够多的轨迹数据,用这些数据去对策略的价值做评估,然后再据此决定策略的迭代方向,我们也管这种方法叫 policy-based。
- 你可以同时有价值实体 和策略实体 , 然后按照上面说的过程进行迭代, 我们也管这种方法叫 actorcritic, 其中actor表示策略, critic表示价值。这是我们本文讨论的重点。
接下来,我们就直接来看policy-based下的强化学习优化目标:
我们来详细解读这个目标:
- :表示一条轨迹序列。
- :智能体所采取的策略,下标 表示和策略相关的参数。
- :表示这条轨迹序列的累积奖励。
- :在使用策略 的情况下, 产出某条轨迹的概率
- : 我们知道, 当前这条轨迹序列是在使用策略 的情况下采样出来的, 所以 隐藏的完整含义为:
- 基于策略的强化学习的总目标是,找到一个策略 ,使得它产出的轨迹的【回报期望】尽量高。 报期望表示为 。
- 为什么这里我们讨论的是【回报期望】,而不是某一个具体的回报值?这是因为策略和状态转移具有随机性,也就是对于一个固定的策略,你让它和环境交互若干次,它每次获得的轨迹序列也是不一样的,所以是个随机变量,因此我们讨论的是它的期望。从更通俗的角度来讲,你评价一个策略是否好,肯定不会只对它采样一次轨迹,你肯定需要在足够多次采样的基础上再来评估这个策略。
五、策略的梯度上升
5.1 基本推导
现在我们知道强化学习的总优化目标是:

我们据此来计算梯度:

其中,第2行~第3行是因为:

我们对一项再进行展开推导。我们知道策略和状态转移都是随机的,同时我们设一条轨迹有个timestep,则我们有:

据此我们继续推出:

被约去的两项是因为这里我们是在对策略求梯度,而这两项和环境相关,不和策略相关。
综上,最终策略的梯度表达式为:

5.2 总结
在基于策略的强化学习中,我们期望max以下优化目标:
基于这个优化目标,策略的梯度为:
这个梯度表达式有一个简单的直观理解: 当 越高时,动作 贡献的梯度应该越多,这是因为此时我们认为 是一个好动作,因此我们应该提升 ,即提升在 下执行 的概率。反之亦然。
在实践中,我们可以通过采样足够多的轨迹来估计这个期望。 假设采样 N 条轨迹, N 足够大,每条轨迹涵盖 步, 则上述优化目标可以再次被写成:

对应的梯度可以被写成:

六、价值函数(Value Function)
通过上面的推导,我们知道在强化学习中,策略的梯度可以表示成

这里 表示一整条轨迹的累积奖励或者累积折扣奖励。
当你端详这个公式时, 你可能会有这样的疑问: 是整条轨迹的奖励, 但是 却是针对单步的。我用整条轨迹的回报去评估单步的价值,然后决定要提升/降低对应 的概率,是不是不太合理呢?例如:
- 一条轨迹最终的回报很高,并不能代表这条轨迹中的每一个动作都是好的。
- 但我们又不能完全忽视轨迹的最终回报,因为我们的最终目标是让这个回合的结果是最优的。
- 综上,在衡量单步价值时,我们最好能在【单步回报】和【轨迹整体回报】间找到一种平衡方式。
有了以上这些直觉, 你开始考虑用一个更一般的符号 来表示各种可行的价值函数, 你用 替换掉了上面的 , 这下策略的梯度就变成:

6.1 总述:衡量价值的不同方式
总结来说可能有如下的实现方式:

我们来做逐一讲解。
(1)整条轨迹累积奖励/累积折扣奖励
这就是我们前文一直沿用的方法,即:
你可以通俗理解成 (省略了折扣因子)
(2)t时刻后的累积奖励/累积折扣奖励
由于MDP的假设,t时刻前发生的事情和t时刻没有关系,t时刻后发生的事情才会受到t时刻的影响,所以我们可以令:
(3)引入基线
我们沿着(2)继续看, 假设在单次采样生成的估计中, t 时刻后的累积奖励为 , 如果这个值很高,那一定证明在某个 下采取某个 一定好吗?答案是否定的,因为这里的"高"是一个绝对概念,而我们更想知道的是一个相对概念:这个动作究竟比别的动作好多少?同时,由于采样具有随机性,有些动作只是没被采样到, 并不代表它们不好。所以这里我们引入一个基线(baseline)的方法来做调控:
这里基线的实现方式也可以有多种,比如当我们采样了一堆轨迹,我们可以找到这些轨迹中状态为 的数据, 求这些数据在(2)下的奖励并做平均(也就是求了个期望)当作基线。
(4)动作价值函数
(5)优势函数
(6)状态价值的TD error
以上三点间具有某种联系,我们这就来详细展开讲解它们。我们先关注这三者,然后再来关注TD error。
我们沿着(4)~(6)继续来讨论的可行形式,一种符合直觉的处理方法是:
- 智能体来到了某个状态 下, 它的动作空间是 。智能体的策略 本质上是一种概率分布。它按 的概率决定要sample出哪个 。
- 而在"采样->训练->更新策略参数"的这个循环过程中,智能体要做的事情就是,如果在某个状态 下,某个动作 带来的回报"大",那么智能体就应该提升 这个概率,也就是智能体据此不断调整 的分布。
- 那么怎么衡量在某个 下,执行某个 带来的回报是否"大"? 我们可以去计算【执行 带来的回报 - 执行其它动作的回报】,这个差值可以告诉我们 比别的动作要好多少。
那么什么叫【执行 带来的回报】和【执行其它动作带来的回报】?
- 假设你在玩马里奥游戏,你来到了画面的某一帧(某个 )
- 你在这一帧下有3个选择:顶金币,踩乌龟,跳过乌龟。你现在想知道执行“顶金币”的动作比别的动作好多少。
- 你先执行了"顶金币"的动作(即现在你采取了某个确定的 pair), 在束。在每一回合中, 你都记录下从(这一帧,顶金币)出发,一直到回合结束的累积奖励。你将这若干轮回合的奖励求平均,就计算出从 (这一帧, 顶金币) 出发后的累积奖励期望, 我们记其为 。
- 现在你重新回到这一帧(你回到了一个确定的 上),对于"顶金币","踩乌龟","跳过乌龟"这三个动作,你按照当前的策略 从这三者中采样动作(注意,我们没有排除掉"顶金币"),并继续玩这个游戏直到回合结束,你记录下从 出发一直到回合结束的累积回报。重复上面这个过程若干次,然后你将这若干轮回合的奖励求平均, 就计算出从(这一帧)出发后的累积奖励期望, 我们记其为 。
- 你会发现不管是Q还是V,下标都有一个,这是因为它们和你当前采取的策略是相关的
- 从直觉上, 我们取 这个差值, 就可以衡量在某个状态 下, 执行某个动作 , 要比其它的动作好多少了。这个差值, 我们可以理解为"优势"(advantage),这个优势更合理地帮助我们衡量了单步的奖励, 所以我们可以用它替换掉上面的 。
- 当优势越大时,说明一个动作比其它动作更好,所以这时候我们要提升这个动作的概率。
通过上面的例子,我们已经引出一些关于价值函数的基本概念了:
- :状态价值函数
- :动作价值函数
- :优势
所以接下来,我们就从理论的角度,详细展开介绍它们。
6.2 回报
在前面的例子中, 我们说过, 当我们从 某一帧, 顶金币 出发后, 我们玩游戏一直到回合结束,然后我们执行 , 作为这个回合的累积奖励。
但其实,我们计算这个累积奖励的目的是衡量从 某一帧, 顶金币)这一【单步】出发后带来的未来收益。而对于这一个【单步】来说,一般离它越近的timestep受到它的影响越大,离它越远的timestep受到它的影响越小。在这个直觉的启发下, 我们采用【累积折扣奖励】来定义单步(也就是某个t时刻)的回报:
在接下来的讲解中,提到某一个回合中【单步】的奖励,我们说的都是【累积折扣奖励】
6.3 状态价值函数(State-Value Function)
状态价值函数的原子定义如下:
我们先来解释相关的符号:
- 首先, 状态价值函数一定是和策略相关的。相同的状态 下(例如"同一帧游戏画面"),不同的策略 产生的结果也不一样(例如不同的人玩这个游戏)。所以我们带上了下标 。
- 其次, 不是随机变量, 而是一个确定值。这是因为此时我们衡量的就是从某个确定的状态 出发带来的累积奖励期望。
- 但是, 却是一个随机变量, 这是因为因为我们的策略 和环境转移 都是随机的。所以尽管每次智能体都从 出发,但采样到的轨迹却不一样。所以这里我们谈的是 的期望。
上面是状态价值函数最原子的定义,我们把这个定义展开,以便更好理解 是如何计算的(这里我直接对我笔记截图了,因为latex公式显示不出来):

上面这个展开细节帮助我们从理论上理解上面举的例子:从马里奥游戏的某一帧 出发,如何求这一帧的累积回报期望,也就是求这一帧下所有动作的累积回报期望。我们从第 4 行推导开始讲起:
- 第4~第5行,即如何从 推到 ,可以参见蘑菇书EasyRL的2.2.2的第1节 https://datawhalechina.github.io/easy-rl/#/chapter2/chapter2
- 第5~第6行讲述我们如何对期望E中的结果做展开。我们以 为例:
- 仅从这个表达式上看,它表示从某个状态 出发,在执行策略 的情况下, 的期望。我们前面说过,由于策略和状态转移具有随机性,因此 也是个随机变量。所以这里我们讨论的是【期望】而不是某个 值。
- 理解了这一点, 就不难理解第 6 行的关于策略和状态转移的两个求和展开项。你可以把这些求和项理解成从状态 出发, 做了无数次采样后的结果。
- 同时, 就是我们在之前定义的奖励函数, 它由三个入参决定。在我们把 展开成两个求和项后, 都是确定的值而不是随机变量了,所以这里 也是一个确定的值, 从 出发某次采样过程中得到的确定值 。
- 第6行后的推导过程都比较好理解,这里不再解释。
我们在学习 rl 的过程中, 会看到很多材料把上述公式写成 或者 之类的形式, 由于对缺少必要的下标, 这些简略的形式具有歧义性, 使人混淆。所以这边我们干脆多费一点力, 把所有的符号都展示出来, 更方便大家深入理解 的含义。这就是这里大费周章写出上述推导过程的意义。
6.4 动作价值函数(Action-Value Function)
同样,我们先来看动作价值函数的原子定义:
我们来解释相关符号:
- 首先,动作价值函数也是和策略相关的。从之前的例子我们知道,动作价值函数衡量的是从某个确定的出发后,例如从(马里奥游戏某一帧,顶金币)出发,一直到回合结束为止的累积奖励期望。在策略不一样的情况下(例如玩游戏的人不一样),即使大家都从某个确定的,最后的累积奖励期望也是不一样的。所以动作价值函数一定是对某个而言的。
- 其余要注意的地方和一致,这里不再赘述。

6.5 动作价值函数和状态价值函数的互相转换
我们来简单回顾下上面的内容。
状态价值函数的原子定义为:
动作价值函数的原子定义为:
展开状态价值函数的原子定义,我们得到:
展开动作价值函数的原子定义,我们得到:
根据这两者的原子定义展开式,我们得到两者的关系为:

关于V和Q,我们可能在脑海里一直有“V是Q的期望”这样一个模糊的印象,但是却很难做具象化的解读。希望这里通过上面马里奥游戏的例子 + 具体的推导过程,能帮助大家更深入了解V和Q的关系。
6.6 优势函数和TD error
在马里奥游戏的例子中, 我们曾经对优势做过简单的定义: 我们取 这个差值, 就可以衡量在某个状态 下, 执行某个动作 , 要比其它的动作好多少了, 这个差值就是优势。
我们展开来讲优势函数,在前面的推导中我们已知:
而对于,我们可以把它重新改写成:
之所以这样改写, 是因为 只依赖于这个确定的 , 而与 无关。
基于这两个式子,我们可以写成优势函数的表达式:

大家发现了吗:
- 假设这里的 等于那个客观世界存在的状态价值函数的真值, 那么TD_error就是优势函数的无偏估计。这意味着在期望的意义下,使用TD_error近似优势函数不会引起系统性的偏差。
- 假设这里的 不等于那个客观世界存在的状态价值函数的真值, 那么TD_error对于优势函数则是有偏的。 这意味着由于 的不准确,我们无法用 去近似那个真实的优势函数,因为我们将引入系统性偏差。(读到这里,你可能已经开始联想到在actor-critic算法下,用于估计 的 critic网络在没有收玫之前都是偏离真值的,这就意味着此时我们用TD-error去近似优势是有偏的,所以这时我们就要请GAE出场了, 这是后话, 我们放在后文细说)
七、Actor-Critic
我们先来回顾之前定义的policy-based下的策略梯度:

其中,衡量单步价值的可以有如下几种设计方案:

基于之前的分析,我们现在选择第6种(TD error)作为 ,它衡量在某个时刻 t 选择某个动作 a 会比选择其它的动作要好多少。 需要注意的是, 本质上当 等于客观存在的真值 时, 6 是 5 的无偏估计。
在actor-critic方法下,我们用神经网络 来表示策略(actor),神经网络 来表示价值(critic),所以这里我们进一步把 写成 。注意,这可能不是一个好写法,因为 V 一定是针对某个 而言的,anyway我们需要把这点记在心中, 在后文的表示中可能会出现 和 交替使用的场景, 他们都表示一个东西, 只是笔者写烸了可能忘记从一而终了...
接下来我们来看actor loss和critic loss的具体表达式。
7.1 Actor优化目标
现在我们可以把actor优化目标写成如下形式:

但是有时,一个回个中的timesteps可能非常多,我们无法等到回合结束再进行训练。既然我们已经使用了TD error来估计单步的优势,我们其实可以按照单步的方法进行更新(即你的batch_size是N,其中的每条数据都是一个单步数据),即actor优化目标可以写成:
在接下来的表示中,我们都将采用这种形式。对应的策略梯度前面写过很多遍了,这里就不写出来了。
7.2 Critic优化目标
同理,在单步更新下,我们可以把critic优化目标写成:
对应的critic梯度这里也略去。
7.3 Actor和Critic之间的关系
关于7.1节中,actor这个优化目标的改写我们已经很熟悉了,但对于7.2中的actor loss你可能还是满腹疑惑,例如:
- 看样子,actor loss是在让优势趋于0,但是如此一来,每个动作的好坏不就都差不多了?那你怎么能选出那个最好的动作呢?
为了解答这个问题,我们先回想第四节中提到的“价值评估->策略迭代”这样一个循环的过程:
- 价值评估: 给定一个策略 , 如何准确评估当前策略的价值 ?
- 策略迭代: 给定一个当前策略的价值评估 , 如何据此优化策略

我们结合actor-critic的框架把这个循环的优化过程展开来讲:
- 我们从"策略迭代步骤开始", 假设我们有一个策略 , 且同时有一个能准确评估它的价值的 。基于这个 , 我们计算某个 状态下动作 的优势 , 如果这个优势比较高, 那么我们就应该提升 这个概率。我们按照这个方式去改变策略的分布, 最终会得到一个新策略 。
- 那么, 什么时候这个 就是我们要找的最优策略 ? 我们假设当策略走到 时, 有一个客观存在的最优的动作 。那么如果当前这个策略走到 时,产出 的概率已经是1或者是最大的,那么就证明策略已经没有提升的空间了,当前的策略已到最优(注意,这里我们始终假设 是能准确估计一个策略的价值的)。
- 那么如果策略产出 的概率已经是1或者最大时, 优势会发生什么变化? 从6.5节中的推导里我们知道 ,由此不难得知,此时 会非常接近或者等于 ,也就是此时我们有 。
- 翻译成人话来说,就是当优势趋于 0 的时候,不是说所有的动作都区分不出好坏了。而是此时策略已经趋于最优,他本来产出最优的 的概率就是最大的。而不是像它还没优化好之前那样,还以相当的概率产出别的 们,所以我们要在这些 们之间去比较优势。
- 现在我们回答"价值评估"步骤上来:此时我们做完了策略迭代,使得 ,那么之前用于衡量 的 已经不适用了,我们需要找到一个 来正确衡量 。而当策略从 改进到 后,这个 等式右侧的分布也有所调整,所以我们应该让等式左侧去拟合等式的右侧, 这样才能得出一个可以正确评估 的
- 我们把以上内容换成比较好理解,但可能不太精确的人话:当我们推动critic loss(优势)趋于0时:
- 对于actor来说,是推动它找到某个状态下最佳的动作,逐步向****拟合
- 对critic来说,是推动它准确衡量当前策略的价值,逐步向****拟合
八、PPO8.1 朴素Actor-Critic的问题
在理解critic loss为何如此设计的前提下,critic的梯度就比较好理解了,这里我们不做过多解释。我们把目光再次放回actor的梯度上来:

再次注意, 这里我们写成 的形式其实是不完整的, 它只是用来刻画 是 critic 网络的参数, 我们还必须铭记 衡量的是某个策略 的价值, 当这个策略发生迭代而变动时, 也会变动。
观察这个梯度表达式,我们会发现如下问题:
问题1:每次执行这个梯度更新时,我们都需要对进行若干次回合采样。我们知道智能体和环境交互的时间成本(fwd)比较高,也就是整个训练过程会比较慢
问题2: 我们在前面说过, 实际训练的过程中, 用 critic网络拟合出来 并不一定是能准确衡量 的那个价值函数, 所以这里我们用TD error去估计优势其实是有偏的。 为了降低这种偏差, 我们需要对 进行改造,改造的方法之一就是GAE。
接下来我们就详细来看如何解决这两个问题。
8.2 重要性采样
在朴素的方法中,我们使用和环境交互若干次,得到一批回合数据,然后我们用这个回合数据计算出来的奖励值去更新。我们管这个过程叫on-policy(产出数据的策略和用这批数据做更新的策略是同一个)
而现在,为了降低采样成本,我们想做下面这件事:
- 假设某次更新完毕后, 我们得到策略
- 我们用 和环境交互, 得到一批回合数据。
- 我们将把这一批回合数据重复使用 次: 即我们先把这批数据喂给 ,更新得到 ;我们再把这批数据喂给 , 更新得到 ;以此类推,做 k 次更新后,我们得到 。我们管这个过程叫off-policy(产出数据的策略和用这批数据做更新的策略不是同一个)。
- 在这k次更新后, 我们令 。重复上面的过程, 直到达到设定的停止条件为止。
我们从更理论的角度来看待这个off-policy的过程:
- 假设有两个分布
- 最开始我想从 中进行多次采样, 然后求函数 的期望。例如我想从 中进行采样, 然后求累积奖励的期望,这个期望我们表示成
- 但是现在, 因为某些原因, 我们无法从 中直接采样, 只能从另一个分布 中进行采样了, 那么此时我们要怎么表示 ?
- 为了解决这个问题,我们做如下变换:

也就是说,当我们从不同于 的分布 上采样 x 时,从数学上我们确实有办法改写 , 简单来说就是加上一个权重 , 我们管上述的转换过程叫【重要性采样】。
虽然数学上是有办法改写了,但是实际操作中,我们可能遇到p(x)和q(x)分布差异较大的问题。这里我直接引用李宏毅老师的课堂ppt来说明这一点:

- 我们假设 的真值是负数。
- 由于p(x)和q(x)差异较大。在某次采样中,我们从q(x)里进行采样,大概率会采集到图中绿色曲线的高处,此时f(x)是正的。也就是说,在单次采样中,我们大概率会得到一个正的f(x)。
- 所以,只有经过尽可能多次的采样,让某次能命中q(x)这个绿色曲线的低处。这时p(x)/q(x)较大,也就赋予这个好不容易采样到的负的f(x)非常大的权重,这才足以抵消之前正f(x)的影响。
- 综上所述,当p(x)和q(x)差异较大时,我们需要通过足够多的采样来抵消这种差异对期望的最终影响。我们先记住这一点,在后面我们再来说这一点对我们策略的影响。
知道了重要性采样的过程,现在我们又可以根据它重写我们的优化目标了。
重要性采样前,策略的梯度是:
重要性采样后,策略的梯度是:
我们根据重要性采样构造了这个新的策略梯度,那么对应的新的actor优化目标就可以从这个策略梯度中反推出来:
特别注意 , 它意味着我们这一波的训练数据是由old策略采集来的。
但是到这步为止, 我们还要在心里铭记一个问题, 如何解决 和 分布差异过大的情况。我们先来看对优势函数的改进方法,然后再回来讲这个问题的解决办法。
8.3 GAE:平衡优势函数的方差和偏差
再回顾下6.6节的内容:在假设 能正确评估策略 的价值的前提下,我们用TD_error作为优势函数的无偏估计:

但是, 在训练过程中, 这个 往往无法完全正确评估出策略 的价值, 所以上述这种估计是有偏的, 也即如果我们使用TD error去近似优势函数, 就会引发系统性偏差。这样讲可能比较抽象, 我们来看具象化地解释下。
(1)方差与偏差

- 低方差,低偏差:
E(射击点) = 靶心,且射击点密集分布在靶心周围。此时我们随机选一个射击点就能很好代表靶心 - 高方差,低偏差:
E(射击点) = 靶心,但射击点们离靶心的平均距离较远。此时随机一个射击点不能很好代表靶心,但我们却可以从足够多的射击点中估算靶心坐标 - 高/低方差,高偏差:
E(射击点)!=靶心,无论你做多少次射击,你都估计不准靶心的位置。
对于优势函数我们有 , 我们可以把 当作是蓝色的靶心, 而红色的点就是我们针对某个 做多次采样, 得到的一个个 。
- 当 能准确估计策略 的价值时, 至少是属于左侧"低偏差"这种情况。 而对于方差它则是由这里的两个随机变量 决定的,之所以说它们是随机变量,是因为在采取某个状态对 的情况下, 会转移到哪个 是确定的, 带来的奖励 也是不确定的。
- 当 不能准确估计策略 的价值时, 属于右侧"高偏差"这种情况。即红点的分布已经偏离,无论你采样再多次,你也无法估算真正的优势函数。
为了解决因为 估计不准而引发的"高偏差"问题, 直观上我们可以尽量少信任 的策略, 即对于 , 我们可以把 做递归地展开, 得到:
其中, 都是我们某次采样得到的即时奖励数据。如果 不准, 那么我就信任我的实际采样结果, 这样至少不会让我对优势函数的估计出现偏差。
但采取这种做法又会引发一个新问题: 我们知道 它们都是随机变量, 相比之前只用 , 现在的做法带来的随机性更大了(相当于在每一个timestep都引入了随机性,随机性逐步累加)。也就是如果之前的方差是 , 那么现在的方差则变成更大的 。最终, 你把 从上图的右侧纠正了上图的【高方差、低偏差】的位置。这意味着此时虽然偏差降低了,但你需要采样足够多的数据才能准确估计出优势函数,这样加重了实际训练中的采样负担。
那要怎么办呢?
(2)GAE
(排不动latex的版了,这边开始我就放我的笔记截图了😢😢)

8.4 PPO前身:TRPO

8.5 PPO做法1:PPO-Clip

8.6 PPO做法2:PPO-Penalty

8.7 PPO中的critic loss
在PPO的原始论文中,其实并没有对critic和actor拆分成两个网络以后的critic loss形式做详细介绍,所以这部分的解读我直接以deepspeed-chat的rlhf实现为例,将以下critic loss的实现。
我们知道,PPO的更新步骤是
# 对于每一个batch的数据
for i in steps:
# 先收集经验值
exps = generate_experience(prompts, actor, critic, reward, ref)
# 一个batch的经验值将被用于计算ppo_epochs次loss,更新ppo_epochs次模型
# 这也意味着,当你计算一次新loss时,你用的是更新后的模型
for j in ppo_epochs:
actor_loss = cal_actor_loss(exps, actor)
critic_loss = cal_critic_loss(exps, critic)
actor.backward(actor_loss)
actor.step()
critc.backward(critic_loss)
critic.step()

....
#7 Papers & Radios~1
本次重要论文包括威斯康星大学麦迪逊分校、微软、港科大华人研究者提出的基于 prompt 的新型交互模型 SEEM,以及 40 多位学者联合发布的基础模型工具学习综述和开源 BMTools 平台。
- FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness
- A Cookbook of Self-Supervised Learning
- Tool Learning with Foundation Models
- Scaling Transformer to 1M tokens and beyond with RMT
- Segment Everything Everywhere All at Once
- Deep RL at Scale: Sorting Waste in Office Buildings with a Fleet of Mobile Manipulators
- Collaboration Helps Camera Overtake LiDAR in 3D Detection
- ArXiv Weekly Radiostation:NLP、CV、ML 更多精选论文(附音频)
论文 1:FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness
- 作者:Tri Dao、Daniel Y. Fu 等
- 论文地址:https://arxiv.org/abs/2205.14135
摘要:过去两年,斯坦福大学 Hazy Research 实验室一直在从事一项重要的工作:增加序列长度。他们有一种观点:更长的序列将开启机器学习基础模型的新时代 —— 模型可以从更长的上下文、多种媒体源、复杂的演示等中学习。
目前,这项研究已经取得了新进展。Hazy Research 实验室的 Tri Dao 和 Dan Fu 主导了 FlashAttention 算法的研究和推广,他们证明了 32k 的序列长度是可能的,且在当前这个基础模型时代将得到广泛应用(OpenAI、Microsoft、NVIDIA 和其他公司的模型都在使用 FlashAttention 算法)。

推荐:想把半本《红楼梦》搬进 ChatGPT 输入框?先把这个问题解决掉。
论文 2:A Cookbook of Self-Supervised Learning
- 作者:Randall Balestriero、 Mark Ibrahim 等
- 论文地址:https://arxiv.org/pdf/2304.12210v1.pdf
摘要:近日,LeCun 介绍了他和 Meta 人工智能研究院研究员、研究经理田渊栋等人共同撰写的一份「Cookbook」(非常实用、可操作性强、就像一本菜谱一样的论文)。这本 Cookbook 总共 70 页,涵盖了自监督学习的定义、重要性、起源、家族、训练部署方法、扩展方法等方面知识,是一份不可多得的学习材料。「如果你想研究自监督学习,那最好看看这本书。」田渊栋补充说。


推荐:LeCun、田渊栋参与撰写,70 页「自监督学习」大全来了。
论文 3:Tool Learning with Foundation Models
- 作者:Yujia Qin、Shengding Hu 等
- 论文地址:https://arxiv.org/abs/2304.08354
摘要:近期,来自清华大学、中国人民大学、北京邮电大学、UIUC、NYU、CMU 等高校的研究人员联合知乎、面壁智能公司探索基础模型调用外部工具的课题,联合发表了一篇 74 页的基础模型工具学习综述论文,发布开源工具学习平台。该团队提出了基础模型工具学习的概念,系统性地整理和阐述了其技术框架,同时展示了未来可能面临的机遇和挑战。这项研究对于了解基础模型工具学习的最新进展及其未来发展趋势具有重要价值。
工具学习整体框架呈现了人类用户和四个核心成分:工具集、控制器、感知器、环境。

推荐:40 多位学者联合发布基础模型工具学习综述,开源 BMTools 平台。
论文 4:Scaling Transformer to 1M tokens and beyond with RMT
- 作者:Aydar Bulatov、 Yuri Kuratov 等
- 论文地址:https://arxiv.org/pdf/2304.11062.pdf
摘要:前几天,一篇来自开源对话 AI 技术栈 DeepPavlov 等机构的研究表明:通过采用一种名为 Recurrent Memory Transformer(RMT)的架构,他们可以将 BERT 模型的有效上下文长度增加到 200 万个 token(按照 OpenAI 的计算方式,大约相当于 3200 页文本),同时保持了较高的记忆检索准确性(注:Recurrent Memory Transformer 是 Aydar Bulatov 等人在 NeurIPS 2022 的一篇论文中提出的方法)。新方法允许存储和处理局部和全局信息,并通过使用 recurrence 使信息在输入序列的各 segment 之间流动。

推荐:真・量子速读:突破 GPT-4 一次只能理解 50 页文本限制,新研究扩展到百万 token。
论文 5:Segment Everything Everywhere All at Once
- 作者:Xueyan Zou、 Jianwei Yang 等
- 论文地址:https://arxiv.org/pdf/2304.06718.pdf
摘要:最近,一篇「一次性分割一切」的新论文再次引起关注。在该论文中,来自威斯康星大学麦迪逊分校、微软、香港科技大学的几位华人研究者提出了一种基于 prompt 的新型交互模型 SEEM。SEEM 能够根据用户给出的各种模态的输入(包括文本、图像、涂鸦等等),一次性分割图像或视频中的所有内容,并识别出物体类别。该项目已经开源,并提供了试玩地址供大家体验。下图中展示了轻松分割出视频中移动的物体。

推荐:一次性分割一切,比 SAM 更强,华人团队的通用分割模型 SEEM 来了
论文 6:Deep RL at Scale: Sorting Waste in Office Buildings with a Fleet of Mobile Manipulators
- 作者:Alexander Herzog、 Kanishka Rao 等
- 论文地址:https://rl-at-scale.github.io/assets/rl_at_scale.pdf
摘要:在谷歌这篇论文中,研究人员探讨了如何通过最新的大规模实验解决这个问题,他们在两年内部署了一支由 23 个支持 RL 的机器人组成的群组,用于在谷歌办公楼中进行垃圾分类和回收。使用的机器人系统将来自真实世界数据的可扩展深度强化学习与来自模拟训练的引导和辅助对象感知输入相结合,以提高泛化能力,同时保留端到端训练优势,通过对 240 个垃圾站进行 4800 次评估试验来验证。在现实世界中,机器人会遇到各种独特的情况,比如以下真实办公楼的例子:

推荐:耗时两年,谷歌用强化学习打造 23 个机器人帮助垃圾分类。
论文 7:Collaboration Helps Camera Overtake LiDAR in 3D Detection
- 作者:Yue Hu、Yifan Lu 等
- 论文地址:https://arxiv.org/abs/2303.13560
摘要:摄像头能否实现激光雷达的检测效果,以更低成本实现自动驾驶感知?在最新的 CVPR2023 论文中,来自上海交通大学、加州大学洛杉矶分校、以及上海人工智能实验室的研究者提出了纯视觉协作探测方法(CoCa3D),通过让多个基于纯视觉的智能车高效协作,在 3D 目标探测效果上,接近甚至超越基于激光雷达的智能车。下图为数据集 CoPerception-UAVs + 和 OPV2V + 仿真环境。

推荐:多车协作让纯视觉 3D 目标探测媲美激光雷达。
.....
#DIFFormer
本⽂介绍⼀项近期的研究⼯作,试图建⽴能量约束扩散微分⽅程与神经⽹络架构的联系,从而原创性的提出了物理启发下的 Transformer,称作 DIFFormer。作为⼀种通⽤的可以灵活⾼效的学习样本间隐含依赖关系的编码器架构,DIFFormer 在各类任务上都展现了强大潜⼒。这项工作已被 ICLR 2023 接收,并在⾸轮评审就收到了四位审稿⼈给出的 10/8/8/6 评分(最终均分排名位于前 0.5%)。
- 论⽂地址:https://arxiv.org/pdf/2301.09474.pdf
- 项⽬地址:https://github.com/qitianwu/DIFFormer
如何得到有效的样本表征是机器学习领域的⼀⼤核⼼基础问题,也是深度学习范式在各类下游任务能发挥作用的重要前提。传统的表征学习⽅法通常假设每个输⼊样本是独⽴的,即分别将每个样本输⼊进 encoder ⽹络得到其在隐空间中的表征,每个样本的前向计算过程互不干扰。然⽽这⼀假设通常与现实物理世界中数据的⽣成过程是违背的:由于显式的物理连接或隐含的交互关系,每个观测样本之间可能存在相互的依赖。
这⼀观察也启发了我们去重新思考⽤于表征计算的 encoder ⽹络设计:是否能设计⼀种新型的 encoder ⽹络能够在前向计算中显式的利⽤样本间的依赖关系(尽管 这些依赖关系是未被观察到的)。在这个⼯作中,我们从两个物理学原理出发,将神经⽹络计算样本表征的前向过程看作给定初始状态的扩散过程,且随着时间的推移(层数加深)系统的整体能量不断下降(见下图)。

DIFFormer 模型主要思想的示意图:将模型计算样本表征的前向过程看作⼀个扩散过程,随着时间的推移,节点之间存在信号传递,且任意节点对之间信号传递的速率会随着时间适应性的变化,使得系统整体的能量最⼩化。通过扩散过程和能量约束,最终的样本表征能够吸收个体和全局的信息,更有助于下游任务。
通过试图建⽴扩散微分⽅程与神经⽹络架构的联系,我们阐释了能量约束扩散过程与各类信息传递网络(如 MLP/GNN/Transformers)的联系,并为新的信息传递设 计提供了⼀种理论参考。基于此,我们提出了⼀种新型的可扩展 Transformer 模型,称为 DIFFormer(diffusionbased Transformers)。它可以作为⼀种通⽤的 encoder,在前向计算中利⽤样本间隐含的依赖关系。⼤量实验表明在⼩ / ⼤图节点分类、图⽚ / ⽂本分类、时空预测等多个领域的实验任务上 DIFFormer 都展现了强⼤的应⽤潜⼒。在计算效率上,DIFFormer 只需要 3GB 显存就可以实现⼗万级样本间全联接的信息传递。
动机与背景
我们⾸先回顾⼀个经典的热⼒学中的热传导过程:假设系统中有
个节点,每个节点有初始的温度,两两节点之间都存在信号流动,随着时间的推移节点的温度会不断更新。上述物理过程事实上可以类⽐的看作深度神经网络计算样本表征(embedding)的前向过程。

将神经⽹络的前向计算过程看作⼀个扩散过程:每个样本视为流形上的固定位置节点,样本的表征为节点的信号,表征的更新视作节点信号的改变,样本间的信息传递看作节点之间的信号流动

这⾥我们可以把每个样本看作⼀个离散空间中的节点,样本表征看作节点的信号。当模型结构考虑样本交互时(如信息传递),它可以被看作节点之间的信号流动,随着模型层数加深(即时间的推移),样本表征会不断被更新。
扩散过程的描述
⼀个经典的扩散过程可以由⼀个热传导⽅程(带初始条件的偏微分⽅程)来描述

在离散空间中,梯度算⼦可以看作两两节点的信号差异,散度算子可以看作单个节点流出信号的总和,⽽扩散率(diffusivity)是⼀种对任意两两节点间信号流动速率的度量
由此我们可以写出描述 N 个节点每时每刻状态更新的扩散微分⽅程,它描述了每个状态下系统中每个节点信号的变化等于流向其他节点的信号总和:

由扩散方程导出的信息传递

下图概述了这三种信息传递模式:

我们研究最后⼀种信息传递⽅式,每层更新的样本表征会利⽤上⼀层所有其他样本的表征,在理论上模型的表达能⼒是最强的。但由此产⽣的⼀个问题是:要如何才能确定合适的每层任意两两节点之间的 diffusivity,使得模型能够产⽣理想的样本表征?
刻画⼀致性的能量函数

能量约束的扩散过程

定理

- DIFFormer-a:在计算相似度时引⼊⾮线性,从⽽提升模型学习复杂结构的表达能⼒:


两种模型 DIFFormer-s 和 DIFFormer-a 每层更新的运算过程(矩阵形式),红⾊标注的矩阵乘法操作是计算瓶颈。DIFFormer-s 的优势在于可以实现对样本数量 N 的线性复杂度,有利于模型扩展到⼤规模数据集
模型扩展
更进⼀步的,我们可以引⼊更多设计来提升模型的适⽤性和灵活度。上述的模型主要考虑了样本间的 all-pair attention。对于输⼊数据本身就含有样本间图结构的情况,我们可以加⼊现有图神经⽹络(GNN)中常⽤的传播矩阵(propagation matrix)来融合已知的图结构信息,从⽽定义每层的样本表征更新如下

DIFFormer 的全局输⼊包含样本输⼊特征 X 以及可能存在的图结构 A(可以省略),通过堆叠 DIFFormer layer 更新计算样本表征。在每层更新时,需要计算⼀个全局 attention(具体的可以使⽤ DIFFormer-s 和 DIFFormer-a 两种实现),如果考虑输⼊图结构则加⼊ GCN Conv
另⼀个值得探讨的问题,是如何处理⼤规模数据集(尤其是包含⼤量样本的数据集,此时考虑全局 all-pair attention ⾮常耗费资源)。在这种情况下我们默认使⽤线性复杂度的 DIFFormer-s 的架构,并且可以在每个训练 epoch 对数据集进⾏ random mini-batch 划分。由于线性复杂度,我们可以使⽤较⼤的 batch size 也能使得模型在单卡上进⾏训练(详⻅实验部分)。

对于包含⼤量样本的数据集,我们可以对样本进⾏随机 minibatch 划分,每次只输⼊⼀个 batch 的样本。当输⼊包含图结构时,我们可以只提取 batch 内部样本所组成的⼦图输⼊进⽹络。由于 DIFFormer-s 只需要对 batch size 的线性复杂度,在实际中就可以使⽤较⼤的 batch size,保证充⾜的全局信息
实验结果
为了验证 DIFFormer 的有效性和在不同场景下的适⽤性,我们考虑了多个实验场景,包括不同规模图上的节点分类、半监督图⽚ / ⽂本分类和时空预测任务。
图节点分类实验
此时输⼊数据是⼀张图,图中的每个节点是⼀个样本(包含特征和标签),⽬标是利⽤节点特征和图结构来预测节点的标签。我们⾸先考虑⼩规模图 的实验,此时可以将⼀整图输⼊ DIFFormer。相⽐于同类模型例如 GNN,DIFFormer 的优势在于可以不受限于输⼊图,学习未被观测到的连边关系,从⽽更好的捕捉⻓距离依赖和潜在关系。下图展示了与 SOTA ⽅法的对⽐结果。

进⼀步的我们考虑在⼤规模图上的实验。此时由于图的规模过⼤,⽆法将⼀整图直接输⼊模型(否则将造成 GPU 过载),我们使⽤ mini-batch 训练。具体的,在每个 epoch,随机的将所有节点分为相同⼤⼩的 mini-batch。每次只将⼀个 mini-batch 的节点输⼊进⽹络;⽽对于输⼊图,只使⽤包含在这个 mini-batch 内部的节点所组成的⼦图输⼊进⽹络;每次迭代过程中,DIFFormer 也只会在 mini-batch 内部的节点之间学习 all-pair attention。这样做就能⼤⼤减⼩空间消耗。⼜因为 DIFFormer-s 的计算复杂度关于 batch size 是线性的,这就允许我们使⽤很⼤的 batch size 进⾏训练。下图显示了在 ogbn-proteins 和 pokec 两个⼤图数据集上的测试性能,其中对于 proteins/pokec 我们分别使⽤了 10K/100K 的 batch size。此外,下图的表格也展示了 batch size 对模型性能的影响,可以看到,当使⽤较⼤ batch size 时,模型性能是⾮常稳定的。

图⽚ / ⽂本分类实验
第⼆个场景我们考虑⼀般的分类问题,输⼊是⼀些独⽴的样本(如图⽚、⽂本),样本间没有已观测到的依赖关系。此时尽管没有输⼊图结构, DIFFormer 仍然可以学习隐含在数据中的样本依赖关系。对于对⽐⽅法 GCN/GAT,由于依赖于输⼊图,我们这⾥使⽤ K 近邻⼈⼯构造⼀个样本间的图结构。

时空预测
进⼀步的,我们考虑时空预测任务,此时模型需要根据历史的观测图⽚段(包含上⼀时刻节点标签和图结构)来预测下⼀时刻的节点标签。这⾥我们横向对⽐ 了 DIFFormer-s/DIFFormer-a 在使⽤输⼊图和不使⽤输⼊图(w/o g)时的性能,发现在不少情况下不使⽤输⼊图模型反⽽能给出的较⾼预测精度。这也说明了在这类任务中,给定的观测图结构可能是不可靠的,⽽ DIFFormer 则可以通过从数据中学习依赖关系得到更有⽤的结构信息。

扩散过程下的统⼀视⻆
从能量约束的扩散过程出发,我们也可以将其他信息传递模型如 MLP/GCN/GAT 看作 DIFFormer 的特殊形式,从⽽给出统⼀的形式化定义。下图概括了⼏种⽅法对应的能量函数和扩散率。相⽐之下,从扩散过程来看, DIFFormer 会考虑任意两两节点之间的信号流动且流动的速率会随着时间适应性的变化,⽽ GNN 则是将信号流动 限制在⼀部分节点对之间。从能量约束来看,DIFFormer 会同时考虑局部(与⾃身状态)和全局(与其他节点)的⼀致性约束,⽽ MLP/GNN 则是分别侧重于⼆者之⼀, 且 GNN 通常只考虑输⼊图中相邻的节点对约束。

总结与讨论
在这个⼯作中,我们讨论了如何从扩散⽅程出发得到 MLP/GNN/Transformer 的模型更新公式,⽽后提出了⼀个能量约束下的扩散过程,并通过理论分析得到了最优 扩散率的闭式解。基于理论结果,我们提出了 DIFFormer。总的来说,DIFFormer 主要具有以下两点优势:

DIFFormer 作为⼀个通⽤的 encoder,可以被主要应⽤于以下⼏种场景:

.....
#MoE-Jetpack
收敛速度最高8倍,准确率提升超30%!华科发布MoE Jetpack框架
华中科技大学的研究人员提出了MoE Jetpack框架,通Checkpoint Recycling方法和SpheroMoE结构,将密集激活模型的预训练权重微调为混合专家(MoE)模型,从而免去了MoE模型的预训练过程,大幅提升了MoE在下游任务中的精度和收敛速度。
混合专家模型(MoE, Mixture of Experts)是一种通过动态激活网络的部分结构来提升计算效率的架构,可以在保持相对稳定的计算成本的前提下大幅增加参数量,从而有效提升模型性能。
这一特性使得MoE能够兼顾模型的规模与效率,已广泛应用于各种大规模任务。然而,MoE模型通常需要在大型数据集上预训练以获得理想性能,导致其对时间和计算资源的需求极高,这也限制了其在深度学习社区中的普及性。
为解决这一问题,华中科技大学的研究人员提出了MoE Jetpack框架,利用密集模型的预训练权重(Dense checkpoints)来微调出视觉混合专家模型(MoE,Mixture of Experts)。
目前,这项工作已被NeurIPS 2024接收。
论文标题:MoE Jetpack: From Dense Checkpoints to Adaptive Mixture of Experts for Vision Tasks
论文地址:https://arxiv.org/abs/2406.04801
代码地址:https://github.com/Adlith/MoE-Jetpack
MoE Jetpack框架的核心创新包括:
1. Checkpoint recycling: 通过采样密集模型权重产生差异化的专家,组成MoE模型的初始化权重,从而加速模型收敛、提升性能,并避免大规模的MoE模型预训练。
2. SpheroMoE Layer: 通过调整MoE结构,利用交叉注意力机制进行专家分配,将query和key投影到超球空间以提升微调过程的稳定性,并通过一系列专家正则化方法有效缓解MoE模型微调过程中的过拟合现象。
实验结果表明,MoE Jetpack在多个数据集和网络结构上实现了显著的性能提升。在ImageNet-1K上,模型收敛速度提升2倍,准确率提高了2.8%;在小规模数据集上,收敛速度可达8倍提升,准确率提升超过30%。

图1 (a)MoE Jetpack将密集预训练权重转化为MoE模型的初始化权重,在性能提升的同时保持等效的FLOPs。(b) 未预训练的ViT、微调的ViT、未预训练的Soft MoE 与MoE Jetpack在多个视觉数据集上的性能比较。
在多个下游数据集上的实验表明,该框架能够高效利用预训练权重,实现更快的收敛速度和更优的性能表现。
研究方法
MoE Jetpack的核心由两个阶段组成:Checkpoint Recycling(用于MoE模型的初始化)和SpheroMoE层(用于微调MoE模型),如下图所示。

图2 Checkpoint Recycling和SpheroMoE结构
Checkpoint Recycling:作为MoE Jetpack的基础阶段,Checkpoint Recycling通过将预训练的密集模型权重转换为高质量的MoE初始化权重,使新模型在性能和收敛速度上都得以提升。
具体地,Checkpoint Recycling从密集权重的多层感知器(MLP)中采样出部分权重构建专家层,以确保专家的多样性和灵活性。
本文比较了四种主要的权重回收策略:
- 重要性采样(Importance-Based Weight Sampling):重要性采样是 MoE Jetpack 默认的权重采样方法,通过计算输出特征的均值,选择top-d' 个最重要的特征维度,同时根据隐藏单元的激活值大小进行独立采样。这种方法确保每个专家包含关键的特征和隐藏单元,有助于提升模型的初始化质量和训练效率。
- 图划分法(Co-Activation Graph Partitioning):图划分法通过构建共激活图,将常一起激活的隐藏单元分组,使用图划分算法(如 Metis),将密集权重的隐藏单元划分成多个子图,组合不同的子图形成不同专家层,确保专家专注于不同的功能区域,提升模型的特征表达能力。
- 均匀采样(Uniform Weight Selection):均匀采样在特征维度和隐藏单元上均匀选择权重,保证每个 MoE 专家层均衡分布初始化权重。此方法实现简单,但不考虑特征重要性,因此性能提升效果较为一般。
- 随机采样(Random Weight Sampling):随机采样在特征维度和隐藏单元中随机抽取,生成专家层的初始化权重。该方法实现简便,但由于没有关注特征的重要性,性能通常较低。
Checkpoint Recycling引入的计算开销几乎可以忽略,同时显著提升模型性能并与收敛速度。
SpheroMoE层
在MoE模型权重初始化后,SpheroMoE层进一步优化微调过程。SpheroMoE 层的引入解决了 MoE 模型在优化过程中面临的数值不稳定、专家过度专一等问题。它通过三种机制来提升模型在下游任务的性能和稳定性:
- 超球路由机制:利用cross attention结构,将输入动态分配给 MoE 模型的不同专家。这种机制首先对随机初始化的专家查询(Q, query)和输入键(K, key)进行归一化投影(L2 Norm)至超球空间,以确保数值稳定性,并通过余弦相似度来选择输入对应的专家。最终输出由各个专家的结果组合而成,保证 MoE 模型的输出特征和密集模型之间的分布一致性。

- 自适应双路径MoE:为提升计算效率,SpheroMoE路由将输入划分为高重要性和低重要性两类,并引导其进入不同计算路径:高重要性输入分配至包含更大参数量的核心专家;低重要性输入则进入包含较小专家的通用路径。这样的双路径结构通过划分细粒度的专家增加了专家的数量,优化了资源利用,提升了模型的性能与计算效率。
- 图3 自适应双路径MoE
- 专家正则化:为避免专家层过度专注于特定输入或出现过度特化,本文引入可学习的软温度参数,用以调整softmax的平滑程度以精确控制输入的分配和输出的组合。
此外,使用专家随机失活机制能有效防止模型对特定专家的依赖。
这些设计使MoE Jetpack在下游任务微调中不仅具备了更快的收敛速度,还实现了显著的性能提升。
实验结果
本文在 ViT 和 ConvNeXt 两种典型网络结构以及八个图像分类任务上进行了广泛实验。实验结果表明,MoE Jetpack 在性能上显著优于随机初始化的 Soft MoE 模型,并且利用密集权重的微调效果明显超过直接微调经过预训练的密集模型。

此外,论文还对MoE Jetpack的多种配置进行了深入研究,系统分析了不同专家数量、不同原始网络尺寸大小等因素对模型性能的影响。

表2 各种参数量的MoE Jetpack都展示出了显著的性能提升
下图展示了微调的全过程中MoE Jetpack对加速模型收敛速度和提升模型性能方面的效果,突显了其作为 MoE 模型预训练替代方法的潜力。

图4 MoE Jetpack带来了收敛速度提升
专家注意力图展示了不同的专家关注图像的不同区域,各司其职。专家贡献分布图表明,核心专家和普通专家在不同层次的贡献差异显著,展示了模型的自适应路由调度机制。

图5 专家注意力图和专家贡献分布图
总结
MoE Jetpack是一个创新框架,旨在将预训练的密集模型权重高效转换为MoE模型。通过提出Checkpoint Recycling技术,MoE Jetpack能够有效继承密集模型的知识;引入的SpheroMoE 层,显著提升微调过程的稳定性和性能。
该框架不仅降低了MoE模型的训练成本和硬件要求,还减少了对环境的影响,使得研究者在普通计算资源下也能轻松使用混合专家模型,为MoE的广泛研究与应用提供了有力支持。
参考资料:
https://arxiv.org/abs/2406.04801
.....
#TRIBE
近日,华南理工、A*STAR 和港中大(深圳)团队通过大量实验证明,这些真实场景下的测试数据流会对现有方法带来巨大挑战。该团队认为,最先进方法的失败首先是由于不加区分地根据不平衡测试数据调整归一化层造成的。测试时领域适应的鲁棒性得以保证,TRIBE在多真实场景下达到SOTA
测试时领域适应(Test-Time Adaptation)的目的是使源域模型适应推理阶段的测试数据,在适应未知的图像损坏领域取得了出色的效果。然而,当前许多方法都缺乏对真实世界场景中测试数据流的考虑,例如:
- 测试数据流应当是时变分布(而非传统领域适应中的固定分布)
- 测试数据流可能存在局部类别相关性(而非完全独立同分布采样)
- 测试数据流在较长时间里仍表现全局类别不平衡
为此,研究团队提出了一种创新的平衡批归一化层 (Balanced BatchNorm Layer),以取代推理阶段的常规批归一化层。同时,他们发现仅靠自我训练(ST)在未知的测试数据流中进行学习,容易造成过度适应(伪标签类别不平衡、目标域并非固定领域)而导致在领域不断变化的情况下性能不佳。
因此,该团队建议通过锚定损失 (Anchored Loss) 对模型更新进行正则化处理,从而改进持续领域转移下的自我训练,有助于显著提升模型的鲁棒性。最终,模型 TRIBE 在四个数据集、多种真实世界测试数据流设定下稳定达到 state-of-the-art 的表现,并大幅度超越已有的先进方法。研究论文已被 AAAI 2024 接收。
论文链接:https://arxiv.org/abs/2309.14949
代码链接:https://github.com/Gorilla-Lab-SCUT/TRIBE
引言
深度神经网络的成功依赖于将训练好的模型推广到 i.i.d. 测试域的假设。然而,在实际应用中,分布外测试数据的鲁棒性,如不同的照明条件或恶劣天气造成的视觉损坏,是一个需要关注的问题。最近的研究显示,这种数据损失可能会严重影响预先训练好的模型的性能。重要的是,在部署前,测试数据的损坏(分布)通常是未知的,有时也不可预测。
因此,调整预训练模型以适应推理阶段的测试数据分布是一个值得价值的新课题,即测试时领域适 (TTA)。此前,TTA 主要通过分布对齐 (TTAC++, TTT++),自监督训练 (AdaContrast) 和自训练 (Conjugate PL) 来实现,这些方法在多种视觉损坏测试数据中都带来了显著的稳健提升。
现有的测试时领域适应(TTA)方法通常基于一些严格的测试数据假设,如稳定的类别分布、样本服从独立同分布采样以及固定的领域偏移。这些假设启发了许多研究者去探究真实世界中的测试数据流,如 CoTTA、NOTE、SAR 和 RoTTA 等。
最近,对真实世界的 TTA 研究,如 SAR(ICLR 2023)和 RoTTA(CVPR 2023)主要关注局部类别不平衡和连续的领域偏移对 TTA 带来的挑战。局部类别不平衡通常是由于测试数据并非独立同分布采样而产生的。直接不加区分的领域适应将导致有偏置的分布估计。
最近有研究提出了指数式更新批归一化统计量(RoTTA)或实例级判别更新批归一化统计量(NOTE)来解决这个挑战。其研究目标是超越局部类不平衡的挑战,考虑到测试数据的总体分布可能严重失衡,类的分布也可能随着时间的推移而变化。在下图 1 中可以看到更具挑战性的场景示意图。

由于在推理阶段之前,测试数据中的类别流行率未知,而且模型可能会通过盲目的测试时间调整偏向于多数类别,这使得现有的 TTA 方法变得无效。根据经验观察,对于依靠当前批数据来估计全局统计量来更新归一化层的方法来说,这个问题变得尤为突出(BN, PL, TENT, CoTTA 等)。
这主要是由于:
1.当前批数据会受到局部类别不平衡的影响带来有偏置的整体分布估计;
2.从全局类别不平衡的整个测试数据中估计出单一的全局分布,全局分布很容易偏向多数类,导致内部协变量偏移。
为了避免有偏差的批归一化(BN),该团队提出了一种平衡的批归一化层(Balanced Batch Normalization Layer),即对每个单独类别的分布进行建模,并从类别分布中提取全局分布。平衡的批归一化层允许在局部和全局类别不平衡的测试数据流下得到分布的类平衡估计。
随着时间的推移,领域转移在现实世界的测试数据中经常发生,例如照明 / 天气条件的逐渐变化。这给现有的 TTA 方法带来了另一个挑战,TTA 模型可能由于过度适应到领域 A 而当从领域 A 切换到领域 B 时出现矛盾。
为了缓解过度适应到某个短时领域,CoTTA 随机还原参数,EATA 用 fisher information 对参数进行正则化约束。尽管如此,这些方法仍然没有明确解决测试数据领域中层出不穷的挑战。
本文在两分支自训练架构的基础上引入了一个锚定网络(Anchor Network)组成三网络自训练模型(Tri-Net Self-Training)。锚定网络是一个冻结的源模型,但允许通过测试样本调整批归一化层中的统计量而非参数。并提出了一个锚定损失利用锚定网络的输出来正则化教师模型的输出以避免网络过度适应到局部分布中。
最终模型结合了三网络自训练模型和平衡的批归一化层(TRI-net self-training with BalancEd normalization, TRIBE)在较为宽泛的的可调节学习率的范围里表现出一致的优越性能。在四个数据集和多种真实世界数据流下显示了大幅性能提升,展示了独一档的稳定性和鲁棒性。
方法介绍
论文方法分为三部分:
- 介绍真实世界下的 TTA 协议;
- 平衡的批归一化;
- 三网络自训练模型。
真实世界下的 TTA 协议
作者采用了数学概率模型对真实世界下具有局部类别不平衡和全局类别不平衡的测试数据流,以及随着时间变化的领域分布进行了建模。如下图 2 所示。

平衡的批归一化
为了纠正不平衡测试数据对 BN 统计量产生的估计偏置,作者提出了一个平衡批归一化层,该层为每个语义类分别维护了一对统计量,表示为:

通过进一步分析和观察,作者发现当 γ=1 时,整个更新策略就退化成了 RoTTA 中的 RobustBN 的更新策略,当 γ=0 时是纯粹的类别独立的更新策略,因此,当 γ 取值 0~1 时可以适应到各种情况下。
三网络自训练模型
作者在现有的学生 - 教师模型的基础上,添加了一个锚定网络分支,并引入了锚定损失来约束教师网络的预测分布。这种设计受到了 TTAC++ 的启发。TTAC++ 指出在测试数据流上仅靠自我训练会容易导致确认偏置的积累,这个问题在本文中的真实世界中的测试数据流上更加严重。TTAC++ 采用了从源域收集到的统计信息实现领域对齐正则化,但对于 Fully TTA 设定来说,这个源域信息不可收集。
同时,作者也收获了另一个启示,无监督领域对齐的成功是基于两个领域分布相对高重叠率的假设。因此,作者仅调整了 BN 统计量的冻结源域模型来对教师模型进行正则化,避免教师模型的预测分布偏离源模型的预测分布太远(这破坏了之前的两者分布高重合率的经验观测)。大量实验证明,本文中的发现与创新是正确的且鲁棒的。以下是锚定损失的表达式:

实验部分
论文作者在 4 个数据集上,以两种真实世界 TTA 协议为基准,对 TRIBE 进行了验证。两种真实世界 TTA 协议分别是全局类分布固定的 GLI-TTA-F 和全局类分布不固定的 GLI-TTA-V。

上表展示了 CIFAR10-C 数据集两种协议不同不平衡系数下的表现,可以得到以下结论:
1.只有 LAME, TTAC, NOTE, RoTTA 和论文提出的 TRIBE 超过了 TEST 的基准线,表明了真实测试流下更加鲁棒的 TTA 方法的必要性
2.全局类别不平衡对现有的 TTA 方法带来了巨大挑战,如先前的 SOTA 方法 RoTTA 在 I.F.=1 时表现为错误率 25.20% 但在 I.F.=200 时错误率升到了 32.45%,相比之下,TRIBE 能稳定地展示相对较好的性能。
3. TRIBE 的一致性具有绝对优势,超越了先前的所有方法,并在全局类别平衡的设定下 (I.F.=1) 超越先前 SOTA (TTAC) 约 7%,在更加困难的全局类别不平衡 (I.F.=200) 的设定下获得了约 13% 的性能提升。
4.从 I.F.=10 到 I.F.=200,其他 TTA 方法随着不平衡度增加,呈现性能下跌的趋势。而 TRIBE 能维持较为稳定的性能表现。这归因于引入了平衡批归一化层,更好地考虑了严重的类别不平衡和锚定损失,这避免了跨不同领域的过度适应。
更多数据集的结果可查阅论文原文。
此外,表 4 展示了详细的模块化消融,有以下几个观测性结论:

1.仅将 BN 替换成平衡批归一化层 (Balanced BN),不更新任何模型参数,只通过 forward 更新 BN 统计量,就能带来 10.24% (44.62 -> 34.28) 的性能提升,并超越了 Robust BN 的错误率 41.97%。
2.Anchored Loss 结合 Self-Training,无论是在之前 BN 结构下还是最新的 Balanced BN 结构下,都得到了性能的提升,并超越了 EMA Model 的正则化效果。
本文的其余部分和长达 9 页的附录最终呈现了 17 个详细表格结果,从多个维度展示了 TRIBE 的稳定性、鲁棒性和优越性。附录中也含有对平衡批归一化层的更加详细的理论推导和解释。
总结和展望
为应对真实世界中 non-i.i.d. 测试数据流、全局类不平衡和持续的领域转移等诸多挑战,研究团队深入探索了如何改进测试时领域适应算法的鲁棒性。为了适应不平衡的测试数据,作者提出了一个平衡批归一化层(Balanced Batchnorm Layer),以实现对统计量的无偏估计,进而提出了一种包含学生网络、教师网络和锚定网络的三层网络结构,以规范基于自我训练的 TTA。
但本文仍然存在不足和改进的空间,由于大量的实验和出发点都基于分类任务和 BN 模块,因此对于其他任务和基于 Transformer 模型的适配程度仍然未知。这些问题值得后续工作进一步研究和探索。
.....
#vis_dec_neurips
来自鲁汶大学、新加坡国立大学和中科院自动化所的研究者提出了一种视觉 「读脑术」,能够从人类的大脑活动中以高分辨率出解析出人眼观看到的图像。
人类的感知不仅由客观刺激塑造,而且深受过往经验的影响,这些共同促成了大脑中的复杂活动。在认知神经科学领域,解码大脑活动中的视觉信息成为了一项关键任务。功能性磁共振成像(fMRI)作为一种高效的非侵入性技术,在恢复和分析视觉信息,如图像类别方面发挥着重要作用。
然而,由于 fMRI 信号的噪声特性和大脑视觉表征的复杂性,这一任务面临着不小的挑战。针对这一问题,本文提出了一个双阶段 fMRI 表征学习框架,旨在识别并去除大脑活动中的噪声,并专注于解析对视觉重建至关重要的神经激活模式,成功从大脑活动中重建出高分辨率且语义上准确的图像。
论文链接:https://arxiv.org/abs/2305.17214
项目链接:https://github.com/soinx0629/vis_dec_neurips/
论文中提出的方法基于双重对比学习、跨模态信息交叉及扩散模型,在相关 fMRI 数据集上取得了相对于以往最好模型接近 40% 的评测指标提升,在生成图像的质量、可读性及语义相关性相对于已有方法均有肉眼可感知的提升。该工作有助于理解人脑的视觉感知机制,有益于推动视觉的脑机接口技术的研究。相关代码均已开源。
功能性磁共振成像(fMRI)虽广泛用于解析神经反应,但从其数据中准确重建视觉图像仍具挑战,主要因为 fMRI 数据包含多种来源的噪声,这些噪声可能掩盖神经激活模式,增加解码难度。此外,视觉刺激引发的神经反应过程复杂多阶段,使得 fMRI 信号呈现非线性的复杂叠加,难以逆转并解码。
传统的神经解码方式,例如岭回归,尽管被用于将 fMRI 信号与相应刺激关联,却常常无法有效捕捉刺激和神经反应之间的非线性关系。近期,深度学习技术,如生成对抗网络(GAN)和潜在扩散模型(LDMs),已被采用以更准确地建模这种复杂关系。然而,将视觉相关的大脑活动从噪声中分离出来,并准确进行解码,依然是该领域的主要挑战之一。
为了应对这些挑战,该工作提出了一个双阶段 fMRI 表征学习框架,该方法能够有效识别并去除大脑活动中的噪声,并专注于解析对视觉重建至关重要的神经激活模式。该方法在生成高分辨率及语义准确的图像方面,其 50 分类的 Top-1 准确率超过现有最先进技术 39.34%。
方法概述
fMRI 表征学习 (FRL)

第一阶段:预训练双对比掩模自动编码器 (DC-MAE)

第二阶段:使用跨模态指导进行调整
考虑到 fMRI 记录的信噪比较低且高度卷积的特性,专注于与视觉处理最相关且对重建最有信息价值的大脑激活模式对 fMRI 特征学习器来说至关重要。

使用潜在扩散模型 (LDM) 生成图像


实验
重建结果

通过与 DC-LDM、IC-GAN 和 SS-AE 等先前研究的对比,并在 GOD 和 BOLD5000 数据集上的评估中显示,该研究提出的模型在准确率上显著超过这些模型,其中相对于 DC-LDM 和 IC-GAN 分别提高了 39.34% 和 66.7%

在 GOD 数据集的其他四名受试者上的评估显示,即使在允许 DC-LDM 在测试集上进行调整的情况下,该研究提出的模型在 50 种方式的 Top-1 分类准确率上也显著优于 DC-LDM,证明了提出的模型在不同受试者大脑活动重建方面的可靠性和优越性。
实验结果表明,利用所提出的 fMRI 表示学习框架和预先训练的 LDM,可以更好的重建大脑的视觉活动,大大优于目前的基线。该工作有助于进一步挖掘神经解码模型的潜力。
.....
#SPARK
~ 我的第一个小无人机就叫这个~~~
随着深度神经网络(DNNs)模型在规模和复杂性上的迅速增长,传统的神经网络处理方法面临着严峻的挑战。现有的神经网络压缩技术在处理参数规模大、精度要求高的神经网络模型时效率低下,无法满足现有应用的需求。深度网络数据编码新突破,上交大SPARK登上计算机体系结构顶会
数值量化是神经网络模型压缩的一种有效手段。在模型推理过程中,低位宽(比特)数据的存取和计算可以大幅度节省存储空间、访存带宽与计算负载,从而降低推理延迟和能耗。当前,大多数量化技术的位宽在 8bit。更为激进的量化算法,必须要修改硬件的操作粒度与数据流特征,才能在真实推理时获得接近理论的收益。比如混合精度量化,激活数据的量化等方案。一方面,这些方案会显式增加 book-keeping 存储开销和硬件逻辑,使得实际收益下降 [1,2,3]。另一方面,一些方案利用分布特征对量化范围和粒度做约束,来减小上述硬件开销 [4,5]。但其精度损失也受到不同模型和参数分布的影响,无法满足现有应用的需求。
为此,本文的研究者提出了 SPARK 技术,一种可扩展细粒度混合精度编码的软硬件协同设计。
其核心优势如下:
- 固有比特冗余:SPARK 不对模型进行压缩,而是剔除数据表示中固有的比特冗余,与现有的压缩方案正交,可以协同使用。
- 变长编码方案:SPARK 创新了变长数据表示格式,有效压缩模型大小,不需要增加额外的 book-keeping(如 index 等)代价(如硬件,访问与更新延迟)。该编码方案对模型参数与激活值同样适用。
- 硬件兼容性:SPARK 不需要修改硬件加速器微架构(如:脉动阵列),不会引入额外的设计复杂性,可行性较高。
- 平衡精度与效率:在大型模型中,SPARK 通过其高效的编码机制,不仅提升了处理速度,还精确地保持了模型的准确性。与其他同类型加速器相比平均获得了 4.65 倍的加速,降低了 74.7% 的能耗。
研究动机
本工作源于对模型参数与激活值分布的观察分析:由于权重和激活的分布成长尾型,量化后的数据仍会保持该分布,呈现高位稀疏的特性。具体的,按 INT8 精度量化后的模型参数中,80% 左右的数据都可以用 INT4 表示,只有一小部分较重要的值需要高位宽存储,如图 1 所示。

图 1 不同网络中 INT4 范围内数据和 INT8 范围内数据的比例
为了利用数据表示中固有的比特冗余,作者提出了 SPARK—— 一种可变长度的编码方案,通过引入一位指示符和新颖的编解码模式来支持混合精度。这种编码方案电路设计简单,而且维持存储对齐。
主要方法
在 SPARK 中,本工作只简单地用最高位作为指示符区分高 / 低精度数据,而不同于其他分离尾数域和指数域的复杂编码策略。同时,模型训练时就可以模拟该编码行为,而不用进行训练后微调来补偿由量化带来的精度损失。
编码方案及电路设计
该工作以 INT8 量化为例,每个数据为 8bit unsigned 整型。原始数据的编码表示为(b0 , b1 , b2 , b3 , b4 , b5 , b6 , b7),具体的编码原则如图 2 所示。
1. 当原编码中只有b4 - b7 这低 4 位包含非零有效位时,直接进行低精度无损编码,缩短为 4bit,其中最高位 C4 是指示符位,设为 0。
2. 当原编码中 b0-b3 这高 4 位也包含非零有效位时,进行高精度编码。其中,最高位 c0 为指示符位,设为 1。之后,视 b0 异或 b3 的结果,决定是否进行有损近似编码或无损编码。
a) 当原数值范围在 [8, 127],即 b3-b1 位包含非零有效位时,最高位的指示符位不作为数值位计算。当 b3 位为 1 时,在编码阶段将 b3 位设为 0 并将低 4 位 C4-C7 补偿为 1111。虽然,这一步是有损的,但由于补偿效应、损失精度较小。
b) 当原数值范围在 [128, 255],即 b7-b0 位这 8 位都包含非零有效位时,最高位的指示符位作为数值位计算。当 b3 位为 0 时,在编码阶段将 b3 位设为 1 并将低 4 位 C4-C7 补偿为 0000。
当然,该工作也可以更激进地舍弃这些 fixed bit 进一步压缩存储容量与带宽,但需要在解码阶段把 fixed bit 填补后再将 8bit 数据送入计算单元。这会增加一些解码器的硬件开销。

图 2 SPARK 编码对于不同范围的原数据的应用
硬件上实现该编码器只需要用到零检测器,多路选择器和异或门等熟知的硬件模块,具体电路设计如图 3 所示:输入 8bit 的原始数据,b0 ~ b4 先经过一个 5bit 的零检测器,判定该输入编码为高 / 低精度,如果编码为低精度则直接输出 b4 , b5 , b6 , b7,若编码为高精度,则根据公式 1 和公式 2 分情况编码。

图 3 SPARK 方案的编码器电路设计
解码方案及电路设计
本工作设计了一个硬件友好的解码方案,下面将阐述如何将编码转换为十进制值。首先,本工作假定大端序存储(Big Endian),解码时输入位宽为 4bit,使能信号 1 位。
解码器电路需要的硬件模块为熟知的多路选择器,或门和非门。具体实现如图 4 所示,解码器每个周期读入 4bit 数据和使能信号。
当使能信号为 1,则指该输入是高精度值得后半部分编码;当使能信号为 0 时,若 c0 = 0,则判定输入是低精度值直接输出 c0c1c2c3 为解码值,若 c0 = 1 则根据 c3 判定将指示符位作为数值位计算。公式 3 阐述了具体的判定规则,图 4 是解码器的电路设计图。

图 4 SPARK 方案的解码器设计
整体架构
SPARK 可以与常用的张量运算核心(脉动阵列,乘加树等)很好的兼容。如图 5 所示,解码器放置在 weight buffer 与 PE 之间,在参数灌入 PE 阵列之前解码;同样也放置在 Activation Buffer 与 PE 之间,在激活值灌入 PE 阵列之前解码。编码则分为两部分。对于参数的编码可以离线进行,在 DRAM 中直接存储已经编码压缩后的参数。在线硬件编码器则放置在 PE 计算完产生 Activation 之后。
若要进一步挖掘计算效率上的提升,则可以设计一个常见的混合位宽运算单元(SPARK PE Unit),支持两个 8bit 操作数的 MAC 操作,或者 2 对 4 个 4bit 操作数的 MAC 操作。

图 5 SPARK 整体架构图
实验结果
文章使用 CNN-based 和 attention-based 的模型簇进行实验,在 ImageNet 数据集上测试了 VGG-16,ResNet-18,ResNet-50 网络,在 GLUE 数据集上测试 BERT-based 模型,以及 ViT 模型。与 SPARK 进行对比的 baseline 架构有:Eyeriss [6], BitFusion [7], OLAccel [1], ANT [8], Olive [9]。
模型准确性评估
在 ImageNet 数据集上,和原始的 FP32 模型相比,SPARK 上的平均准确率损失大约为 0.1%,对于 attention-based 的模型,SPARK 获得了更好的准确性(+0.6%)。表 1 和表 2 展示了准确性评估的结果。

表 1 SPARK 和其他没有微调的架构在精度损失和平均存储位宽上的比较

表 2 SPARK 和其他架构在 SST-2 数据集上测试 BERT 的精度损失和位宽比较
性能和能耗评估
执行效率上,图 5 展示了不同加速器在六个网络上的执行效率对比。和其他架构相比,SPARK 最多获得了 4.65 倍的加速,在 ResNet-50 网络上,SPARK 有 80.1% 的明显性能提升。

图 5 不同架构设计的延迟比较
能耗上,图 6 展示了不同架构的 DRAM,BUFFER,CORE 的能耗贡献在 5 个网络上的比较结果。对于 ResNet-50,SPARK 最多下降了 74.7%。

图 6 不同架构设计的能耗比较
结语
SPARK 利用数据表示中的比特冗余,结合高效的编解码方案,使得 AI 模型在保证精度需求的情况下,利用本就存在的比特稀疏,这对于计算、存储、传输都带来了巨大的开销节省。在处理越来越大的模型时,SPARK 展现出了其独特的优势。它不仅能够处理大规模数据,还能在精度极其敏感的场景下保持高效率。这一点对于现在 AI 应用尤为关键,如自动驾驶、医学诊断和语言处理等。
在未来,这套编码方法还可以进一步扩展到交换芯片,存储盘控芯片等关键位置,用于优化 AI 数据中心的通信瓶颈。
....
#注意力机制比矩阵分解更好吗?
本文以作者自身工作出发对深度学习中如何建模“全局信息”、“全局信息”如何改善了表示的质量、如何训练以优化算法作为网络结构的隐式模型等话题进行探讨。
本文以Hamburger (https://github.com/Gsunshine/Enjoy-Hamburger)为出发点,对深度学习中如何建模“全局信息”、“全局信息”如何改善了表示的质量、如何训练以优化算法作为网络结构的隐式模型等话题进行探讨。
Hamburger的原始论文 Is Attention Better Than Matrix Decomposition? 以top 3%的分数被ICLR 2021接收,作者信息如下:
论文链接:https://openreview.net/forum?id=1FvkSpWosOl
一、引言
作为深度学习的基础模块,注意力机制[1][2]在过去的5年中受到了极大的关注。它被认为是在神经网络中提供了全局信息建模。基于注意力机制的Transformer[3]在自然语言处理[4][5]和计算机视觉[6][7]中均取得了令人赞叹的实践成果。研究社区对设计更加高效和强大的注意力机制[8][9][10][11][12][13]充满兴趣,解释注意力机制[14][15][16]也成为一个值得研究的问题。
然而,注意力机制真的如我们预想的一样强大吗?它的有效性来源于哪里呢?我们对它的底层机制仍然所知甚少——研究者打出“Attention is not all you need.”的口号[17],直指纯粹的注意力机制并非像大家认为的那样强大,并将注意力机制与skip connection以及FFN协作视为更加重要的原因。
本文绕开了直接针对现有注意力机制进行结构设计和理论分析。我们假设注意力机制可能不是最优的,可能并不能本质地反映注意力的motivation。因而,我们试图为注意力提供一个“参考坐标”。这个“参考坐标”应当是基于第一性原理设计的,从建模全局信息的角度进行假设并推导得出的。当以实践作为准绳的时候,它至少应与注意力机制旗鼓相当。虽然它与注意力享有共同的motivation,但我们并不断言任何它与注意力的等价性或者借由它解释已有的注意力——只是在一面铜镜中,我们试图看见自己。
简言之,我们找到的“参考坐标”是矩阵分解模型及其优化算法。一个令人印象深刻的观察是,注意力机制并不比20多年前的矩阵分解更优——仅是性能相当,但后者的计算和内存开销更低。
在寻找这个坐标系的过程中,我们发展了一些直觉,用于形式化地刻画注意力机制的“全局信息”建模,进而导出了一种具有一般性的全局信息模块的设计策略。我们将建模全局信息抽象为低秩矩阵恢复的数学模型,将全局信息假设为低秩矩阵,并将求解该类问题的优化算法作为神经网络的结构。当我们解决棘手的梯度和优化问题之后,我们的策略可以设计一系列在实践中有效的模型作为注意力机制的“参考坐标”——汉堡模型,Hamburger。或取其英文谐音,称为憨憨模型,如其中文名的含义,简单且平凡。
简单且平凡的方法可以有强大的性能。轻量化的憨憨模型在注意力机制建模全局信息具有决定作用的语义分割及大规模图像生成中展现出优异的性能,在PASCAL VOC和PASCAL Context获得state-of-the-art的成绩,并在ImageNet规模的图像生成中表现出相对于注意力机制的优势。
汉堡美味,请君一尝。
二、回顾
我们首先回顾矩阵分解的和注意力机制的思想,然后介绍憨憨模型。我们希望在形式化的描述之外提供更多直觉,帮助读者理解我们方法的动机,以及作为“参考坐标”的意义。
1. 矩阵分解
如果把给定的数据按列组织为矩阵 。一个常见的假设是 的有效信息实际嵌入在一个低维子空间或者多个子空间的并中。进而, 我们考虑一个字典矩阵 和对应的编码 从而将 的生成过程和对应的分解描述为

其中 是矩阵分解复原的低秩矩阵, 是噪声矩阵。我们进一步可以假设恢 复的矩阵 是低秩的, 即
当我们针对 , ,和 假设不同的结构或者先验信息时, 可以进一步推出不同的矩阵分解模型, 而这些矩阵分解模型也对应不同的求解算法。经典矩阵分解模型的应用包括图像去噪 、图像补全 等。
2. 注意力机制
一种概括性的说法[20][21]是,注意力机制旨在从海量的无意识语境中找到一组概念进行进一步的有意识推理。作为其代表,Transformer提出了使用自注意力机制学习机器翻译中的长程依赖关系:
其中, 是对输入进行线性变换得到的特征。自注意力机制通过一次性关注所 有token来提取全局信息, 而非典型的循环神经网络(RNN)中逐个处理token。
自Transformer正式提出以来,注意力机制在自然语言处理和计算机视觉中获得了广泛的使用。然而,我们对注意力机制有效的深层原因还所知甚少。一种常见的观点[3]是,注意力机制建模了表示中的全局信息,因此优于卷积神经网络和循环神经网络。
三、正文
诚然,注意力及其变体取得了巨大的成功,它给我们留下了这样两个问题:
- 开发基于注意力机制的新的全局信息模块,通常是借助辛苦的手工设计;
- 从理论层面解释已有注意力机制的有效性。
本文的憨憨模型试图解决这两个问题吗?不,我们实际上是绕过了这两个问题。
本文试图从第一性的视角去重新审视注意力机制。换言之,我们试图借助“假设->建模->求解->验证”的路线,从建模全局信息的motivation出发,建立模型并求解,最后通过验证看看假设是否正确,背后的本质原因是什么。并且,根据Occam准则:“如无必要,勿增实体”,我们希望这一过程保持一定的简洁与抽象。
就像参加数学建模比赛,我们会有一些基础的假设,在这些假设之上,我们会建立一个数学模型。它可能是一组偏微分方程,也可能是一个概率图,或者最简单地就是一个某种形式的优化问题。当我们求解的时候,我们会直接求闭解,或者使用数值方法,如优化算法、仿真或者采样。这是依据某些规则推导得出的,而非直接依赖于手工设计的。
在本文中,我们延续这样的逻辑,试图建立一些抽象和假设,并基于此设计优化模型,使得这个问题的解可以描述注意力机制的motivation,从而进一步将求解这个优化问题的算法当做神经网络的结构——求解过程自然产生了一个计算图,我们将它理解为神经网络的结构。
这样的想法是简单且平凡的,但是在state-of-the-art的深度学习模型中却不是非常常见。当我们谈论深度学习的时候,经常使用的语境是“学习某种要素”。我们会把神经网络的反向传播看作是学习,也就是追求泛化的优化问题,但相当少把神经网络的前向推理看做优化(或者数值解)。我们会为前向推理设计一些规则,也就是网络的结构,以期通过反向传播和随机优化得到的网络,可以从数据中学到我们期望的某种“要素”,或者具有某种“特性”。也许实验可以做通,但是我们并不清楚是否是这种“要素”起了作用,可能另有玄机。
将这番论断切换到注意力机制的语境中。我们手工设计了一个可以在“全局”层面一次性联系所有token的模块:注意力机制。我们看到注意力机制获得了强大的性能,并且通过可视化观察注意力中存在一些合理的相关性。因而我们得出结论,注意力机制建模了全局信息,建模全局信息是合理的、有效的,有助于下游任务。
那么,
- “全局信息”是什么?
- “全局信息”如何改善了表示的质量?
- 什么是好的表示?
我们切换到“假设->建模->求解->验证”的逻辑,尝试回答第一个问题,并且对第二个问题作出一些猜测,以期启发第三个问题。我们将大部分叙述集中于第一个问题,包括本文的主要内容,在实验观察中对第二个问题作出一定猜测,并在最终的结论环节反思第三个问题。
针对表示中的“全局信息”,我们的假设是,“全局信息”应当是表示中低秩(low-rank)的部分。我们通过简单的分析来展示基于这个假设的建模,并且以受到ICLR reviewer点赞的例子进一步展示其insight。
以卷积神经网络为例进一步讨论。当我们输入图像后, 网络会输出一个张量 。由于张量可以看作是一组 个 维的超像素, 我们将张量展开为一个矩阵 。当模块学习长程依赖性或全局上下文时, 隐藏的假设是“全局信息" 描述的超像素是内在相关的。进一步进行简化, 我们假设超像素是线性相关的。这意味着 中的每个超像素都可以表示为一组基的线性组合, 基的个数通常远小于 。在理想的情况下, 表示 可以是低秩的 (lowrank) 。
低秩代表了这样的一种先验信息, 即low-level的表示包含的相当有限的high-level概念, 而且比表示本身的规模少得多。想象一下, 在一幅图像中, 一个人走在路上。由CNN提取的许多超像素将描述道路。而道路可以被认为是基本道路方格的重复, 这意味着我们可以通过建模道路方格并重复来表示超像素中的道路(就如同你正在玩Minecraft)。在数学上, 这相当于找到一组对应不同道路方格的字典 和一个描述道路方格和超像素之间的关系的系数矩阵 。当然, 抛弃 和 的具体物理含义, 而为它们假设一些数学结构, 亦是可取的。
描述道路方格的超像素具有接近的语义属性, 然而, 由于vanilla CNN对全局上下文的建模能力较差, 学习到的 通常会被噪声、冗余或者缺失 所破坏。想象一下, 图像中的人戴着手套。当我们盖住其他部分, 仅仅在局部看到手套时, 我们认为这块区域在描述手套。但当我们考虑全局背景时, 我们可以理解, 手套是一个人的一部分。语义信息是分层次的, 取决于我们希望在哪个层次上理解它。在这里, 我们把从“全局信息"层面理解的冗几余和不完整的信息, 进一步建模为残差项 。
这些分析提示我们, 建模"全局信息"可以将表示 分解为两部分, 即低秩的"全局信息" 和残差项 。我们将结构化的, 全局层面相关的信息假设为低秩的, 应当是相当直观的。但是直接作出低秩的假设, 并不能帮助我们建立模型, 因为表示中可能存在的低秩结构是难以穷举的。我们可以获得怎样的低秩结构作为“全局信息",一方面取决于对低秩结构本身做的假设, 或者另一方面取决于我们对低秩结构以外的残差项做的假设, 即我们的数学模型。
进一步的,我们考虑将这个过程写成一个优化问题,通过优化算法求解干净的信号子空间,丢弃残差项,并使用这个求解算法的计算图作为本文提出方法的核心。基于已有的假设分析和对矩阵分解模型的回顾,我们将建模“全局信息”的目标函数写为:
其中, 表示重构误差, 可以通过残差项 的元素分布导出, 和 分别表示对字典矩阵 和系数矩阵 的正则化, 可以由其先验分布导出。将求解该目标函数的优化算法记为 , 我们将 作为本文提出的憨憨模型的核心结构, 即 。
最简单形式下的憨憨模型形似汉堡, 即由两个线性变换中间包含一个矩阵分解模型, 按顺序分别记为Lower Bread, Ham, Upper Bread,其中Ham对应求解矩阵分解模型的数值方法 。
这里有一个观察,使用“假设->建模->求解->验证”的逻辑天然为 提供了有效的抽象。从神经网络结构设计的角度看, 的设计应当是具象化的,case-by-case的。但这种过度的具象化带来了理论分析和拓展的困难,我们往往难以确定到底是何种因素起了作用。抽象将求解矩阵分解的数值方法看作一个整体,以便于我们理解,即使从结构设计的角度来看,数值优化算法是“复杂”的结构,如果没有具体目标的指引,本身是难以手工设计的。
抽象的另一个好处在于,我们可以采用实际上不同的物理模型来验证抽象的合理性。这些模型的细节各有差异,求解算法和导出的网络结构 也大相径庭,但是一般意义上,它们都满足低秩分解的假设。这服务于本文的底层逻辑,即对“全局信息”这样一种相当模糊的概念提供一种一般性的数学刻画,并使用不同的模型支持这样的假设。
在实际计算层面,我们提供了三种“口味”的汉堡,即分别使用矢量量化(VQ)[22]、概念分解(CD)[23]、非负矩阵分解(NMF)[24]来作为 的憨憨模型。注意,我们将简单带过对这些模型的介绍——正如前文强调的一样,我们希望读者将这些模型抽象为一个整体。这是因为,本文的主要贡献并非改进了矩阵分解模型——这在过去的10年中有相当充分的文献[25][26][27][28]探讨如何更好地基于可学习的优化策略求解这些模型。本文侧重于为建模“全局信息”提供了一种数学刻画,在这种刻画中矩阵分解作为一种自然的策略用于求解。
在选择这些矩阵分解模型的背后,一种考虑是选择尽可能简单的模型。为改进矩阵分解的求解引入可学习的优化算法固然可以获得进一步的增益,但这使得我们不能确定增益是来自于额外的参数与计算量还是建模与假设本身,从而导致与注意力机制的比较变得不公平,同时引入了额外分析可学习优化算法性质的需求。这种考虑本身是一把“奥卡姆剃刀”,迫使我们选择了这三个经过时间检验且建模和求解都足够简单的矩阵分解模型,在保持尽可能简洁的同时确保一般性。进一步地,我们将在下文看到,这类模型真正的阿喀琉斯之踵在于计算梯度与保持可微分的方式,其本质困难并非模型本身的优化问题的求解质量。
在这里,我们展示了VQ和NMF作为 ——它们几乎与笔者同龄。即使如此简单且轻量化,后文的实验将证实其足够与视觉注意力机制相媲美,这充分支持了本文的论断。
当我们设计好憨憨模型作为神经网络的一个构建模块之后,一个问题是,如何为矩阵分解计算反向传播的梯度,即保持其可微分,这是与神经网络进行协作的关键。
三、正文:One-Step Gradient
当我们设计好憨憨模型作为神经网络的一个构建模块之后,一个问题是,如何为矩阵分解计算反向传播的梯度,即保持其可微分,这是与神经网络进行协作的关键。一种直觉性的策略是将求解矩阵分解的优化算法看做一个RNN,应用延时间轴反向传播(BPTT)算法[1]。进一步地,我们也可以使用黑盒的方法,对矩阵分解进行抽象从而应用隐式微分(Implicit Differentiation)[2][3]。在求解算法收敛的情况下(迭代步数t趋近于无穷),这两种策略是等价的,空间复杂度和计算效率上各有优劣。然而事实是,标准的策略在优化上并不令人青睐,而且严重损害了憨憨模型的潜力。在接下来的部分,我们将建立一个抽象模型来分析BPTT算法和隐式微分的问题,并最终通向本文提出的解决策略,One-Step Gradient。
我们把求解矩阵分解的优化算法抽象为一个简单的不动点迭代模型, 即给定输入 , 迭代函数 将中间变量 迭代 次得到 , 并最终通过函数 输出预测 用于损失函数 。
注意, 这个模型与常见的RNN略有不同, 它每个时间步接受相同的输入, 只输出最终状态 , 所有中间变量都被丢弃了。常见的RNN模型往往是“横着"的,自左至右逐个词阅读句子, 输出对每个词的理解; 这里给定的抽象模型更像是一个"坚着"的RNN,把所有词一次性读入,反复阅读直到理解。这个抽象模型适用于优化算法和不动点迭代等数值方法, 也适用于隐式模型 。
在憨憨模型的场景中, 输入 是由backbone处理得到的一个张量; 如 , 中间变量 对应于矩阵分解的待优化变量, 如 和 是无参数的简单函数, 对应求解矩阵分解的优化算法, 是处理矩阵分解结果的后续网络。我们关注的是关于输入变量 的梯度, 以及关于初始状态 的梯度。如果迭代函数 本身含有参数也是无妨的, 将参数看做输入变量即可。这意味着, 我们的分析不单适用于憨憨模型, 对于一般意义的隐式模型也是适用的。
通过链式法则,我们可以直接计算BPTT定义的雅克比矩阵:
进一步地, 通过假设 和 满足Lipschitz连续, 并记 关于输入 的Lipschitz常数为 , 关于状态变量 的Lipschitz常数为 的Lipschitz常数为 , 且 , 我们保证了对于任意输入 时有唯一与之对应收敛点 。此时, 由BPTT计算的梯度将有无穷多项求和, 而通过隐函数定理“算两次”, 我们可以知道BPTT算法与隐式微分等价。我们会有如下的观察:
这些观察提示了对于一个有收敛趋势的迭代过程进行标准的反向传播或隐式微分的数值特征。Prop. 1解释了迭代过程本身的收敛性质,对应到抽象模型的现实场景,即优化算法或者不动点迭代。Prop. 2基于隐函数定理给出了“算两次”的结果,即BPTT与隐式微分在此时是等价的。Prop. 3则解释了最终输出关于迭代的初始值 和输入变量 的雅克比矩阵的存在的梯度消失和梯度爆炸。
我们从Scale和Spectrum两个层次讨论雅克比矩阵存在的问题。
首先是Scale, 这里存在一个有趣的trade off。当 , 意味着在阶不变的情况下, 实际更快地收剑。这时, 对于初始化变量 的梯度消失会变严重, 对于输入变量 的梯度爆炸会减轻。相反, 时, 实际收敛需要更多的迭代步数, 此时, 对初始化变量 的梯度消失会减轻, 但对于输入变量 的梯度爆炸会变严重。这意味着, 在BPTT和隐式微分的框架内, 同时学习一个有收敛趋势的迭代算法的初始化参数和输入变量存在着不可调和的矛盾。
这两者对应着两种有实际意义的需求。前者对应针对非凸问题的优化算法的初始值, 初始值对于很多算法有相当可观的影响。对于攸散模型而言, 这断言通过反向传播学习矩阵分解的初始值 和 , 或者某个将输入变量映射为矩阵分解初始化的函数, 是不可行的。后者输入变量 则更为灵 型的梯度来训练backbone将出现梯度爆炸), 而对于隐式模型而言, 更常见的是 本身的参数。
在这两种需求里面,计算关于输入变量 的雅克比矩阵是一个更为重要的需求。因为对于憨憨模型中的优化算法而言,如求解NMF的MU rule,我们可以随机采样初始化,从而绕开学习 和 的初始值,但训练backbone的梯度则是一个无法绕开的需求。因此我们进一步观察最终输出 关于输入变量 的雅克比矩阵。
遗憾的是, 从Prop. 2中不难观察到, 由BPTT或隐式微分计算的雅克比矩阵 很可能是illconditioned的, 这从Spectrum层面上揭示了第二个问题。如果假设 可对角化, 再考虑高维矩阵特征值的经验分布, 往往是大量的集中在 0 附近的小特征值和少量偏离0的较大特征值 (考虑随机矩阵的Semicircle Law,或考虑数据分布的低维流形假设),当 含有趋近于1的特征值时候, 就不难看出Prop. 2中的 将会变得ill-conditioned。
这是一个超出Scale的问题,并不是通过截断梯度中过大的值或者进行缩放就可以解决的。可以类比的是当优化问题的Hessian矩阵变得ill-conditioned时,由BPTT和隐式微分计算的雅克比矩阵限制了优化算法在参数空间中搜索泛化较好的解的能力。因此观察到的情况往往是较为严重的泛化能力下降(Generalization Deterioration),即使作为优化部分的训练损失是正常的。
一个非常有趣的事情是,MoCo v3[4]针对训练ViT[5]给出了相似的经验观察,即不易观察到的训练不稳定和泛化损失,并且随着远离监督信号和靠近初始层而更加严重(类比于 )。即使从客观层面考虑,ViT基于注意力机制,而憨憨模型考虑的是使用矩阵分解建模全局信息,两者确实有相当大的差异,但如果进一步想到注意力机制与优化算法的微妙联系[6],不禁让人思考Transformer的雅可比矩阵是否也存在特征值谱上的ill-conditioned或者雅可比矩阵连乘后的Spectrum/Rank Collapse的问题,以及梯度数值上的长尾分布。这种反思,正是本文的出发点之一,即并非直接理解注意力机制,而是通过数学建模注意力机制的motivation,它提供了一种抽象,就像一面镜子,使得我们在镜子中看到自己。
现在我们对BPTT或者隐式微分计算的雅克比矩阵的问题有了一个较为清晰的认识,但是这种困境是如何产生的呢?笔者给出一种逻辑:
我们通过BPTT或者隐式微分计算雅克比矩阵,是一种手段,而非目的。只是因为我们在完全的端到端的框架下理解这个问题,想办法计算出梯度(如通过隐式微分将实际不可计算的无穷多项的BPTT变得可以计算),后面就可以交给我们的深度学习框架和优化器,从而把优化问题转化为如何计算梯度的问题,看上去是简化了这个问题。但是,我们的实际目标是找到泛化更好的优化策略,而不是如何从数值上计算一个真实的、误差更小的梯度(即隐式微分)。从这个角度来看,手段有问题,替换手段,服务于优化的最终目的即可。
因此在优化憨憨模型时, 我们实际采用的是One-Step Gradient, 一种forward和backward"解耦合"的策略。我们在分析BPTT和隐式微分存在的问题的时候, 已经清晰地看到了, 导致梯度爆炸和 ill-conditioned的原因是, BPTT的无穷多项求和 及其收敛到的隐式微分中的 。考虑到 的中的项的scale是指数衰减的,我们考虑将其截断到有限项。更极端的情况是, 仅保留其第一项, 也就是用 替换了 , 从而有One-Step Gradient:
显然, 完全不含有 的One-Step Gradient避免了BPTT中的求和和隐式微分中的求逆带来的诸多不利。实际中, 对于训练隐式模型而言, 采用多项的Neumann级数更为实用 (可以考虑steps ), 但是对于优化算法驱动的憨憨模型而言, One-Step Gradient是一个相当preferable的选择, 因为真实场景下优化算法可能是不满足上文抽象模型的假设的, 存在 的情况。尤其是当优化算法中含有 softmax 函数时, 即使拓展为steps为2的情况, 也可能损害其性能。
在这里,我们仅将One-Step Gradient声称为一种practical solution,而不是principle或者final solution。事实上,这个问题相当有趣,真实场景和理论分析之间存在一些微妙的差异。笔者将在后续的工作中分享更为细致的探讨。
另一方面,为One-Step Gradient提供理论保证并不困难,证明One-Step Gradient与BPTT和隐式微分计算的gradient的夹角小于90度即可,这保证其在优化上可用。但理解One-Step Gradient在改进泛化上的影响,需要更为深入的工作。值得注意的是,本文针对憨憨模型提出的One-Step Gradient是一种一般的策略,亦可以用于隐式模型的优化,这被最近的工作[7]所验证。
针对One-Step Gradient,我们希望在技术细节以外提供更多视角。有一句话在上文提及,但并未详细展开,即One-Step Gradient是一种forward和backward“解耦合”的策略。在这里,我们为读者提供更多细节。
不论显式模型,或者经典的隐式模型,其forward和backward都构成了某种意义下对称的镜像,如显式模型forward和backward都产生了一个layer by layer的计算图;而隐式模型中,Neural ODE[8]的forward和backward由两个相关的ODE构成(伴随方程,adjoint equation),DEQ[3]的forward和backward则都由解方程构成(隐式微分,implicit differentiation)。如果实际检查过forward和backward的实现,这种感觉将会更为强烈。
然而,One-Step Gradient实际上打破了这种对称性,实现了所谓“解耦合”。“解耦合”的意思是,我们可以把用于数值上计算输出的计算图和用于计算梯度的计算图相互分离,并不沿着计算输出的计算图反向传播计算梯度,而是在获得输出以后,定义另一个用于计算梯度的计算图,这个计算图实际上不改变输出的数值,但定义了可用的梯度。与DEQ中使用两个隐式模型解方程计算输出和梯度不同,One-Step Gradient给出的“解耦合”策略是使用隐式模型计算输出,在获得输出以后,将隐式模型当做显式函数运行forward用于计算梯度——将隐式微分替换为显式函数,将会获得相当大的时间节约,同时相比于BPTT则还有进一步的空间节约。
在憨憨模型中,One-Step Gradient可以用pytorch描述为:
with torch.no_grad():
h_star = find(h = F(h, x))
with torch.enable_grad():
for _ in range(steps):
h_star = F(h_star, x)
return h_star
其中,在憨憨模型中find表示使用优化算法求解 ,在隐式模型中则对应解方程或不动点迭代,steps表示Neumann级数的项数,对于憨憨模型而言为1,对于隐式模型而言,可以使用更多的steps。
使用后文的图像分割的消融分析的设置,基于三种不同的矩阵分解模型及其优化算法,本文验证了One-Step Gradient的通用性,以及其相对于BPTT算法和隐式微分(两者等价,隐式微分因为数值求解引入了额外的误差)的优越性。
One-Step Gradient将BPTT 的空间时间复杂度和隐式微分 的时间复杂度, 降为了 的空间时间复杂度——既不用像BPTT一样存储额外的中间变量用于反向传播, 也免去了隐式微分解方程求解梯度的额外时间开销和复杂代码实现, One-Step Gradient以简单的形式获得了可观的性能提升。
注意,不使用憨憨模型的baseline性能约在75.5~76%之间,这意味着,如果使用BPTT进行优化,几乎无法获得性能增益。然而,这并非是由于不当的假设或者错误的建模,而是因为建立的数学模型和与之进行协作的神经网络未能得到良好的训练。换言之,在矩阵分解以外,应当有相当数量的模型因为直接进行反向传播的性质不良好的而在一定尝试后,被迫接受在深度学习中坐冷板凳的命运——至少在常言道的监督学习的设置下。
对此,笔者的感叹是:
The devil is in the gradient.
当我们在深度中谈论模型A优于模型B的时候,这并不意味着,模型A的建模在合理程度上一定优于模型B。一个容易被忽略的前提是,在某种优化策略下,模型A实现了相对于模型B的优势。目标函数、优化算法、梯度的形式(如果是一阶方法),甚至数据集本身都可以形成这种bias。如同NLP中,SGD下的Transformer并不是一个优秀的模型,也如同BPTT和隐式微分下的憨憨模型并不是一个优秀的模型——这并不妨碍我们找到合适的优化策略从而使用它们。
某种意义上,我们的思维容易被现有的优化器和端到端的框架所绑架——它们形成了一种具有选择压力的优化环境,结构设计实际上在适应优化环境的选择压力。在这里,憨憨模型所尝试的就是“松绑”。
四、实验
实验部分分为消融实验,性能实验,开销对比和探究实验四部分。我们在本篇展示前三部分的结果,以支持憨憨模型在建模全局信息上的优越性。实验选择视觉中注意力机制建模全局信息较为经典的语义分割和图像生成任务,将注意力机制常用的位置替换为憨憨模型进行试验,更多细节可见正式论文。
1. 消融实验
即使仅使用跳接添加矩阵分解,即上图的“only ham”,并使用One-Step Gradient进行反向传播,在不使用任何参数的情况下也足以在语义分割上获得可见的提升。同时,Upper Bread的参数化贡献了相当的性能,因此,在公开代码中提供的V2版本额外在矩阵分解(Ham)和Upper Bread之间增加了Cheese (1*1 Conv -> BN -> ReLU),从而获得更高的性能。对于Upper Bread的重要性,我们在下篇中有进一步的论证和分析。
2. 性能实验
憨憨模型选择在语义分割和图像生成中进行性能实验。语义分割作为视觉注意力机制的“练兵场”,涌现了相当多有代表性的探究注意力机制和建模全局信息的工作[9][10]。而图像生成也是早期视觉注意力机制在建模全局信息上率先获得突破的领域[11]。我们用 ∗ 标记了基于注意力机制和全局信息模块的模型,可见憨憨模型在PASCAL VOC 2012和PASCAL Context上建立了state-of-the-art的性能,同时在ImageNet尺度的大规模图像生成中展现出优势。
3. 和注意力机制比较
给定输入 ,下表展示了憨憨相对于计算机视觉中经典的attention module和context module的计算开销对比。
注意,即使将NMF的字典尺寸削减到 ,以消融实验设置训练的性能仍有77.8%(77.2%)+,相比常用设置的78.3%(77.8%)只有部分降低,而此时的矩阵分解带来的计算开销相对于憨憨模型几乎是可以忽略不计的(0.25G / 8.84G ~ 3%)。
五、对憨憨模型的进一步观察
在上篇中,我们给出了三个问题:
- “全局信息”是什么?
- “全局信息”如何改善了表示的质量?
- 什么是好的表示?
前文使用分解与低秩建模“全局信息”的讨论较为系统地回答了第一个问题,但是对于2和3的答案仍然是未知的。在这里,我们试图通过实验对第二个问题作出一定的猜测。
我们分别将憨憨模型的输入(Before)和输出(After)张量,展开为 的矩阵,并在整个数据集(PASCAL VOC 2012)上计算了其前rrr 大的奇异值的平方和占所有奇异值的比重,记为累积比例,画出两条平均曲线如下:
累计比率
同时可视化憨憨模型前后的通道(Channel)图像:
通道可视化
我们能观察到的是,Hamburger使得累计比率更高了(improves the concentration of Spectrum),使得一个相对均匀的谱(Spectrum)变得不平衡,将由大到小排列的奇异值的衰减速度加快,这意味着前r个维度集中了更高的信息量,抑制了不重要的细节信息。这是个非常有趣的现象,因为这某种程度上反映了数据集和任务的偏好。对于语义分割而言,最终输出本身就要求这种近似低秩的特点——将 个超像素分到 个小类中。这是感知(Perception)的特点,即将复杂的观察抽象为简单的概念,而概念本身在数量上往往是少于观察的像素数的。
这很自然地启发了三个问题:
第一,是否存在情况,需要我们降低累计比率(reduce the concentration of Spectrum),将一个快速衰减的谱的结构变得更为平均?
答案是肯定的,与high-level的感知(Perception)相反,需要细节的任务,如low-level vision,可能需要充分利用谱尾巴上的信息恢复这部分细节,这一论断在TESA[1]的实验中得到进一步支持。对于憨憨模型而言,这相当于在改进谱的聚集时学习一个“加法”映射,通过跳接强化“全局信息”;相反则学习一个“减法”映射,通过跳接抑制“全局信息”——这实际上也支持了skip connection和Upper Bread的重要性。
第二,“全局信息”如何改善了表示的质量?
注意,我们使用低秩性和分解来建模“全局信息”,并不代表好的表示一定是低秩的。因为如果没有skip connection,那么一次应用矩阵分解就足以实现低秩,但低秩的多次堆叠并不会产生更多的效果,相反容易产生Rank Collapse,这对应于去除跳接后单纯堆叠自注意力的分析[2]。当退化为秩1的情况时,有效的信息会严重丢失,这与图神经网络中的过度平滑(over-smoothing)是类似的,平滑本身也是扩散(Diffusion)的特性。
那么,“全局信息”如何改善了表示的质量呢?
笔者的猜测是,“全局信息”通过rescale spectrum改善了表示的质量。
如果对于每个输入都存在某个最优的谱结构,网络通过多次变换实现特征空间的旋转以及谱的缩放,从而达到这一结构,那么所谓的“全局信息”模块,可能正是能够强力调整谱结构的操作。(一个问题是,如何从数学上定义“强力”?)
- 那么,能够实现强力rescale spectrum的操作都可以用来设计类比于attention的“全局信息”模块吗,包括但不限于...?(在处理好gradient的前提下,答案基本是肯定的)
- 如果在特定任务下给定有限的budget,是否存在最优的调整操作,将输入的谱的分布转化为目标谱的分布,从而对应于网络结构的设计?(总让人想起optimal transport)
- 如果在Transformer中,我们将注意力块理解为憨憨模型,那么skip connection和有相当宽隐层的FFN是否可以理解为一种“拮抗”的作用,从而保持谱以相对缓和的方式向目标结构演化?
笔者的一种直觉是,借助低秩假设(low-rankness)和分解(decomposition)实现“全局信息”建模的憨憨模型,更像是一剂猛药——它能够相当强力地干预谱的结构。对于需要对谱的结构进行较大变动的任务和数据集,以憨憨模型取得极大性能优势的PASCAL VOC 2012 Semantic Segmentation为例,数据集中的图片内容复杂,经常需要把大量的像素划分为同一类,且图片中的类别相对较少(单张图像素的类别数一般小于5),这时候一剂猛药再合适不过。
但是目前版本的憨憨模型,在Rescale Spectrum上并非非常精确,考虑到我们使用了20年前手工设计的矩阵分解模型,且受到矩阵分解本身及其优化算法的超参数的影响,同时skip connection和Upper Bread并非是复杂的融合策略。对于需要精细调整谱的需求,一种直觉是所谓提取“局部信息”的操作,目前憨憨模型的大刀阔斧可能并不是最优的选项——注意,这并不意味着不能通过恰当的设计实现它,关键在于对症下药,只有充分理解目的,才能寻找合适的手段。
(很惭愧在没有理论和实验支持的情况下谈论如此多“猜测”和“直觉”。本着科学的态度,这些分析可能并不正确,欢迎读者的批判和指正。去芜存菁是科学的使命,笔者致力于将这些猜测中合理的部分,通过理论和实验变为科学。)
第三,使用憨憨模型建模“全局信息”,到底是低秩性真正有效,还是分解真正有效?
这个问题相当tricky, 因为如果我们的最终目的是Rescale Spectrum来实现"全局信息"改善表示质量, 比如提升谱的聚集, 那么我们的手段可以是保留分解中低秩的部分 并且学习一个"加法"映射作为融合, 也可以选择保留分解中一般认为是噪声矩阵的部分 并且学习一个"减法"映射后者被笔者好友的工作 支持。
类比于憨憨模型, 这意味着使用 作为Upper Bread的输入( 为憨憨模型的输入)。注意, 这并不意味着直接使用 , 因为如果以Frobenius范数来计算重构误差, 在 增大的时候重构误差会以一种相当均匀的方式变小, 即 的scale会非常小, 这不利于后续Upper Bread 的处理。基于PCT的pipeline, 采用这种形式的攸悠模型足以在点云分类的ModelNet40上取得 93.3%+的state-of-the-art的性能。可见, 当我们对于目的有了更充分理解以后, 选择手段就有了更多灵活性。
从这个视角来看, 真正有效的是分解。通过对生成过程进行更为细致的假设, 我们可以通过分解来实现结构化信息的刻画, 不管是“全局信息", 亦或是“局部信息”。而能够实现分解, 是因为我们对于生成过程进行了假设, 比如我们假设分解结果 为低秩的, 并对噪声类型 进行建模。因此, 即使并末使用低秩的 而是 , 也并不能否定低秩性的建模是不正确的一我们能这样做是因为我们部分理解了建模"全局信息"的目的。
另一个例子则是经典矩阵分解模型 的应用, 我们将矩阵 分解为低秩 和稀疏 两个部分。稀疏部分 一般可以被认为是不规律的野点噪声, 但在用于前景背景分离的情况下, 也可以认为是有实际物理含义的特征。考虑背景为规律排布的窗户, 前景为不规律的树叶遮挡, 此时分解的结果 即为窗户, 而 是作为前景的树叶, 并非是完全无规律的噪声。因此, 在合理假设下的分解为深度网络提供了强有力的先验, 而如何使用将是一个见仁见智的话题。
六、结论
表示学习无法绕开的问题是:什么是好的表示。这是一个相当系统和复杂的问题。本文以憨憨模型为例,从多个视角理解如何建模“全局信息”,“全局信息”如何改善了表示的质量。本文提出的One-Step Gradient改善了优化驱动的憨憨模型的训练,并且提示了其作为隐式模型的训练策略。
围观近日视觉领域的MLP打架,笔者不禁想到18年的BagNet[5],对于当下的“套娃”比赛还是感慨良多:
当我们能够看到问题的全貌的时候,尤其当我们有理论可以对有效策略进行抽象概括的时候,也许就不会出现“套娃”了。因为完全有可能模型A和模型B都满足理论抽象的要求,因此存在可行的解使得他们获得可比的性能——差异可能只是是否易于优化,或者说如何设计可行的优化策略找到这样的解,以及实践中模型的计算开销。
诚然,本文距离彻底从理论角度理解如何建模“全局信息”,“全局信息”如何改善了表示的质量等问题还很遥远。但是,憨憨模型已经向着理论上理解这个问题迈出了第一步:本文对于刻画“全局信息”建立了成功的数学抽象——它表现为能够预言有效的模型族,并且满足这种抽象的数学模型都可以work,也就是不同的低秩先验/矩阵分解模型都在建模“全局信息”中展现出有效性。这是合格的理论框架应当具备的特点,即能够指导实践,并预言实践中尚未发现的宝藏。
同时,对于“全局信息”如何改善了表示质量的探索,则跳出低秩假设和单纯建模“全局信息”的视角,从更一般的角度反思我们应该构建何种框架来描述这个问题——建模“全局信息”只是一种手段,最终的目的是使用“全局信息”改善表示的质量。因此,也许我们并不需要显式的获得“全局信息”,也可以基于它改善神经网络学习的表示?服务于这个目的,如Rescale Spectrum,则我们可以更为灵活的选取手段。笔者相信,这些讨论对于建立更一般的理论框架和更有效的实践模型应当是有启发的,需要做的是针对讨论中涌现的直觉建立精确且严密的数学刻画。
而憨憨模型的优化探索及One-Step Gradient则是在沙滩上拾取的珍珠——偶然且宝贵。它建立了憨憨模型与隐式模型的联系,并且成功作为隐式模型的一种快速且有效的训练策略。笔者的一项工作正致力于深入挖掘这背后有趣的故事。
总的来说,憨憨模型自18年底有初步想法,19年底完工,到21年初被ICLR接受,走过了一段漫长且崎岖的路——这里面的想法有比较多的层次和相对细密的逻辑,不易被写作呈现清楚。因此,在最终收到ICLR reviewer ''interesting, novel and impactful''的评价时,那种简单的快乐确实是发自内心的,感到为此花费的时间和努力是值得的。一个衷心的希望是,在很多年后回看憨憨模型的时候,可以评价它是在恰当的时间做了有趣的探索,能够为建立理论框架铺路。
诚挚感谢阅读至最后的读者。
Enjoy Hamburger, please!
...
#RPCANet++
让分割网络像数学模型一样可解释,告别“黑箱”!
深度学习模型虽性能强大,但其“黑箱”特性一直备受诟病——往往只知其然,不知其所以然。如果一个模型既有深度学习的强大性能,又有传统算法的清晰可解释性,会是怎样一种体验?
本篇介绍的论文是《RPCANet++: Deep Interpretable Robust PCA for Sparse Object Segmentation》。该研究由电子科技大学、南开大学、清华大学的学者共同完成,提出一种名为 RPCANet++ 的新型稀疏目标分割框架。
该框架巧妙地将经典的数学模型——鲁棒主成分分析(Robust Principal Component Analysis, RPCA)与高效的深度网络架构相融合。它不仅在多个数据集上实现了 SOTA(state-of-the-art) 的分割性能,更重要的是,它的每一步操作都具有清晰的物理解释,可以直观地看到模型是如何将背景与目标逐步分离的。
- 论文标题:RPCANet++: Deep Interpretable Robust PCA for Sparse Object Segmentation
- 作者:Fengyi Wu, Yimian Dai, Tianfang Zhang, Yixuan Ding, Jian Yang, Ming-Ming Cheng, Zhenming Peng
- 机构:电子科技大学、南开大学、清华大学
- 论文地址:https://arxiv.org/pdf/2508.04190v1
- 项目地址:https://fengyiwu98.github.io/rpcanetx
研究背景:从经典RPCA到深度网络
鲁棒主成分分析(RPCA) 是一种经典的矩阵分解技术。它的核心思想是,任何一个矩阵(例如一张图片)都可以被分解为两个部分:一个 低秩(low-rank) 的背景矩阵和一个 稀疏(sparse) 的目标矩阵。
- 低秩背景:可以理解为图像中简单、重复、可预测的部分,比如大面积的天空、水面或墙壁。
- 稀疏目标:则是图像中占比小、突兀的元素,比如天空中的一个小飞机、水面的一艘小船。
正是基于这一原理,RPCA被广泛应用于背景建模、目标检测等任务。然而,传统的RPCA方法存在三大瓶颈:
- 计算量大:涉及复杂的矩阵运算,处理速度慢。
- 依赖调参:需要人工精细调整超参数,费时费力。
- 先验僵化:其内置的数学假设(先验)是固定的,难以适应复杂多变的真实场景。
为了克服这些局限,研究者们想到了一个绝妙的思路:深度展开(Deep Unfolding)。他们将RPCA的迭代求解过程“展开”成一个深度神经网络的架构,让网络的每一层对应算法的每一步。这样既保留了原算法的逻辑和可解释性,又利用了深度学习端到端的训练能力和高效计算的优势。
RPCANet++:一个可解释的深度分割框架
RPCANet++ 的核心是将一个松弛的RPCA模型展开为一个结构化的深度网络。如下图所示,整个框架的设计思路清晰明了:

整个网络由K个阶段(Stage)串联而成,每个阶段都模拟了一次RPCA的迭代过程,并包含三个核心模块:

- 背景近似模块 (Background Approximation Module, BAM) :负责从输入中估计出低秩的背景部分。
- 目标提取模块 (Object Extraction Module, OEM) :从背景中分离出稀疏的目标。
- 图像恢复模块 (Image Restoration Module, IRM) :将背景和目标重新组合,恢复出清晰的图像。
相较于其前身RPCANet,RPCANet++引入了两大创新:
- 记忆增强模块 (Memory-Augmented Module, MAM) :在BAM模块中,不同阶段之间传递背景特征时会存在信息损失。MAM像一个“记忆芯片”,通过自适应地选择并融合前面所有阶段的背景特征,有效增强了背景信息在网络中的流动和保持,防止关键信息丢失。

- 深度对比先验模块 (Deep Contrast Prior Module, DCPM) :在OEM模块中,为了让网络更快地“看见”目标,DCPM被引入。它利用显著性线索(即局部对比度),帮助网络聚焦于那些与周围环境差异明显的目标区域,从而加速并优化目标的提取过程。

实验结果:性能与可解释性的双重胜利
RPCANet++最吸引人的地方在于其出色的可解释性。
过程可视化:眼见为实
研究者将网络在不同阶段(Stage)生成的背景(B)和目标(O)特征图进行了可视化。从下图中可以清晰地看到,随着阶段的深入,背景被逐渐提纯,而稀疏的目标则被越来越精确地分离出来。这个过程与RPCA算法的迭代求解过程高度一致,让模型的决策过程一目了然。

理论验证:有理有据
为了进一步从数学上验证模型的可解释性,研究者对网络中间层的特征进行了低秩性和稀疏性的数值度量。
- 低秩验证:结果显示,随着网络层数的加深,BAM模块输出的背景特征的奇异值衰减得越来越快,表现出越来越强的低秩特性,这完全符合RPCA的理论预期。
- 稀疏验证:同样,OEM模块输出的目标特征也表现出越来越高的稀疏性。
这些实验有力地证明了RPCANet++并非一个简单的“黑箱”,而是真正在学习并执行着RPCA的数学原理。

上图为低秩性验证,RPCANet++(a图)估计的背景特征(不同颜色的线代表不同阶段)的奇异值曲线比原始图像(黑线)下降更快,证明其低秩性。

上图为稀疏性验证,RPCANet++提取的目标特征(左侧数值及右侧热图)的稀疏度随着阶段增加而提升。
性能对比
除了完美的可解释性,RPCANet++的性能也达到了SOTA水平。在红外小目标检测(IRSTD)、血管分割(VS)、缺陷检测(DD)等多种稀疏目标分割任务的大量实验中,RPCANet++的各项指标(如IoU、F1分数)均超越了现有的主流方法。消融实验也充分证明了MAM和DCPM两个核心模块对性能提升的关键作用。



视觉比较

Infrared Small Target Detection (IRSTD) task

Vessel Segmentation (VS) task

Defect Detection (DD) task
论文贡献与价值
- 提出RPCANet++框架:一个深度可解释的稀疏目标分割新框架,成功地将RPCA的理论优势与深度网络的效率和性能相结合。
- 推动可解释AI:为设计“白盒”深度学习模型提供了一个极具价值的范例,展示了“算法展开”这一技术路线的巨大潜力。
- 核心模块创新:提出的MAM和DCPM模块有效解决了深度展开过程中的信息损失和收敛慢等问题,具有很好的通用性。
- 树立新基准:在多个任务上取得了SOTA性能,为可靠、可解释的稀疏目标分割设定了新的基准线。
- 代码开源:研究团队开源了项目代码,极大地便利了社区的后续研究和应用。
总而言之,RPCANet++的工作不仅是技术上的一次突破,更是AI研究理念上的一次回归。它告诉我们,追求性能的同时,不必牺牲可解释性。模型不仅可以很“能干”,也可以很“坦诚”。
.....
#统一SFT与强化学习的新视角
RL推理的尽头,是熵坍缩
本文以“熵缩”视角拆解推理 LLM 的能力天花板:论证 RL 只是放大预训练分布而非创造新推理,提出熵坍缩-探索困境的量化分析与 token 级干预方法,为突破当前 RLVR 极限指明方向。
在 LLM 的预训练及微调阶段,scaling law 告诉了我们所能达到效果范围,其中蕴含了深刻的信息论原理,感兴趣的可以回看笔者之前的文章
https://zhuanlan.zhihu.com/p/687278237
在此原理的支配下,开发者则可以将精力主要关注于三个方面:清洗数据、增大模型、提高效率。那么对于主要基于 RL 的推理模型而言,是否也存在这样一个指导原则呢?本篇将以推理模型的能力边界为主题,主要围绕以下问题展开:
- 基于 RL 的推理模型的表现与基座模型的关系
- RL 中的“熵坍缩”问题:原因、实质及解决方法
- 推理模型是否存在“能力边界”,以及如何拓展“能力边界”
一、RL 效果与基座模型的关系
随着 RL 热度的提高,近期众多工作研究了基座模型与 RL 训练效果的关系,相当多的工作提出共同的观点:模型的能力由预训练决定,RL 仅仅只是其中某些行为的“放大器”。那么,如果去认识和理解这一现象呢?如果该观点成立,其更深层次的原理是什么呢?
2.1 观察:基座模型决定论
关于基座模型与 RL 的关系首先来自基于实验的观察,为了理解这一过程,我们不妨在此列举部分工作的实验结果及其核心观点。
- DeepSeek R1
DeepSeek R1 是比较早讨论到基座模型与 RL 的关系的文章,其中认为基座模型与 RL 对模型的边界能力同等重要,即“要超越智能的边界,可能仍需要更强大的基础模型和更大规模的强化学习”。

当然以上观点还是基于少量实验数据提出的,但仍然可看作类似观点之滥觞。
- Echo Chamber
该研究者从头开始训练不同规模(150M和1B参数)的解码器语言模型,并使用完全开放的数据集混合进行预训练。使用PPO(Proximal Policy Optimization)、GRPO(Group Relative Policy Optimization)和Expert Iteration等RL算法对预训练模型进行微调。
通过大量实验,观察到如下表现:
- RL微调的收敛性:RL微调使模型输出迅速收敛到预训练数据中的一种特定分布格式,抑制其他分布。例如,模型可能迅速偏好TinyGSM风格的输出,即使这种格式在初始化时并非最常见。
- 性能提升:RL微调显著提高了模型在GSM8K测试集上的pass@1准确率,但降低了pass@64准确率,表明生成多样性减少。
- 规模依赖性:不同规模的模型在相同数据混合上训练后,会收敛到不同的输出分布。较小的模型倾向于输出更简单、类似代码的格式,而较大的模型倾向于自然语言输出。
- 正向迁移:在GSM8K上进行RL微调后,模型在未见过的评估数据集(如MATH-500和AIME)上也表现出性能提升,表明某些推理能力可以在任务间泛化。

由此可以得到以下RL 与基座模型关系的结论:
- RL微调的放大效应:RL微调不仅放大了预训练数据中的特定模式,还可能抑制其他模式,这取决于预训练数据的组成、RL算法的选择、超参数设置和模型规模。
- 模型规模的影响:模型规模对RL微调的效果有显著影响。较大模型在自然语言输出上表现更好,而较小模型可能更依赖代码风格的输出。
- 正向迁移的证据:RL微调不仅改善了模型在特定任务上的表现,还提升了模型在更广泛数学任务上的推理能力。

- Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model?
为了评估模型的推理能力边界,作者提出了pass@k指标。该指标通过多次采样(k次)模型的输出,判断问题是否被解决(即至少有一个输出是正确的)。这种方法可以更准确地评估模型在大量尝试下的推理能力。在多个数学、编程和视觉推理基准测试上进行了广泛的实验,涵盖了多种LLM家族、模型大小和RL算法。实验使用了Qwen-2.5、LLaMA-3.1等模型,并采用了GRPO、PPO等多种RL算法。
实验发现,在数学、代码、视觉问题上,RLVR训练的模型在小k值(如k=1)时表现优于基础模型,但在大k值时,基础模型的pass@k分数与RL模型相当甚至更高。这表明基础模型在大量采样下能够解决RL模型解决的问题,且RL训练并未引入新的推理模式。
由此得到结论:RLVR在当前形式下不足以激励LLMs超越基础模型的推理能力。尽管RLVR可以提高模型在小k值时的性能,但它限制了模型的探索能力,导致在大k值时的覆盖范围缩小。即 RLVR 可能不足以推动LLMs的推理能力边界。未来可能需要新的训练范式来实现这一目标。

此外,该文章中还有更多信息值得关注,包括:
- 推理路径分析:观察困惑度(perplexity)可以发现与 RL 相关的 PPL 显著更低,即RLVR训练的模型生成的推理路径已经包含在基础模型的输出分布中。这表明RLVR训练并没有引入新的推理能力,而是通过偏向高奖励的路径来提高采样效率。
- 不同RL算法的效果:尽管不同的RL算法在性能上存在微小差异,但它们在提高采样效率方面并无本质区别。作者提出了采样效率差距( )来量化RL算法的效率,发现现有方法与最优效率之间仍有较大差距。

当然,还有很多论文也讨论了该问题,笔者在此不再一一介绍,仅列举出来供读者参考:
- Cognitive Behaviors that Enable Self-Improving Reasoners, or, Four Habits of Highly Effective STaRs(https://arxiv.org/abs/2503.01307)
- Rethinking Reflection in Pre-Training(https://arxiv.org/abs/2504.04022)
- Reinforcement Learning with Verifiable Rewards Implicitly Incentivizes Correct Reasoning in Base LLMs(https://arxiv.org/abs/2506.14245)
2.2 实质:“熵坍缩”与模型专业化
“熵坍缩”:即在 RL 训练中策略熵在早期训练阶段急剧下降,导致策略模型过于自信,进而导致探索能力的减弱与策略性能的饱和。实际上,上一小节的 PPL 已经提现了这一点(PPL 与熵的计算仅仅差一个 exp),其表现如下图左所示,模型在特定领域的表现提升与其熵缩是同时发生的,甚至二者之间都可以通过公式近似拟合出来。

The Entropy Mechanism of Reinforcement Learning for Reasoning Language Models
如果对 Token 熵进行模式分析,可以发现,在 CoT 推理中,大多数 token 的熵很低,而少数 token 的熵很高。这些高熵的 token 通常作为推理路径中的“分叉点”(forks),引导模型走向不同的推理路径。例如,高熵 token 常见于逻辑连接词(如“Thus”、“perhaps”等),而低熵 token 则多为单词后缀或数学表达式的组成部分。
在 CoT 推理中,高熵的少数 token 起到了关键作用,它们作为“分叉点”引导模型走向不同的推理路径。RLVR 训练主要保留了基础模型的熵模式,并且主要调整了高熵 token 的熵。通过仅对高熵 token 进行策略梯度更新,可以显著提高模型的推理性能,且这种方法在更大模型上效果更明显。

Beyond the 80/20 Rule: High-Entropy Minority TokensDrive Effective Reinforcement Learning for LLM Reasoning
另外也有工作研究了正负样本对 RL 的训练结果的影响,实验发现,仅使用负样本进行训练(NSR)在Pass@k的整个范围内都能显著提升模型性能,甚至在某些情况下超过了PPO和GRPO等常用强化学习算法。与NSR相反,仅使用正样本进行训练(PSR)虽然能提高Pass@1,但在较大的k值下性能下降,导致输出多样性降低。通过跟踪模型的熵,发现NSR在整个训练过程中保持了较高的熵,而PSR则迅速降低了熵。这表明NSR在训练过程中保持了模型的输出多样性。
通过分析可知,PSR通过增加正确响应的logit值,同时降低其他所有token的logit值,导致输出分布变得过于集中,减少了多样性。NSR通过降低错误响应的logit值,并将概率质量重新分配给其他候选token,这种重新分配是基于模型先验的,有助于保持多样性。NSR通过抑制错误响应和根据模型先验重新分配概率质量,有效地细化了模型的现有知识,而不是引入全新的行为。

The Surprising Effectiveness of Negative Reinforcement in LLM Reasoning
通过以上一系列实验,至少可以发现以下共同的现象:
- 随着训练的进行,“熵坍缩”现象是普遍存在的,无法避免的;
- 不同 token 的熵表现不同,对结果的影响也不同;
- 通过对不同 token 的熵的干预,可以一定程度影响结果
以上过程是如何发生的?其底层的原理是什么?其与模型专业化训练过程的关系是什么?以下将试图进行更加深入的探讨。
二、熵缩:从 SFT 到 RL
上文讨论的“熵坍缩”现象都是发生在 RL 训练过程中的,目前尚未看到 SFT 中有类似提法,那么本节就由表及里,从 SFT 到 RL,探究“熵坍缩”的发生过程。
2.1 信息熵、策略熵与交叉熵损失
首先在笔者之前的文章中已经讨论过,对于一个确定的语言或者数据集,其信息熵是确定的,即在自然语言领域,令 ,熵可以表示为:

其中
当序列长度无限大的情况下,香农将其定义为该语言的熵,即:
根据这个定义,熵是使用无限数量的符号来计算的。在实践中,只能从有限的文本样本中近似经验熵来近似任何语言的熵。
在 LLM 中,我们可以根据定义来计算参数化模型输出的 token 熵,即索引 处的熵

其中, 表示由 参数化的LLM, 是输入查询, 表示先前生成的token。 是词表大小, 表示在时间步 的 pre-softmax logits, 是词汇表上相应的概率分布, 是解码温度。
在此基础上,我们可以进一步得到策略熵(即模型熵),策略模型在训练数据 上的平均 token 熵,即

其中输入提示 ,策略熵量化了策略对当前提示的不确定性水平。
细心的读者看到以上公式也许会联想到 SFT 中的交叉熵损失,即:

其中的关键区别在于移除了期望 ,并替换为真实的样本序列 。这体现了监督学习的本质:使用真实标签计算损失。
通过以上分析我们可知,SFT 中也存在“熵坍缩”现象,而且其“熵坍缩”现象的本质就是模型训练的过程(loss 下降),这也是模型在特定数据集上的专业化过程。
而与 SFT 不同的是,RL 存在探索的过程,其中会产生多个正负样本,因此其策略熵即是在多条样本期望上,其“熵坍缩”的过程也即逐步收敛到正样本上的过程。下面我们将尝试进一步论证以上推断。
2.2 RL 的熵缩机制
在论文The Entropy Mechanism of Reinforcement Learning for Reasoning Language Models中比较严谨地证明了 RL “熵坍缩”的发生过程,在此仅展示其中核心观点。
Softmax 策略的熵差。假设策略 是一个表格形式的 softmax 策略,其中每个状态-动作对 都与一个独立的 logit 参数 相关联,在一级近似下,两个连续步骤中给定状态 的策略熵之差满足

这个引理表明,策略熵的变化约等于动作的对数概率与 logits 变化之间的负协方差。也就是说,当一个动作 在更新前从策略中获得了高概率,并且其对应的 logits 在更新后也在增加,那么它将降低策略熵。
策略梯度中策略 logits 的差异。上式中 是步骤 k 和步骤 之间输出 logits 的变化,可以证明,通过梯度回溯以学习率 进行更新,则连续两步之间的差异满足

结合以上公式,直观上可以看到,一个动作 同时获得高/低概率和高/低优势会降低熵,反之亦然。在早期阶段,策略在训练数据上表现出高协方差,暗示策略的置信度得到了良好校准,因此可以安全地利用高置信度的轨迹,增强信念并最小化熵,此阶段可理解为 SFT 的增强阶段,也即熵缩的主要过程。
2.3 RL 与 SFT 的联结
在传统认知中,RL 与 SFT 的区别主要体现在两个方面:
- 负样本的利用
- 样本的多样性
那么如果在 SFT 中增加负样本,同时可以无限增加样本的情况下,是否 SFT 就可以等价于 RL 呢?答案是肯定的。接下来我们看一下 Bridging Supervised Learning and Reinforcement Learning in Math Reasoning中的论证过程。
利用负样本。首先定义负策略

而最终的策略可以看作正负策略的叠加,即

其中 表示 LLM 在问题上的正确率。
根据以上关系,可以构建一个隐式负策略


考虑用于训练隐式负策略 的最大似然目标:

假设数据无限且模型容量无限,上式的最优解是

为了进一步利用正样本,可以对上式进行进一步修正,即

接下来论证 GRPO 和 NFT 在 on-policy 训练中是等价的。假设对于一个给定的问题,有 个正面答案和 个反面答案,仅考虑二元奖励,则 GRPO 的梯度

其中 分别是答案的归一化优势。
同样可以得到 NFT 的梯度,即


则可以推知GRPO 和 NFT 损失梯度在策略梯度训练中是等价的,即

总结一下以上讨论,RL 与 SFT 没有本质上的区别,其熵缩的过程即是模型训练的优化过程,也是模型专业化的过程,改过程是必须的、不可避免的,对于熵的过分放开可能反而会使模型训练的崩溃。
三、“熵坍缩”的处理方法及其本质3.1 探索-利用困境
事实上,关于熵的讨论即是在讨论 RL 的核心问题 —— 探索-利用困境(exploitation-exploration dilemma):
- 如果任由熵缩而不加干预,则模型会快速收敛到某种模式,即利用过多,会导致模型能力比较局限;
- 如果对熵干预过多,即使熵保持在一个高水平,即探索过多,可能会导致无法收敛,甚至训练崩溃
下面通过几个案例来说明以上情况:
控制策略熵的常用方法之一是应用熵损失,下图展示了添加熵损失的结果,熵损失对系数非常敏感,小系数对熵的影响较小(0.0001,0.001),而大系数会导致熵爆炸(0.01)。尽管将系数设置为0.005成功地稳定了策略熵,但它并不优于其他方法。

也可以通过调整策略模型和参考模型之间的 KL 惩罚来控制熵。尽管 KL 实现了稳定的熵值,但它未能改进策略,反而导致性能下降,因此当前很多工作就不再使用 KL 约束。

3.2 干预方法讨论
在前文中,我们讨论了“熵坍缩”的发生过程及其影响,那么在具体训练过程中,熵与哪些因素相关呢?该如何干预和影响熵呢?熵的改变对下游任务有多大影响呢?本节将以一些典型工作为例,讨论以上相关的内容。
3.2.1 Clip-Higher
DAPO 是较早讨论“熵坍缩”现象并进行干预的工作,其干预的方法也非常简单,即 Clip-Higher。Clip-Higher 通过解耦clip的上下限范围,增大clip上限,以允许更自由地增加低概率 token 的概率,从而鼓励探索。.此外,上限阈值仅影响具有正优势的 token。

3.2.2 Clip-Cov 与 KL-Cov
论文 The Entropy Mechanism of Reinforcement Learning for Reasoning Language Models 中根据其提出的协方差理论,相应提出了基于此的 clip 方案。
策略熵动态与动作概率和优势之间的协方差密切相关。而在大部分模型中,一小部分 token 表现出极高的协方差,远超平均值(如下表)。也就是说,这些异常 token 在触发熵崩溃中起主导作用。为了减轻它们的不利影响,需要对其对策略损失的贡献施加约束。
|
Group |
Top 0.02% |
Top 0.2% |
Top 2% |
Top 20% |
Top 50% |
All |
|
Mean value |
5.654 |
3.112 |
1.385 |
0.351 |
0.152 |
0.003 |
假设有一批 N 个response, \pi_\theta(y_i) 表示策略模型在给定其对应 prompt 的情况下,对 token y_i 的输出概率。根据定理 2,我们首先定义 log 概率和优势之间的 token 级别中心交叉乘积为协方差,即

在 Clip-Cov 策略中,从策略梯度更新中剪切一小部分高协方差 token,具体根据协方差值随机选择r⋅N个高协方差 token,即

其中 是索引的简称, 表示裁剪比例。 是协方差的两个预定义边界,分别。它们都设置得远高于平均协方差(>500×)。最后,具有选定索引的 token 将被从策略梯度中分离,策略梯度为

其中 是一个 response 中的第 个 token,每个 唯一对应 N 中的索引 。
KL-Cov 策略更简单,区别在协方差的 top-k比例内进行排序和选择 token,即

这里的 表示将受到 KL 惩罚的 token 的比例并且 。最后对选定的 token 施加 KL 惩罚(当前策略与 rollout 策略之间的 KL 散度),策略损失计算如下:

实验显示,这两种方法能够在整个训练过程中保持相当高的熵水平。同时,策略模型的响应长度稳步增加,其在测试集上的表现始终优于基线。即模型在训练过程中能够更“自由”地探索,通过强化学习学习更好的策略。同时也比 clip-higher 方法更加稳定。

3.2.3 On-policy training
关于 On-policy training 的典型工作是 On-Policy RL with Optimal Reward Baseline,其放弃了 rollout 带来的样本效率,而采用完全的 on-policy 方式,同时其采用了优化的baseline,我们不妨来看一下其过程
在基于策略梯度的方法中,baseline 常被用以降低梯度估计的方差,即

其方差可以表示为

由于第二项(预期梯度的平方)与b无关,最小化Var[g]等同于最小化第一项。通过对b求导并设其为零,我们可以推导出最优基线 :

求解可得

由于该式计算复杂,故假设:不同 token 的梯度近似正交,并且每个 token 的梯度范数遵循相同的分布。在此条件下,轨迹策略梯度的平方幅度与其长度成正比,即 ,则有

核心代码实现如下:
score_tensor = torch.tensor(id2score[idx])
len_tensor = torch.tensor(id2len[idx])
id2bsl[idx] = (len_tensor * score_tensor).sum() / len_tensor.sum()
for i in range(bsz):
scores[i] = scores[i] - id2bsl[index[i]]
比较 on-policy 与 off-policy 的结果可以看到,虽然off-policy 策略训练在早期阶段实现了与精确on-policy策略训练相似甚至略高的训练奖励,但在数学推理任务上表现较差。这表明off-policy 学习可能存在潜在的过拟合问题。此外,on-policy 策略训练在整个训练过程中表现出显著更低的 KL 散度和高得多的熵,即使没有任何显式的 KL 或熵正则化,而 off-policy 策略训练包括一个额外的熵奖励。更低的 KL 散度意味着更低的对齐成本,更高的熵则表明更强的探索能力。

3.2.4 Token intervention
事实上 Clip-Cov 与 KL-Cov 就已经是 token-level 的干预了,只是由于其底层原理比较独立,因此单独讨论。本小节以 https://arxiv.org/pdf/2506.01939为例进行分析。
其同样发现,通过检查思维链 (CoT) 推理中的 token 熵模式,观察到只有一小部分 token 表现出高熵,并且这些 token 充当关键的 forks,引导模型走向不同的推理路径。具有最高 entropy 的 token 通常用于桥接两个连续推理部分之间的逻辑连接,而具有最低 entropy 的 token 倾向于完成句子的当前部分或完成一个单词的构建。

RLVR 主要改变高熵 token 的熵,而低熵 token 的熵保持相对稳定,变化极小。即低熵tokens对推理性能的贡献极小,高熵tokens的有效性可能在于它们增强探索的能力。

高熵少数 tokens(即 forking tokens)可能在解释为什么 RL 泛化而 SFT 记忆方面发挥关键作用。RL,特别是基于结果的奖励,对未见过的、基于规则的任务表现出很强的泛化能力,而监督微调 (SFT) 容易记忆训练数据,并且难以在训练分布之外进行泛化。另外如下图,高熵token的优势也只有在步数足够时才能显现出来,这可能高熵token 占比较小,由其对结果的正向影响也是吉光片羽,需要大量的训练才能激发。

3.2.5 塑形优势值
该方法的典型案例见 [2506.14758] Reasoning with Exploration: An Entropy Perspective。其核心点在于构造一个基于熵的优势项 ,并用其来修正优势值,即

其中 a 是缩放系数, k 控制裁剪阈值。关键在于,基于熵的项 在反向传播过程中与计算图分离,作为原始优势的一个固定偏移量。这调整了更新的大小,而不会改变梯度流。这种方法方法仅使用一行代码即可无缝集成到现有的 RL 训练流程中,如下:

这种方法与熵正则化看起来比较接近,但也有所不同,具体如下:

总结一下,本文从 RLVR 训练过程中的熵缩现象出发,深入讨论了其发生原因及干预手段,从此也可以看出 RLVR 当前已进入深水区,需要非常细节的研究和实践才能有所提升。这个过程,既是理解 RL 和 LLM 的过程,也是拓展其能力边界的过程。
参考资料
[1] Does Reinforcement Learning Really Incentivize Reasoning Capacity in LLMs Beyond the Base Model?
[2] Rethinking Reflection in Pre-Training
[3] Echo Chamber: RL Post-training Amplifies Behaviors Learned in Pretraining
[4] DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning
[5] https://arxiv.org/abs/2503.01307
[6] Rethinking Reflection in Pre-Training
[7] Beyond the 80/20 Rule: High-Entropy Minority Tokens Drive Effective Reinforcement Learning for LLM Reasoning
[8] The Surprising Effectiveness of Negative Reinforcement in LLM Reasoning
[9] The Entropy Mechanism of Reinforcement Learning for Reasoning Language Models
[10] Unearthing Gems from Stones: Policy Optimization with Negative Sample Augmentation for LLM Reasoning
[11] On-Policy RL with Optimal Reward BaselineOn-Policy RL with Optimal Reward Baseline
[12] SEED-GRPO: Semantic Entropy Enhanced GRPO for Uncertainty-Aware Policy Optimization
[13] Entropy在RL中扮演的角色 - 知乎
[14] [2506.14758] Reasoning with Exploration: An Entropy Perspective
.....
#DC-AE 1.5
ImageNet上实现 4 倍训练吞吐率!结构化 Latent 空间加速扩散模型收敛
本文提出了 DC-AE 1.5 框架,通过引入结构化隐空间和增强扩散训练两大关键技术,在保持高生成质量的同时,大幅加快扩散模型收敛速度,并显著提升高分辨率生成效率。实验表明,该方法在 ImageNet 等数据集上实现了更快训练吞吐率与更优图像质量的双重突破。
Deep Compression Autoencoder 需要很多 latent channel 维持重建能力,但会损害生成。DC-AE 1.5 应对这问题。
DC-AE 1.5 是用于高分辨率扩散模型的 Deep Compression Autoencoder。对于 Autoencoder 来说,增加其 channel 数对于提升重建质量很有效。但是,带来的消极影响是使得扩散模型收敛更慢,导致生成质量变差 (尽管重建质量变好)。这个问题就限制了 Latent 扩散模型的上界,也不利于高空间压缩比 Autoencoder 的使用。
本文提了两个技术来应对这个挑战:
- 结构化 Latent Space: 在 Latent 特征强加一种结构,让更前面的 latent channel 捕捉目标结构,更后面的 latent channel 捕捉图像细节。
- 一种增强的扩散模型训练技术: 对 object latent channel 使用额外的扩散训练目标,来加速收敛。
有了这些技术,DC-AE 1.5 比 DC-AE 提供了更快的收敛和更好的扩散缩放结果。在 ImageNet 512×512 上,DC-AE-1.5-f64c128 比 DC-AE-f32c32 提供了更好的图像生成质量,同时速度提高了 4 倍。
1 DC-AE 1.5:结构化 Latent 空间加速扩散模型收敛
论文名称:DC-AE 1.5: Accelerating Diffusion Model Convergence with Structured Latent Space (ICCV 2025)
论文地址:https://arxiv.org/pdf/2508.00413
项目主页:https://github.com/dc-ai-projects/DC-Gen
1.1 DC-AE 1.5 研究背景
潜在扩散模型 (Latent Diffusion Model, LDM)[1]已经成为高分辨率图像合成的主流范式。它利用 Autoencoder 将大小为 的图像投影到形状 的压缩 Latent 表征,降低了扩散模型的计算成本。扩散模型的输出在推理时被馈送到 Autoencoder,从 Latent 表征重建图像。
Autoencoder 的重建性能很重要,因其对整个图像生成的 Pipeline 设置了一个性能上限。提高 Autoencoder 重建质量的常用方法是增加其 Latent channel[2]。例如,图 1 显示了具有不同 Latent channel 的 Autoencoder 的 rFID。可以看到,如果从 c16 切换到 c128,rFID 始终随着潜在通道数的增加而提高,从 1.60 下降到 0.26。

图1:不同 latent channel 下的 rFID 和 gFID 结果
增加 Latent channel 数对于 Deep Compression Autoencoder[3]尤其重要,Deep Compression Autoencoder 通过增加 Autoencoder 的空间压缩比来加速 LDM,如图 2 所示。在高空间压缩比(例如 f64)下,深度压缩自动编码器必须使用较大的潜在通道数(例如 c128)来保持令人满意的重建质量。

图2:不同 Autoencoder 空间压缩比下的训练吞吐量比较
然而,使用较大的潜在通道数会显着减慢扩散模型的收敛性,导致 gFID 结果更差。例如,图 1 展示了具有不同潜在通道数的 DiT-XL gFID 结果。虽然 Autoencoder 的 rFID 不断提高,但 gFID 不断恶化。这个问题不仅限制了 LDM 的质量上限,而且限制了它的效率,因为它阻碍了使用具有高空间压缩比 (例如,f64) 的 Autoencoder。
1.2 分析:不同 channel 下 Latent Space 的稀疏问题
本文提出了 DC-AE 1.5,引入了两个关键创新来解决上述挑战。首先,作者分析了 Autoencoder 在不同 Latent channel 数下的 Latent Space。
作者可视化了不同的 Latent channel (c32, c64, c128 和 c256) 的 DC-AE-f32[3]的 Latent Space,分析为什么扩散模型在使用较大的 Latent channel 数时存在收敛速度慢的问题。
在图 3(a) 中,作者可视化了 Latent Space 的 channel-wise 平均特征的可视化。假设 latent 表征的维度是 ,作者计算 channel-wise 平均特征的方法是:
torch.mean(latent, dim=2)
可以看到,当 Latent channel 数从 c32 增加到 c256 的时,关于 Object 结构的信息变得更加稀疏。从完整的潜在空间可视化 (图 4) 中,作者发现这种现象是因为 f32c256 Autoencoder 包含:
- 许多 Latent channel 来捕获图像细节。
- 少数 Latent channel 负责捕获 Object 结构。
作者发现,当使用大量 Latent channel 时,Latent Space 存在稀疏问题,如图 3(a) 所示。它分配大部分 Latent channel 来捕获图像细节 (命名为:Detail Latent Channel),而捕获 Object 结构的 Latent channel (命名为:Object Latent Channel) 在整个 Latent Space 中变得稀疏。这种稀疏问题使得扩散模型更难学习对象结构,导致收敛速度慢的问题。

图3:可视化通道平均特征。可视化表明,如果增加 latent channel,Object 结构信息就会变得模糊。这使得扩散模型无法有效地学习 Object 结构。因此,当扩大 latent channel 数时,可以看到逐渐扭曲的 Object 结构。这里使用 DiT-XL 作为扩散模型

图4:DC-AE-f32c256 完整的 Latent Space 可视化
这个现象也是合理的,因为捕获更多的图像细节对于实现良好的重建质量至关重要。
但是,因为扩散模型对所有 latent channel 一视同仁,因此其很难区分整体 Object 结构和高频细节,使其无法有效地学习 Object 结构。
比如,作者在图 3(b) 中可视化了具有不同 Autoencoder (DC-AE-f32c32 → DCAE-f32c256) 的 DiT-XL 的图像生成结果。可以看到,随着 latent channel 数量的增加,扩散模型逐渐失去对结构相干性的控制,Object 结构存在严重的失真。相比之下,图像细节仍然很好。
基于这些发现,作者推测 Autoencoder 的 Latent Space 在 latent channel 很多时存在 Object 信息稀疏问题,如图 3 (a) 所示。这个稀疏问题使得扩散模型无法有效地学习 Object 结构,导致收敛缓慢。
1.3 结构化潜在空间
受研究结果的启发,本文提出了结构化潜在空间 (Structured Latent Space) 来帮助扩散模型将 Object Latent Channel 与 Detail Latent Channel 区分开来,以缓解稀疏性问题。它引入了一种基于训练的方法来对 Latent Space 施加特定结构:前面的 Latent channel 专注于捕获 Object 结构,而后面的 Latent channel 专注于捕获图像细节。

图5:图像重建比较。使用 Structured Latent Space,DC-AE 1.5 可以在给定部分 latent channel 的情况下重建图像,前面的 latent channel 重建整体 Object 结构和语义,后面的 latent channel 添加细节。相比之下,DC-AE 在给定部分 latent channel 的情况下,不能很好地重建 Object 结构
如图 5 所示,传统 Autoencoder 的 Latent Space 在 latent channel 维度没有结构,作者在 Latent Space 上设计和添加了一个 channel-wise 的结构。
具体来说,DC-AE 1.5 可以从部分 latent channel 重建图像 (例如,来自 c128 的前 16/32/64 个 channel)。例如,如图 5 所示,它首先专注于从前 16 个 latent channel 重建 Object 结构,并在包含更多 latent channel 时逐渐细化图像细节。相比之下,当给定部分 latent channel 时,传统的 Autoencoder (例如 DC-AE[3]) 不能很好地重建 Object 结构。
如图 6 和 7 所示,作者可视化了 DC-AE 和 DC-AE 1.5 之间的完整 Latent Space 比较。可以看到,DC-AE 1.5 的 Latent Space 中的 Object Latent Channel 和 Detail Latent Channel 出现了明显的分离,前面的 channel 作为 Object Latent Channel,前面的 channel 作为 Detail Latent Channel,但是这在 DC-AE 的 Latent Space 中是不存在的。

图6:DC-AE-f32c128 完整 Latent Space 可视化

图7:DC-AE-1.5-f32c128 完整 Latent Space 可视化
图 4 展示了本文 Autoencoder 训练策略来实现所需的 channel-wise latent space 结构。
设计的直觉是基于这样一个事实,即:当 Latent channel 数较小时,Autoencoder 的 Latent Space 自然更关注 Object 结构。因此,使用额外目标来增强原始 Autoencoder 训练目标,额外目标是:从部分 latent channel 重建输入图像。

图8:DC-AE 1.5 Autoencoder 训练策略的说明。与传统的 Autoencoder 训练的主要区别在于,作者在将 Latent 特征馈送到解码器之前添加了一个 channel-wise 的随机掩码步骤。在每一步,根据式 1 随机生成 mask。它使 Autoencoder 能够使用部分 latent channel 完成重建任务
具体做法
Autoencoder 通过 Encoder ,将输入图像 映射到潜在特征 。通过 Decoder ,从 latent 特征预测图像 。
训练损失 用于监督 Autoencoder 的训练,它是 L1 Loss、Perceptual Loss 和 GAN Loss 的加权平均值。
当只选择 Latent Space 的前几个通道时,需要这个 Autoencoder 还能够重建图像。在实践中,通过在每个训练步骤中随机采样 latent channel 数( )来实现这一点,并生成掩码:

然后,作者使用修改后的损失 来更新 Autoencoder。
通过这种训练策略,Autoencoder 获得了这样的能力:在给定任何 Latent channel 数 的情况下重建图像,其 Latent Space 自然具有我们所需的通道结构。而且,这种训练策略对 Autoencoder 的重建质量影响是不大的。
如图 9 所示,为 DC-AE 和 DC-AE 1.5 之间的 rFID 比较。 DC-AE 1.5 在相同设置下实现了与 DC-AE 相同的 rFID,同时具有额外的 Latent Space 结构。

图9:ImageNet 256×256 的图像重建结果。DC-AE 1.5 在相同的设置下保持与 DC-AE 相同的 rFID (f32c128)。此外,DC-AE 1.5 具有 Latent Space 结构,但是 DC-AE 却没有
1.4 增强的扩散模型训练技术:加速收敛
其次,基于 Structured Latent Space,我们提出了增强扩散训练来解决收敛速度慢的问题。它引入了 Object Latent channel 的额外扩散训练目标,以加快扩散模型捕获 Object 结构的速度。
给定结构化的潜在空间,下一步是利用这种结构来加速扩散模型对 Object 结构的学习效率,以获得更好的收敛性。作者通过增强的扩散训练技术来实现这一点,如图 10 (a) 所示。增强的扩散训练技术的核心思想是:在 Object Latent Channel 上使用额外的目标显式增强扩散训练。
比如,考虑一个 Latent Diffusion Model 。给定 latent 特征 以及对应的带噪音的 latent 特征 ,去噪损失函数可以定义为: 。
在扩散模型的每个训练步骤中,随机采样一个 latent channel number ,并且利用式1中定义的对应的掩码 ,来修改 Diffusion 训练损失:

图 10 (b) 说明了在 ImageNet 256×256 上使用和不使用增强扩散训练的 UViT-H 训练曲线,可以看到,展示出了 6 倍更快的收敛,而且最终图像生成质量也更好了。

图10:(a) 增强的扩散模型训练技术示意图;(b) 训练曲线的对比
1.5 实验设置
作者使用 Pytorch 在 NVIDIA H100 GPU 上实现和训练模型。使用 FSDP 和 bf16 训练来减少训练时间和训练内存成本。最大的模型 (USiT-3B) 在 16 个 NVIDIA H100 GPU 上完成训练大约需要 5 天。
对于 Autoencoder 训练,作者遵循 DC-AE 中提出的相同训练策略,包括低分辨率全训练阶段、高分辨率潜在适应阶段和局部细化阶段。此外,还将 channel 结构添加到 Latent Space 中。本文的 Autoencoder 支持用 中的任何 latent channel 数进行重建,其中, c 是最大的 latent channel 数。
作者遵循与官方实现相同的训练设置,只将所有 DiT 和 SiT 模型的训练 Batch Size 从 256 增加到 1024,以增加 GPU 利用率。在实验中考虑了 4 个设置,包括 DiT[4]、UViT[5]、SiT[6]和 USiT[7]。除了现有的扩散模型外,我们还构建了一个更大版本的 USiT 来进行扩散模型缩放实验,深度为 56,隐藏维度为 2048,头部为 32。作者将此模型称为 USiT-3B。
1.6 实验结果
1) 加速扩散模型收敛
作者在相同的设置下将 DC-AE 1.5 与 DC-AE 进行比较 (ImageNet 256×256 的 f32c128 和 ImageNet 512×512 的 f64c128),以评估 DC-AE 1.5 的有效性。
图 11 总结了 ImageNet 256×256 上的 class-conditional image generation 结果。DC-AE-1.5-f32c128 不仅比 DC-AE-f32c128 收敛得更快,而且由于收敛性的提高,也会导致更好的图像生成质量。在所有设置下,它始终提供比 DC-AE-f32c128 更好的 gFID 和 Inception 分数。例如,在 UViT-H 上,它将 gFID 从 17.38 提高到 10.82,Inception 分数从 78.42 提高到 109.23。

图11:与 ImageNet 256×256 图像生成上的 DC-AE 的比较
图 12 报告了 ImageNet 512×512 上的 class-conditional image generation 结果。结果与 ImageNet 256×256 上的结果一致。在所有情况下,DC-AE-1.5-f64c128 都优于 DC-AE-f64c128。这些结果再次证明了 DC-AE 1.5 在加速扩散模型收敛和提高 Autoencoder 图像生成质量方面的有效性。其中,我们目标使用很大的 latent channel 数 (例如 c128)。

图12:与 ImageNet 512×512 图像生成上的 DC-AE 的比较
2) 改进扩散模型缩放曲线
现在可以使用 DC-AE 1.5 解决收敛速度慢的问题之后,那就有另一个想法是:通过使用具有更高 latent channel 数的 Autoencoder 来提高 LDM 的质量上限,以实现更好的图像重建质量。为了证明这一点,作者在 ImageNet 256×256 上使用 USiT 进行扩散模型缩放实验,并把结果报告在图 13 中。

图13:USiT 的 ImageNet 256×256 上扩散模型缩放结果
使用 DC-AE-f32c32,可以看到,由于 Autoencoder 的重建质量有限,缩放扩散模型的 Inception Score 的改进出现了饱和。相比之下,使用 DCAE-f32c128 缩放扩散模型带来了更显著的改进。但是,由于收敛缓慢,它的生成质量仍然不如 DC-AE-f32c32,直到模型被缩放到了 USiT-3B。
使用 DC-AE-1.5-f32c128,通过加速收敛,提升了缩放曲线。DC-AE-1.5-f32c128 在 USiT-2B 和 USiT-3B 上可实现比 DC-AEf32c32 更好的 Inception Score。
与 ImageNet 512×512 上最先进的图像生成模型的比较
除了提高 LDM 的质量上界之外,另一个令人兴奋的方向是:通过增加空间压缩率来提高效率,例如从 f32c32 到 f64c128。 DC-AE 1.5 对于 f64c128 这个设置来讲,对其图像生成结果有帮助,使其收敛更快。
作者在 ImageNet 512×512 上使用 DC-AE-1.5-f64c128 训练 USiT 模型 (USiT-2B),并将结果与最先进的扩散模型和自回归图像生成模型进行比较,如图 14 所示。

图14:与 ImageNet 512×512 class-conditional 图像生成上最先进的图像生成模型的比较
可以看到,使用 DC-AE1.5-f64c128,USiT-2B 以卓越的效率实现了具有竞争力的图像生成质量。在不使用 CFG 的情况下,它实现了 2.18 的 gFID,237.11 的 Inception Score,显著优于 DC-AE-f32c32+USiT-2B。更重要的是,它提供了比 DC-AE-f32c32+USiT2B 更高的 4 倍的训练吞吐量。图 17 展示了图像生成示例,与其他在 ImageNet 上训练的生成模型相比,显示出具有竞争力的视觉质量。
消融实验
作者进行了 Component-wise 的消融实验,来验证 DC-AE 两个关键设计,即:Structured Latent Space 和增强的扩散训练策略的有效性。
结果如下图 15 所示。可以看到,Structured Latent Space 和增强的扩散训练策略对于提高图像生成质量至关重要。例如,对 DiT-XL,单独添加 Structured Latent Space 或者增强的扩散训练策略甚至会损害结果。相比之下,将他们结合起来会得到明显的改进,将 gFID 从 26.44 降低到 17.31,并将 Inception Score 从 53.41 增加到 80.38。因此,作者建议可以同时使用这两种技术。

图15:Component-wise 消融实验
f32c32 设置下与 DC-AE 的比较
虽然 DC-AE 1.5 主要用于 Latent Channel 数较大 (例如 c128) 的 Autoencoder 设置,但仍然可以将其应用于具有 Latent Channel 数较小 (例如 c32) 的设置。下图 16 总结了 f32c32 下 DC-AE 1.5 和 DC-AE 之间的比较。可以发现,DC-AE-f32c32 的性能略好于 DC-AE-1.5-f32c32。作者推测这是因为 f32c32 没有 Latent Space 的稀疏问题。因此,不需要添加 Structured Latent Space 和增强的扩散训练策略。基于这一发现,作者建议在 latent channel 数较大 (例如 c128) 时使用 DC-AE 1.5,而在 latent channel 数较小 (例如 c32) 时使用 DC-AE。

图16:f32c32 设置下 DC-AE 1.5 与 DC-AE 比较结果

图17:使用 DC-AE 1.5 扩散模型生成的结果图像样本
参考
- High-resolution image synthesis with latent diffusion models
- Scaling rectified flow transformers for high-resolution image synthesis
- Deep compression autoencoder for efficient high-resolution diffusion models
- Scalable diffusion models with transformers
- All are worth words: A vit backbone for diffusion models
- Sit: Exploring flow and diffusion-based generative models with scalable interpolant transformers
- Deep compression autoencoder for efficient high-resolution diffusion models
.....
#Dijkstra
40年后,算法极限再被突破,清华段然团队更快最短路径算法摘STOC最佳论文
每次打开导航的,导航软件在一秒内给出一个最速路线的时候,你有没有好奇过它是怎么找到这条路的?
假如不考虑堵车、红绿灯等交通影响因素,仅找到一条最短最快的路线,那不论如何也逃不掉 Dijkstra 算法。
按照传统的 Dijkstra 算法,你将在整段路程中停下多次,寻找每一段的最短路径,然后再去更新下一段如何最短,直到走到目的地。在抉择的过程中会面临着不断选择「最短」路径的情形,还需要通过对比排序来决策。

Dijkstra 算法有多经典呢?
可以说每一个学计算机的学生,甚至每一个学编程理论或数据结构的人,都会在教科书上看到这个算法。
其在计算机学生心中地位甚至不亚于物理学中的基本定律,想到路径最短,必然想到 Dijkstra。
不过,现在有种方法能直接让你跳过不必要的排序,只专注于最重要的点之间的最短距离,大大缩短了所需要的计算时间。这就是清华交叉信息研究院段然团队一项重磅研究给出的全新解法。这项研究还在理论计算机国际顶级会议 STOC 2025 上获得最佳论文奖。
该算法改进了图灵奖得主 Robert Tarjan 等人在 1984 年提出的 O(m + nlogn)算法,后者将 Dijkstra 最短路径算法逼近了理论极限,但并没有完全消除排序的复杂度影响。
论文标题:Breaking the Sorting Barrier for Directed Single-Source Shortest
论文链接:https://www.alphaxiv.org/abs/2504.17033
我们先一起回顾一下 Dijkstra 算法。这个最著名的最短路径算法,由荷兰计算机科学家艾兹赫尔・戴克斯特拉于 1956 年提出。 自此,它成为了计算机科学领域的经典,广泛应用于网络路由、地图导航等各个领域。 Dijkstra 算法的目标是找到从一个源点到图中所有其他节点的最短路径。它的基本思路是通过不断选择当前最短的节点,并更新与之相邻的节点的距离,直到所有节点的最短路径都被找到。
去年这个经典算法达到了前所未有的新高度。这篇 FOCS 2024 的最佳论文证明:若我们把任务定义为距离排序问题,在合适的堆结构下,Dijkstra 在排序意义上是普适最优的;也就是说,一旦强制输出排序,就别指望整体复杂度再降了。
- 论文标题: Universal Optimality of Dijkstra via Beyond-Worst-Case Heaps
- 论文链接:https://arxiv.org/pdf/2311.11793
本次 STOC 最佳论文与之形成互补:避免排序→突破运行时间。他们关注距离的计算,而不关心顶点的具体顺序。它通过分层递归的方式,对图中的节点进行分组处理,并且只对关键节点进行细致的最短路径计算。这样的设计避免了传统 Dijkstra 算法中每次都需要排序的步骤,从而大幅度降低了计算的复杂度。
这个想法早在 2023 年就已经有了雏形。毛啸在加利福尼亚的一次会议上听到了段然关于无向图算法的演讲,双方因此展开了对话。毛啸一直仰慕段然的工作,第一次与他面对面交流时激动不已。
会后,毛啸开始在空闲时间思考这一算法,而段然的团队则在尝试将已有的算法扩展到有向图领域。受 Bellman-Ford 算法启发,尽管这个算法比 Dijkstra 算法慢得多段然团队通过将其分步执行来避免慢速问题,并利用它提前发现关键节点。
2024 年 3 月,毛啸提出了一种无需随机性的解决方案,随后加入段然团队。他们经过几个月的合作,结合彼此的想法,并借用段然 2018 年提出的突破性技巧,最终设计出一种新算法。该算法通过分层方式,像 Dijkstra 一样从源点扩展,但利用 Bellman-Ford 算法识别关键节点,避免了排序瓶颈,比 Dijkstra 更高效。
他们是怎么做到的
在这项研究中,团队给出了一种在具有实数非负边权的有向图上的单源最短路径(SSSP)的确定性 O (mlog2/3n) 时间算法,在比较加法模型中。这是首次打破 Dijkstra 算法在稀疏图上的 O (m+nlogn) 时间界限的结果,表明 Dijkstra 算法不是 SSSP 的最佳选择。
经典的 Dijkstra 算法 Dij(59),结合 Fibonacci 堆 FT(87)或松弛堆 DGST(88)等高级数据结构,可以在 O (m + n log n) 时间内求解单源最短路径(SSSP)问题。该算法在比较 - 加法模型(comparison-addition model)下工作,这种模型适用于实数权重的输入,限制算法只能对边权进行比较和加法运算,并且每个操作的耗时为单位时间。
对于无向图,Pettie 和 Ramachandran(PR,2005)提出了一种基于层次结构的算法,在比较 - 加法模型下可在

时间内运行,其中 α 为反 Ackermann 函数,r 为任意两条边权之比的上界。
Dijkstra 算法还会在求解过程中额外生成按源点距离排序的顶点序列。最新研究表明,如果要求算法输出按距离排序的顶点顺序,那么 Dijkstra 算法是最优的。若只需输出顶点距离而不要求顺序,段然、毛啸团队曾提出了一种适用于无向图的随机化 SSSP 算法,其时间复杂度为

,在稀疏图中优于 O (n log n) 的结果。然而,对于有向图,这类排序瓶颈依然没有被突破。
定理
存在一种确定性算法,可以在

时间内求解具有实数非负边权的有向图单源最短路径问题。
研究的结果也是第一个在无向图情形下打破 O (m + n log n) 时间界的确定性算法。
技术概述
总的来说,解决单源最短路径问题有两种传统算法:
- Dijkstra 算法:通过优先队列,每次提取距离源点最近的顶点 u,并从该顶点松弛其所有出边。该方法通常会根据顶点到源点的距离进行排序,因此时间复杂度至少为 Θ(n log n)。
- Bellman-Ford 算法:基于动态规划思想,多次松弛所有边。若要求解最多包含 k 条边的最短路径,Bellman-Ford 算法无需排序即可在 O (mk) 时间内完成。
段然团队的方法结合了这两种思路,并采用递归划分技术,这种技术类似于瓶颈路径算法。
在 Dijkstra 算法执行过程中的任意时刻,优先队列(堆)都会维护一个前沿(frontier)集合 S,其中包含一些顶点。
如果某个顶点 u 是「未完成的」(即当前的距离估计 d̂[u] 仍大于真实距离 d (u)),那么从源点 s 到 u 的最短路径必须经过某个已完成的顶点 v∈S。在这种情况下,我们称 u 依赖于 S 中的某个顶点 v。不过集合 S 中的顶点并不保证全部都是已完成的。
Dijkstra 算法会选择 S 中距离源点最近的顶点(它必定是已完成的),然后松弛从该顶点出发的所有边。
运行时间的瓶颈在于:有时前沿集合可能包含 Θ(n) 个顶点。由于需要不断选出距离源点最近的顶点,这意味着必须维护这些顶点的全局有序性,因此无法突破 Ω(n log n) 的排序下界。
核心思想是缩小前沿集合的规模。假设我们只想计算距离小于某个上界 B 的所有顶点的最短路径。令 Ũ 表示所有满足 d (u) < B 且从 s 到 u 的最短路径会经过集合 S 中某个顶点的顶点集合。
可以将前沿的大小 |S| 控制在

,也就是「感兴趣的顶点数」的

倍。
设参数

,有两种情况:
1. 如果 |Ũ| > k・|S|,那么前沿大小已经是 |Ũ| /k;
2. 否则,若 |Ũ| ≤ k・|S|,则从 S 中的顶点运行 Bellman-Ford 步骤 k 次,所有最短路径中包含少于 k 个 Ũ 顶点的 u∈Ũ 都会被标记为完成状态。否则,若 u 所依赖的 S 中顶点 v 的最短路径树(SPT)中含有不少于 k 个 Ũ 顶点,那么可以将前沿 S 缩减为这些 “枢纽点(pivot)”,且这样的枢纽点数量最多为 |Ũ| /k。
算法基于以上思想,但与传统 Dijkstra 类似的动态前沿方式不同,研究团队采用分治(divide-and-conquer)方案:算法分为 log n /t 层,每层包含一组前沿顶点和一个上界 B。在朴素实现中,每个前沿顶点都需要花费 Θ(t) 时间处理,因此整体仍是每个顶点 Θ(log n) 的开销。
通过在每一层应用前沿缩减策略,我们只需对这些枢纽点(约为前沿顶点的

)执行 Θ(t) 操作。这样,每个顶点的处理时间就降低为

,实现显著加速。
算法
该团队研究的是常数度图中从源点 s 出发的单源最短路径问题,且 m = O (n)。在算法中,他们设两个参数:

,

。
他们的核心思想是基于顶点集的分治。我们希望将一个顶点集 U 划分为 2^t 个大小相近的部分:

。
其中越靠前的子集中的顶点距离越小,然后递归地继续划分每个 U_i。这样,经过大约 (log n) /t 层递归后,子问题规模将缩小到单个顶点。
为了动态构造这种结构,他们每次尝试计算一批最接近的顶点的距离(不必完全恢复它们的精确距离顺序),并给出一个边界值,表示实际推进了多少。
假设在算法的某个阶段,对于所有 d (u) < b 的顶点 u,它们都已完成,并且团队已经松弛了从它们出发的所有边。此时他们想要找到所有 d (v) ≥ b 顶点的真实距离。
为了避免优先队列中每个顶点 Θ(log n) 的时间开销,他们考虑一个前沿集 S,其中包含所有当前满足 b ≤ d^(v) < B 的顶点(这里 B 是某个上界,并且不对它们进行排序)。可以发现,对于任意未完成顶点 v’ 且 b ≤ d (v’) < B,它的最短路径一定会经过某个已完成的顶点 u ∈ S。
因此,要计算所有 b ≤ d (v’) < B 顶点的真实距离,只需找到从 S 中的顶点出发、距离受限于 B 的最短路径。他们将这个子问题称为有界多源最短路径(Bounded Multi-Source Shortest Path,BMSSP),并为其设计了一个高效算法。

算法 1 查找关键枢纽点

算法 2 BMSSP 的基本情形

算法 3 有界多源最短路径
更多引理及证明、算法细节以及观察结论请参照原论文。
参考链接:
https://www.quantamagazine.org/new-method-is-the-fastest-way-to-find-the-best-routes-20250806/
....
#SSTGNN
南洋理工等提出SSTGNN: 当Deepfake检测遇上图神经网络,一个参数量减少42倍的轻量级统一框架
SSTGNN: 当Deepfake检测遇上图神经网络,一个参数量减少42倍的轻量级统一框架
从Sora的惊艳亮相到各类AI视频生成工具的普及,我们进入了一个“眼见不一定为实”的时代。Deepfake(深度伪造)技术在带来创作便利的同时,也引发了关于虚假信息、舆论操纵和公共安全的严重担忧。如何精准、高效地识别出这些AI生成或篡改的视频,已成为一个刻不容缓的挑战。
现有的检测方法大多依赖卷积神经网络(CNN)或Transformer,它们分别从空间、时间或频谱等孤立的维度寻找伪造痕迹,不仅模型臃肿、计算成本高,而且往往难以泛化到层出不穷的新型伪造技术上。
针对这些痛点,一篇来自南洋理工大学、南加州大学和香港大学的研究者们提出的论文 《When Deepfake Detection Meets Graph Neural Network: a Unified and Lightweight Learning Framework》,为我们带来了一个全新的思路。
研究者们提出了一个名为 SSTGNN (Spatial-Spectral-Temporal Graph Neural Network)的轻量级框架。SSTGNN的巧妙之处在于,它不再将视频看作一堆独立的像素,而是将其构建成一个结构化的图(Graph),从而能够在一个统一的框架内,联合对空间不一致性、时间伪影和频谱失真进行推理。最令人瞩目的是,SSTGNN在实现SOTA(业界最佳)性能的同时,其模型参数量比现有方法 最多减少了42.4倍 ,展现了极高的效率和可扩展性。
论文基本信息
论文标题: When Deepfake Detection Meets Graph Neural Network: a Unified and Lightweight Learning Framework
作者: Haoyu Liu, Chaoyu Gong, Mengke He, Jiate Li, Kai Han, Siqiang Luo
机构:
- 南洋理工大学 (Nanyang Technological University)
- 南加州大学 (University of Southern California)
- 香港大学 (The University of Hong Kong)
论文地址: https://arxiv.org/pdf/2508.05526v1
研究背景与动机
当前的Deepfake检测器面临两大核心挑战:
- 泛化能力差: 许多检测器在训练过的数据集上表现良好,但一旦遇到未经训练的新型伪造算法,性能就会急剧下降。这是因为它们往往只关注单一类型的伪造痕迹,例如CNN擅长捕捉空间纹理异常,而一些方法则专注于频域中的特定高频噪声。当伪造技术演进,这些孤立的痕迹可能不再明显。
- 模型笨重: 为了弥补表征能力的不足,现有方法通常依赖于巨大的、过度参数化的模型(如大型Transformer),这导致训练和推理成本高昂,难以在真实世界的资源受限场景(如移动设备)中部署。
如下图所示,SSTGNN在模型大小、训练成本和检测精度之间取得了绝佳的平衡,在左上角区域脱颖而出。

因此,研究者们的核心动机是:创建一个既能统一捕捉多维度伪造线索,又足够轻量、高效的通用检测框架。图神经网络(GNN)为这一想法提供了天然的土壤。
SSTGNN:时空频谱图的统一建模
SSTGNN框架的核心是将视频巧妙地转化为一个时空图(Spatiotemporal Graph),然后利用图神经网络强大的关系推理能力来捕捉伪造痕迹。
整个流程如下图所示:

1. 统一图建模 (Unified Graph Modeling)
- 节点 (Nodes): 首先,将视频的每一帧分割成多个小图像块(Patches)。每一个图像块都被视为图中的一个节点。这种设计能够捕捉到比整帧分析更细粒度的局部伪影。
- 边 (Edges):
- 空间边(Intra-frame Edges): 在同一帧内,根据图像块之间的视觉相似性连接节点,构建一个“帧内子图”。这用于捕捉空间上的不一致性,如不自然的纹理或拼接痕迹。
- 时间边(Inter-frame Edges): 在相邻的帧之间,连接对应位置的节点。边的权重由特征相似性和结构相似性共同决定。这用于捕捉时间上的不连贯,如画面抖动或异常的运动模式。
通过这种方式,整个视频被转换成一个统一的、包含丰富时空信息的图结构。
2. 时空频谱联合推理
在构建好的图上,SSTGNN设计了三个协同工作的组件来提取伪造特征:
- 可学习的频谱滤波器 (Learnable Spectral Filters): 传统方法通常使用固定的频谱变换(如DCT)来分析频域,但不同伪造技术留下的频谱痕迹千差万别。SSTGNN创新地定义了 可学习的 频谱滤波器。模型可以在训练中自动学习应该放大还是抑制哪些频率分量,以最有效地检测出伪造痕迹。这使得模型对多样的、未知的伪造类型具有更强的适应性。

- 时空差分建模 (Spatial-Temporal Differentials): 为了增强模型对微小不一致性的敏感度,SSTGNN引入了“负权重边”的概念。
- 在空间上,它借鉴了NPR(邻近像素关系)的思想,通过在邻近节点间引入差分操作,放大局部像素的异常。
- 在时间上,它在相邻帧的对应节点间引入负边,以惩罚特征的剧烈变化,从而有效捕捉帧间的抖动和不自然过渡。
- 图注意力网络 (Graph Attention Networks, GAT): 最后,使用GAT在构建好的图上进行信息传播和聚合,学习到融合了空间、频谱和时间信息的最终特征表示,并送入分类器判断视频的真伪。
实验结果与分析
研究者在FF++、Celeb-DF等多个权威的Deepfake检测基准数据集上进行了广泛的实验。
域内和跨域性能卓越
- 域内检测 (In-domain): 在训练和测试集来自同一伪造方法的情况下,SSTGNN在7个数据集上的平均AUC达到了 99.51% ,总体排名第一,展现了其强大的检测能力。

- 跨域泛化 (Cross-domain): 这是衡量检测器鲁棒性的关键。在训练集和测试集来自不同伪造方法或完全不同的数据集时,SSTGNN同样表现出色,显著优于其他基线模型。这证明其统一建模的思路确实能学到更本质、更通用的伪造特征,而不是过拟合于某种特定的伪造痕迹。


更具表达力的特征空间
为了探究SSTGNN为何泛化能力更强,研究者对学习到的特征进行了t-SNE和PCA可视化。结果显示,相比于其他方法(如STIL),SSTGNN能够将真假样本在特征空间中分得更开,即使是未见过的伪造样本也能有效分离,证明其学到的特征表达更丰富、信息量更大。


消融实验
消融实验证明,空间、频谱和时间三个组件对于模型的最终性能都至关重要,移除任何一个都会导致性能下降,验证了统一建模的必要性和有效性。

总结与贡献
SSTGNN的提出,标志着Deepfake检测领域的一次范式转变,从依赖大型、孤立的特征提取器转向了轻量、统一的图结构化推理。
其主要贡献如下:
- 提出SSTGNN框架: 首次将视频建模为统一的时空频谱图,能够在一个框架内联合推理多维度的伪造线索。
- 极致轻量高效: 在达到甚至超越SOTA性能的同时,模型参数量大幅减少(最多42.4倍),训练和推理速度更快,使其非常适合真实世界的部署需求。
- 强大的泛化能力: 通过可学习的频谱滤波器和差分建模,SSTGNN对多样化、未知的伪造技术展现出强大的鲁棒性。
- 提供可解释性: 基于图的方法为理解视频内容的内在关系动态提供了可能,比传统的黑箱模型更具可解释性。
xxx认为,SSTGNN不仅是一个性能卓越的检测工具,更重要的是,它为如何构建下一代通用、高效、可信的媒体内容安全框架指明了一个极具潜力的方向。
.....
#重读 Google 旧文 Pathways
寻找 veRL 中 Single-controller 思想源头
重读 2022 年 Google Pathways 论文,厘清 single-controller 与 multi-controller 的设计缘起,指出正是当年为超越 SPMD 而生的“统一主控”思想,今日在 veRL 等 RL 框架里借尸还魂,成为调度复杂 MPMD 计算图的关键范式。
在研究强化学习训练框架 veRL 时,初学者首先会被灌输 single controller 和 multi-controller 这两个基础的概念。此概念最早可以追溯到 Google 在 2022 年发布的一篇旧文 Pathways,veRL 在设计中也深受 Pathways 文章的影响。
今日重读此文,一些死去的记忆开始攻击我。
2021年11月,Google 发布了Jeff Dean 写的博客《Introducing Pathways: A next-generation AI architecture》。此文是Pathways 的首次亮相,它被成为next-generation AI architecture。2022 年初,Google 发布了540B 大模型 PaLM,正是使用 Pathways 训练而成。随后 Pathways 的论文预印本同步亮相,揭露了更多细节,后面发表在 MLSys 22 中。值得一提的是Pathways 的尾作Yonghui Wu,正是如今字节Seed 的负责人。
2022年,当时鲜有人相信模型增大能产生神奇效果。Meta 的 在 3 月份发布开源模型 175B OPT,可惜效果很差,一定程度影响了大众对大模型的印象。相比 DeepMind Gopher 和 OpenAI 的 GPT3.5,Google 540B 在规模上是遥遥领先的,因而 Google 在当时AI 系统的认知处于绝对前沿地位。对时代背景感兴趣的同学,可以翻阅笔者口述历史《方佳瑞:大模型Infra这些年,从黑铁时代到黄金时代再到白银时代(https://zhuanlan.zhihu.com/p/708594043)》。
但是,对于彼时阅读 Pathways 论文的我来说,读完的感受确实“如读”。我觉得这是做流水线并行问题的工作,是专门为JAX + TPU设计的,在现实场景中似乎没有太多实际意义。 这主要是我当时认识不足导致的。
当时国内(甚至是全世界)对 Pathways 论文理解最为透彻的是 oneflow 团队。他们发表了两篇 Pathway 解读文章,第一篇《OneFlow:解读谷歌Pathways架构(一):Single-controller与Multi-controller(https://zhuanlan.zhihu.com/p/495592456)》,第二篇更加激进,直接喊出《Pathway 是向前一步是 OneFlow(https://mp.weixin.qq.com/s/N99dRgFYC9zOOcGlg0Ulsw)》。oneflow 是当时国内罕见的同时在思考下一代 AI 系统的团队,下面摘录一段他们文章原文:
我可能是比较能理解 Pathways 的少数人之一。Pathways 讨论的这些问题我们都思考过,好几年前就思考了,而且还研发出 OneFlow,也写过论文探讨这些问题。遗憾的是,我们在论文里讨论这些问题时,几乎从来没被理解过。今天,从 Google 论文讲出这些道理,这就是不需要证明的真理了。
这就像裴松之注三国志,金圣叹批水浒传,B 站 up 主解读大明王朝1566,oneflow 团队的点评比 Pathways 原文还要精彩。这里有高山流水的惺惺相惜,也有曲高和寡的意难平。
时光荏苒,三年半的时间匆匆过去,和当下的 AI 系统对比,非常值得回味 Pathways 在当年的一些预言,和 oneflow 的注解。让我们透过 Pathways 一窥在那个大模型的蛮荒时代,从业者对未来 AI 系统的绮梦。
Single vs Multi-controller
作为一套 Google 内部涵盖软件和硬件的庞大系统,要说清楚 Pathways 是是非常复杂的,这里牵扯很多 TPU 特殊的设计。这里只能尽可能讲清楚Pathways 所希望传递的普世理念,也是后世 veRL 等系统所汲取的源泉。
在 2022 年,以 PyTorch 为代表的 ML 训练系统是 MPI 式的,每个卡启动一个进程,所有进程运行的代码完全一样,然后插入 AllReduce/ReduceScatter/AllGather等集合通信原语,来实现分布式的 DNN 训练。按照Flynn分类法,这就是典型的 SPMD并行范式,Pathways 称之为 multi-controller。每个进程都是分布式训练的一个控制器,平等的执行相同程序。
multi-controller 对于执行数据并行(DP)程序简直再合适不过,这也是 2022 年最主流的并行方式。但是 Google 认为,下一代模型会变得复杂,会采用非 SPMD 也就是 MPMD 的方式运行,那 multi-controller 将无法胜任。程序将是以 MPMD 方式计算图,图每个节点是是一个多卡运行的 SPMD 程序,每张卡的执行程序是不同的。
Pathways 认为什么样的程序是 MPMD 呢? 作者提到了 Pipeline Parallel(PP),MoE 两个场景。PP 中每个 Stage 使用不同参数,计算逻辑可能不同。MOE 中每个 token 路由到每个专家是不确定的,因此每次计算图都不同,程序是非 MPMD 的。按照后世的经验,二者用 SPMD 也并非不行。对于 PP,Megatron-LM 1F1B 复杂流水线并行还不也用 torchrun 跑的好好的。对于 MoE 模型,采用 EP/TP 等并行,MoE 训练和Dense 似乎也并没有什么范式级别的变化。
所以 PP 和 MoE 并没有击中 multi-controller 的死穴。反而是后来强化学习,多个模型构成复杂的计算图才是multi-controller 不能承受的生命之轻,单这是 Pathways 作者们始料未及的。 RLHF 论文是 2022 年 3 月发表的,真正被意识到其威力,要等到年末的 ChatGPT 发布了。
为了解决 multi-controller 对 MPMD 的限制,Pathways 使用 single-controller,系统通过一个 controller(master 节点)来描述计算图,计算图的每个节点是是一个多卡运行的 SPMD 程序,每个节点点采用 multi-controller 方式运行。single-controller 编程灵活性,能够实现用单一的 Python 进程管理成千上万个 TPU 设备。灵活编程只是一方面,更重要的是,single-controller 可以让每个计算图节点的资源可以动态调节。multi-controller 的每个进程所拥有的计算资源在计算图执行过程是一成不变的,而 single-controller 可以让图的每个节点资源都不同。
single-controller 是沿用分布式计算(Distributed Computing)的思路,用 master-slave 方式组织分布式的计算,计算资源可以是异构的、动态变化的。而 multi-controller 则是沿用高性能计算(HPC)的思路,在超计算机上跑并行任务,计算资源是同构的。
TensorFlow V1 早期采用 single-controller 的思路设计,它会把计算图切分,然后插入 send recv 节点来实现流水线式的分布式训练。不过面对简单的 DP,这种过度设计逐渐式微,并很快被 PyTorch 打败。Pathways 作者认为未来的任务都是类似 PP、MoE 高度稀疏和动态的(如今的 RL 任务),此时的过度设计反而变得恰到好处。
Dive into single-controller
如何实现单控制器(Single-controller)方式的计算图,Pathways 采用了谷歌内部的闭源数据流执行引擎 PLAQUE。至于开源方案,很自然会考虑使用 Ray。计算图中的每个节点对应一个 Ray Actor,Actor 使用 PyTorch 以单程序多数据(SPMD)方式进行计算。 这样扩展到大规模,在实现层面还是有很大挑战。
首先是 Single-controller 的调度难度。我认为 Pathways 消除调度开销优化主要为是 TPU 定制的。和 cuda kernel 可以自动支持 dynamic shape 不同,TPU 根据输入 shape JIT 地编译成可执行程序再发给 TPU 上运行,这导致很大的 kernel launch的开销。另外,cuda kernel 可以很细碎,通过互相抢占;TPU kernel 是一个大程序,从头运行到底,在分布式运行时很容易造成死锁。所以 Pathways 提出了 Parallel Async Dispatch 和 Gang Scheduling Dispatch 来解决这两个问题。
那么 GPU 上是否就没有这些调度问题呢?笔者认为 CUDA kernel launch 足够小的调度开销,如果不使用 torch.compile这种编译优化,不搞 auto parallel 这些“华而不实”的自动搜索,调度开销是可以忽略。但是,死锁问题还是可能存在,这一点 oneflow 的第一篇文章对 NCCL 死锁问题有很精彩的论述。
Single-controller 系统上计算图节点之间数据传输都经过中心化的 controller 节点。这里很很容易成为瓶颈,从而影响系统的扩展性。Pathways 提到了使用和 Ray 类似的 sharded object store 支持 HBM 等设备内存管理。object store 会以用户透明的方式,自动管理数据对象。但是在大规模并行上有很大问题,oneflow 团队有一个精彩论述:
另外,把 Ray 用到深度学习系统里还是有一个不易察觉的大“陷阱”,那就是 Ray 通过 object store 和 RPC 机制实现了一套“自动”的数据搬运机制 (object 在 object store 之间的隐式迁移),本意当然是帮上层用户着想,让他们不用再操心复杂的数据搬运,但这个“自作主张”,“越俎代庖”之举在深度学习里会帮倒忙,不是做少了,而是做过了。
多说一句,做 AI 芯片的朋友对这一点体会最深,通用 CPU 都使用 cache 机制,硬件自动完成预取的工作,让软件开发更简单,但仍存在 cache miss rate 的问题,AI 芯片不能承受这个代价,再加上深度学习任务有显著的规律,所以更希望让软件显式的管理缓存何时预取数据,这里普遍使用一种叫 scratchpad 的技术,以实现100%的”命中“。
这一点在 verl 中也会遇到,在大规模并行时,两个控制分多 GPU 的 Ray Actor 之间传输很大的文件,比如视频、图片,object store的透明调度差强人意。Ray 又缺少 RDMA 传输机制,这会导致潜在的性能问题。
最后把 single controller 所控制的节点抽象成 sharded dataflow现在已经是见怪不怪了,你用 3D 并行启动一个训练任务就是 sharded dataflow,不过当时还是颇为新奇的观点。
Single Controller, Multiple Controller and More
veRL的流行让 single-controller 设计重新回到人们的视线。那是否不适合 MPI-style 实现的分布式程序,都要用 single-controller 设计呢?
显然,分布式系统世界并非只有single-controller 和 multiple-controller的非此即彼。因此,并不能死记硬背下 SPMD 用 multi-controller,MPMD 用 multi-controller。
有些 MPMD 程序还是需要用微服务的方式来组织。尤其是编程灵活性不首要任务,需要很在意调度开销的程序。比如, PD 分离的 LLM 推理引擎,VAE\TextEncoder\DiT 服务组成 Diffusion Model推理引擎,RL 训练系统 Nemo-Aligner 都是采用类似微服务方式设计。这种方式下,计算图的每个节点并需要指导全局的计算图,只需要进行和前置取数据+计算+后置节点翻数据的事件循环,就可以完成自己的任务。
随着AI 系统变得越来越复杂,我认为大家有三种系统设计上的选择。对于 SPMD,优先选择 multi-controller。对于 MPMD,如果每个节点计算和通信比例小,很在意调度开销,用微服务架构。如果调度开销比较小,用 single-controller。
.....
更多推荐



所有评论(0)