---
title: "Self-Conditioning"
created: 2026-05-13
updated: 2026-05-13
type: concept
tags: [diffusion, conditioning, iterative-generation]
sources:
  - https://arxiv.org/abs/2605.10938
---

# Self-Conditioning

Self-conditioning 是一种不需要外部条件信号的扩散模型条件化技术：将模型自身的**中间预测**作为下一步的条件输入。

## 机制

### 训练

以 50% 概率执行双次前向 pass：
1. **第一次 pass**：`x̂' = net_θ(z_t, ∅, t)` — 无条件的初步预测
2. **第二次 pass**：`x̂ = net_θ(z_t | x̂', t)` — 以 x̂' 为条件

另 50% 概率执行标准无条件前向 pass：`x̂ = net_θ(z_t, ∅, t)`。

在 ELF 中，条件通过 concatenation `[z_t, x̂']` 注入网络。

### 推理

推理时无需额外前向 pass：每一步的条件来自**上一步的预测**，形成自回归式的迭代细化：

```
step 0: z_0 ~ N(0,I), condition = 0
step i: x̂_i = net(z_i | x̂_{i-1}, t_i), z_{i+1} = z_i + dt·v̂_i
```

## 在 ELF 中的角色

Self-conditioning 为 [[classifier-free-guidance-language|CFG]] 提供条件信号 c = x̂'：

```
v_cfg = ω · v(z_t | x̂') + (1-ω) · v(z_t | ∅)
```

这使得 ELF 可以在无条件生成任务中（无 class label / prompt）使用 CFG。

## 与自回归的区别

- **自回归**：条件信号是之前生成的 token
- **Self-conditioning**：条件信号是之前时间步对**完整序列**的预测嵌入——提供了全局上下文信息

## 相关概念

- [[classifier-free-guidance-language]] — 使用 self-conditioning 作为条件信号
- [[embedded-language-flows]] — 使用此技术的模型
- [[x-prediction-parameterization]] — self-conditioning 预测的是 x̂（干净嵌入）
