CausalFusion:生成的两条轴
交互教程
生成一个子集并对其去噪,再让后续子集依赖它的干净值。
之前已经能做什么
Section titled “之前已经能做什么”DiT 同时对整个 latent 网格去噪;MAR 先计算上下文,再运行小型逐 token 扩散头。CausalFusion 让主 Transformer 参与当前 token 子集的迭代去噪,同时在子集间保持因果依赖。
改变了什么,为什么
Section titled “改变了什么,为什么”外层轴是自回归子集,内层轴是扩散时间。广义因果 mask 让当前带噪子集读取此前干净子集,同时阻止过去位置读取当前或未来目标。噪声级与分组必须纳入训练设计。
阅读顺序从左到右。点击模块,将它与计算和代码对应。代码为教学伪代码;来源链接提供论文方法或已核查的实现。
选择子集与时间
训练采样结构化去噪问题。
groups = sample_partition(tokens)
noisy = corrupt_current_groups(groups,times)广义因果注意力
较早位置不能读取较晚目标。
mask = group_causal_mask(groups)
v = transformer(noisy,condition=earlier_clean,mask=mask)嵌套生成
主去噪网络在组循环内部运行。
for group in groups:
for t,t_next in schedule:
state[group] = denoise_step(transformer,state,group,t,t_next)逐步理解机制
Section titled “逐步理解机制”增大演示中的组大小,会减少外层轮数;增加内层步数,每组需要更多去噪调用。不同于 MAR,这些反复调用涉及主 Transformer,因此相同组步计数在两模型中不代表相同成本。
一个大组的调度接近整网格去噪;多个小组加入更多自回归条件。在两端间移动会改变预测问题,主要在某一端训练的模型不一定在另一端表现良好。
改变参数,查看计算值,再把它与上方的真实模型说明对照。
解析教学模型 · 控件改变的是例子,不是训练后的研究模型。
数字表示生成组,不是 token 值;耗时还取决于网络大小和缓存。
| 量 | 值 |
|---|---|
| 外层组数 | 4 |
| 每组内层步数 | 4 |
| 组数 × 步数 | 16 |
训练与采样的区别
Section titled “训练与采样的区别”均匀采样 AR 轮数可能过度强调每次预测新内容很少的简单任务。论文调整轮数采样并增加早期步骤损失权重。多模态实验混合文字在前、图像在前样本,用于生成与描述,并对文本 loss 赋较小权重。
这些结果不能证明什么
Section titled “这些结果不能证明什么”论文报告某些训练/推理调度不匹配会严重退化。位置编码也随实验变化,可为正弦、学习式或图文组合,不能统一称为 RoPE。描述与图文生成证据不能证明开放域 VQA 或通用推理。
训练后能否不检查质量就任意减少外层轮数?
不能。这改变每个上下文要预测的内容量,可能偏离训练调度分布。
来源与后续阅读
Section titled “来源与后续阅读”本页图形与伪代码为教学重绘。论文报告、固定实现观察和解析示例分别标记;未运行研究模型。