三個觀點,一個祕方:條件化技巧與訓練目標的拆解
第 2–5 章從變分、score-based、flow-based 三條路走到同一個地方。這一頁是第 6 章的前半:先指出三者共用的「條件化技巧」,在有限資料集上把三種 oracle 目標具體算出來,並看到一個推論:完美擬合的模型只會重現訓練資料。接著把所有 diffusion 的訓練損失寫成同一個模板,拆成四個設計選擇:雜訊時程、預測什麼、時間怎麼抽、時間怎麼加權。最後是附錄 D.6 的 EDM 網路參數化。
讀完這頁你應該能夠
- 寫出變分、score-based、flow-based 三種觀點的邊際目標和條件目標,並說明「邊際 oracle = 條件 oracle 的後驗平均」這個共同模式。
- 在有限資料集上寫出三種 oracle 的封閉形式,並解釋為什麼完美擬合經驗 oracle 等於記住訓練集。
- 說出四種預測(\(\bm\epsilon\)、\(\mathbf x\)、score、\(\mathbf v\))各自的 oracle 和條件回歸目標 \(A_t\mathbf x_0+B_t\bm\epsilon\)。
- 把訓練目標拆成四個設計選擇,並算出「預測一種量、在另一種量上算損失」等於多乘一個時間權重。
- 區分「改變時間分佈 = 改變目標」和「重要性抽樣 = 同一個目標、不同估計量」,並說明單調權重為什麼對應到 ELBO 的平均。
- (選讀)推出 EDM 的 \(c_{\text{in}}\)、\(c_{\text{skip}}\)、\(c_{\text{out}}\)。
前置知識
- B04:DDPM 的條件反向核(Lemma)、以 \(\mathbf x_0\) 為條件的 KL、\(\bm\epsilon\)/\(\mathbf x\)-prediction。
- B06:DSM、Tweedie 公式;B12:CFM 與「條件速度的後驗平均 = 邊際速度」。
- B10:\(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\)、對數訊號雜訊比;B13:插值時程表。
「書 §」標出原文位置。灰框「轉述者補充」是書裡沒有的內容;藍框「推導」展開書中省略的步驟或腳註。
01第 6 章在做什麼書 第 6 章開頭
書的章首引言是 Poincaré 的一句話,大意是:數學是給不同的東西取同一個名字的藝術。
這一章用一個系統化的觀點,把變分、score-based、flow-based 三種觀點連成一幅一致的圖。雖然出發的直覺不同,它們收斂到現代 diffusion model 的同一個核心機制:定義一個沿著一串邊際分佈前進的前向破壞過程,再學出建構「沿這條路徑反向走」的生成動態所需要的局部量。綜合第 2–5 章,可以看到一個共同的配方:定義一條前向破壞過程描出的邊際路徑,再學一個隨時間變化的向量場,沿著這條路徑把簡單的先驗運送成資料分佈。
所有觀點的關鍵成分是第 2 節的條件化技巧:它把算不出來的邊際目標變成好處理的條件目標,讓訓練穩定又有效率。之後各節:
- §6.2(本頁第 4–6 節)系統化地分析訓練目標,找出它的基本組成,釐清三種觀點怎麼寫損失函數。
- §6.3(B16)證明任何仿射的前向加噪 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\) 都可以等價地轉成標準線性時程 \(\mathbf x_t=(1-t)\mathbf x_0+t\bm\epsilon\);常見的參數化(預測雜訊、乾淨資料、score、速度)在梯度層級上可以互換。所以雜訊時程和參數化的選擇都遵循同一個建模原則。
- §6.4(B17)把討論收攏,指出支配一切的規則:Fokker–Planck 方程。不論看成變分方法(離散時間去雜訊)、score-based 方法(SDE)還是 flow-based 方法(ODE),每個都建構一個邊際遵循同一個密度演化的生成器;差別只在參數化和訓練目標。
書對這一章的閱讀建議(轉述)
書說這一章是全書概念上的拱心石。第一次讀時,專注在條件化原則、四種預測之間的關係,以及連起三個觀點的連續方程/Fokker–Planck 觀點。核心教訓不是背下每一個換算公式,而是每次都問:這裡用的是哪一種「等價」,它實際保留了什麼。書列出的幾種等價:表示同一個 oracle 資訊;母體目標只差權重或加法常數;描出同一條邊際密度路徑;當成實際的訓練或取樣演算法時行為完全相同。權重、時程和參數化選擇的細節,可以之後再回來看,理解為什麼數學上等價的寫法在實務上仍可能表現不同。
02條件化技巧:diffusion model 的祕方書 §6.1
到目前為止,我們從三個看似不同的起點探索 diffusion model。每一個原本各有動機,並導出自己的訓練目標(固定 \(t\)):
- 變分觀點:學一個參數化的密度 \(p_{\bm\phi}(\mathbf x_{t-\Delta t}\mid\mathbf x_t)\),逼近 oracle 的反向轉移 \(p(\mathbf x_{t-\Delta t}\mid\mathbf x_t)\),最小化 $$\mathcal J_{\text{KL}}(\bm\phi):=\mathbb E_{p_t(\mathbf x_t)}\Big[\mathcal D_{\text{KL}}\big(p(\mathbf x_{t-\Delta t}\mid\mathbf x_t)\,\Vert\,p_{\bm\phi}(\mathbf x_{t-\Delta t}\mid\mathbf x_t)\big)\Big];$$
- Score-based 觀點:學一個 score 模型 \(\mathbf s_{\bm\phi}(\mathbf x_t,t)\) 逼近邊際 score: $$\mathcal J_{\text{SM}}(\bm\phi):=\mathbb E_{p_t(\mathbf x_t)}\Big[\big\Vert\mathbf s_{\bm\phi}(\mathbf x_t,t)-\nabla_{\mathbf x}\log p_t(\mathbf x_t)\big\Vert_2^2\Big];$$
- Flow-based 觀點:學一個速度模型 \(\mathbf v_{\bm\phi}(\mathbf x_t,t)\) 匹配 oracle 速度 \(\mathbf v_t(\mathbf x_t)\)(例如 B12 的邊際速度式): $$\mathcal J_{\text{FM}}(\bm\phi):=\mathbb E_{p_t(\mathbf x_t)}\Big[\big\Vert\mathbf v_{\bm\phi}(\mathbf x_t,t)-\mathbf v_t(\mathbf x_t)\big\Vert_2^2\Big].$$
乍看之下,這些目標都沒救:它們都需要一般而言根本無法得知的 oracle 量。但有趣的轉折是:每個方法都各自得到同一個優雅的解法,以資料 \(\mathbf x_0\) 為條件。這個技巧把每個算不出來的訓練目標變成好處理的。
這個「條件化技巧」把目標改寫成對已知高斯條件分佈 \(p_t(\mathbf x_t\mid\mathbf x_0)\) 的期望,得到好處理的條件目標,而且和邊際版本梯度等價:
三個式子分別是 B04 的條件 KL 定理、B06 的 SM–DSM 等價、B12 的 FM–CFM 等價。三個 \(C\) 各不相同,但都和 \(\bm\phi\) 無關。
為了建立統一的觀點,接下來系統化地重看條件 KL、score、速度目標。關鍵是:這些目標不只好處理,而且和原本的形式只差一個常數的垂直平移。條件版本(\(\mathcal J_{\text{CKL}}\)、\(\mathcal J_{\text{DSM}}\)、\(\mathcal J_{\text{CFM}}\))和原本的版本(\(\mathcal J_{\text{KL}}\)、\(\mathcal J_{\text{SM}}\)、\(\mathcal J_{\text{FM}}\))只差一個和模型參數無關的常數,所以在同一個模型族裡,每個條件目標和原本的目標有相同的最小化解。
想看這些最小化解在理想情況下還原什麼,假設模型的表達力足以表示精確的 oracle。那麼儘管目標不同,三個觀點共享同一個概念模式:
$$\underbrace{\text{邊際 oracle}}_{\text{一般算不出來}}=\mathbb E_{\mathbf x_0\sim p(\cdot\mid\mathbf x_t)}\Big[\underbrace{\text{條件 oracle}}_{\text{給定 }\mathbf x_0\text{ 時好處理}}\Big].$$也就是說,以乾淨樣本 \(\mathbf x_0\) 為條件給出好處理的目標;把這些條件目標對「所有和 \(\mathbf x_t\) 相容的乾淨樣本」取平均,就還原了想要的邊際 oracle。具體地:
變分觀點的第一個等式來自把條件反向轉移對 \(\mathbf x_0\) 取邊際,而 KL 目標被得到的邊際反向轉移最小化。Score 和速度匹配的平方誤差目標是最小平方回歸,它們的母體最小化解就是對應的條件期望。書強調:這些等式描述的是不受限制的母體 oracle;受限的神經網路模型不一定能精確表示它們。
第一個等式:為什麼條件反向核的後驗平均就是邊際反向核
前向過程是馬可夫的,所以 \(p(\mathbf x_{t-\Delta t}\mid\mathbf x_t,\mathbf x_0)\) 有意義。用全機率:
$$p(\mathbf x_{t-\Delta t}\mid\mathbf x_t)=\int p(\mathbf x_{t-\Delta t},\mathbf x_0\mid\mathbf x_t)\,d\mathbf x_0=\int p(\mathbf x_{t-\Delta t}\mid\mathbf x_t,\mathbf x_0)\,p(\mathbf x_0\mid\mathbf x_t)\,d\mathbf x_0.$$而 \(\mathbb E_{\mathbf x_t}\,\mathcal D_{\text{KL}}(p(\cdot\mid\mathbf x_t)\Vert p_{\bm\phi}(\cdot\mid\mathbf x_t))\ge0\),在 \(p_{\bm\phi}=p\) 時等於 0,所以 \(p^*=p(\mathbf x_{t-\Delta t}\mid\mathbf x_t)\)。注意第一行是一個混合分佈:每個條件核都是高斯(B04 的 Lemma),但邊際核是高斯的混合,一般不是高斯。
03有限資料集上的 oracle 目標,以及記憶書 §6.1 例子
為了讓上面的式子更具體,假設資料分佈是經驗測度
$$\hat p_0=\frac1N\sum_{i=1}^N\delta_{\mathbf x_0^{(i)}},$$\(\{\mathbf x_0^{(i)}\}_{i=1}^N\) 是有限的訓練集。上面式子裡的記號 \(\mathbf x_0\sim p(\cdot\mid\mathbf x_t)\) 表示對「給定雜訊觀測 \(\mathbf x_t\) 時乾淨樣本的後驗分佈」取平均:對任何量 \(\mathbf h(\mathbf x_0)\),\(\mathbb E_{\mathbf x_0\sim p(\cdot\mid\mathbf x_t)}[\mathbf h(\mathbf x_0)]=\int\mathbf h(\mathbf x_0)\,p(\mathbf x_0\mid\mathbf x_t)\,d\mathbf x_0\)。
由貝氏定理,
$$p(\mathbf x_0\mid\mathbf x_t)=\frac{p_t(\mathbf x_t\mid\mathbf x_0)\,p_{\text{data}}(\mathbf x_0)}{\int p_t(\mathbf x_t\mid\tilde{\mathbf x}_0)\,p_{\text{data}}(\tilde{\mathbf x}_0)\,d\tilde{\mathbf x}_0}.$$在標準的高斯 diffusion 前向過程下,\(p_t(\mathbf x_t\mid\mathbf x_0^{(i)})=\mathcal N(\mathbf x_t;\alpha_t\mathbf x_0^{(i)},\sigma_t^2\mathbf I)\),條件概似是顯式的。但在母體層級,後驗 \(p(\mathbf x_0\mid\mathbf x_t)\) 仍然需要對整個資料分佈 \(p_{\text{data}}\) 取平均。
現在把 \(p_{\text{data}}\) 換成經驗測度 \(\hat p_0\),後驗只支撐在訓練樣本上,它在 \(\mathbf x_0^{(i)}\) 的質量是
所以後驗期望化成有限和 \(\mathbb E_{\mathbf x_0\sim p(\cdot\mid\mathbf x_t)}[\mathbf h(\mathbf x_0)]=\sum_iw_i(\mathbf x_t,t)\,\mathbf h(\mathbf x_0^{(i)})\):抽象的後驗平均變成對訓練集的具體加權平均。三種情形分別是:
變分觀點。oracle 反向轉移是
$$p^*(\mathbf x_{t-\Delta t}\mid\mathbf x_t)=\sum_{i=1}^Nw_i(\mathbf x_t,t)\,p(\mathbf x_{t-\Delta t}\mid\mathbf x_t,\mathbf x_0^{(i)}).$$每個條件反向核 \(p(\mathbf x_{t-\Delta t}\mid\mathbf x_t,\mathbf x_0^{(i)})\) 在高斯 diffusion 下都有封閉形式,其實就是 B04 Lemma 的高斯。所以真正的反向核只是一堆顯式高斯橋的後驗加權混合。
Score-based 觀點。oracle score 是 \(\mathbf s^*(\mathbf x_t,t)=\sum_iw_i(\mathbf x_t,t)\nabla_{\mathbf x_t}\log p_t(\mathbf x_t\mid\mathbf x_0^{(i)})\),條件 score 是顯式的 \(-\frac{\mathbf x_t-\alpha_t\mathbf x_0^{(i)}}{\sigma_t^2}\),所以
$$\mathbf s^*(\mathbf x_t,t)=-\frac1{\sigma_t^2}\Big(\mathbf x_t-\alpha_t\sum_{i=1}^Nw_i(\mathbf x_t,t)\,\mathbf x_0^{(i)}\Big).$$邊際 score 從雜訊樣本指向訓練樣本的後驗加權平均。
Flow-based 觀點。同樣的現象:\(\mathbf v^*(\mathbf x_t,t)=\sum_iw_i(\mathbf x_t,t)\,\mathbf v_t(\mathbf x_t\mid\mathbf x_0^{(i)})\),對應的條件速度有封閉形式
$$\mathbf v_t(\mathbf x_t\mid\mathbf x_0^{(i)})=\alpha_t'\mathbf x_0^{(i)}+\frac{\sigma_t'}{\sigma_t}\big(\mathbf x_t-\alpha_t\mathbf x_0^{(i)}\big).$$所以 oracle 速度也是對資料集的顯式後驗加權平均。合起來,在有限資料集上,三種 oracle 目標都化成封閉形式條件量的顯式後驗加權平均。
條件速度是 B13 命題的翻版
以 \(\mathbf x_0^{(i)}\) 為條件,\(\mathbf x_t\) 是平均 \(\alpha_t\mathbf x_0^{(i)}\)、標準差 \(\sigma_t\) 的高斯路徑。B13 的命題給 \(\mathbf v=\bm\mu'(t)+\frac{\sigma'(t)}{\sigma(t)}(\mathbf x-\bm\mu(t))\),代入 \(\bm\mu(t)=\alpha_t\mathbf x_0^{(i)}\) 就是上式。在配對樣本 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\) 上,它等於 \(\alpha_t'\mathbf x_0+\sigma_t'\bm\epsilon\)。
但實際訓練的 diffusion model 不一定實現這個 oracle:它是用有限的模型容量和有限的最佳化學出來的,生成的分佈還受到模型近似誤差和數值取樣誤差的影響。所以有限資料集的計算確立了「記憶是一個精確的經驗解」,但並不表示每個實際訓練的模型都必然會記住它的訓練集。
這個共同的條件化改寫並非巧合:它讓訓練變得可行,也揭示了深刻的統一。變分 diffusion、score-based SDE 和 flow matching 只是同一個原理的不同面向。三個觀點、一個洞見,優雅地連在一起。這一章接下來會繼續探討它們的等價。
Demo A完美的經驗 oracle 只會背資料轉述者補充
二維,8 個訓練點(藍色圓圈),典型線性時程 \(\mathbf x_t=(1-t)\mathbf x_0+t\bm\epsilon\)。用上面的經驗 oracle \(\mathbf x^*(\mathbf x_t,t)=\sum_iw_i\mathbf x_0^{(i)}\) 解 PF-ODE(這個時程下速度是 \(\frac{\mathbf x_t-\mathbf x^*}{t}\)),從 \(t=1\) 的 \(\mathcal N(\mathbf 0,\mathbf I)\) 倒著積分到 \(t=10^{-3}\)(200 步,時間格點等比)。橘色小點是 300 個生成樣本在時間 \(t\) 的位置,拖到 \(t=0\) 就是最後的生成結果;黑線是另一個樣本(從 \((0.3,-0.4)\) 出發)的完整軌跡。下面的長條是這個樣本在時間 \(t\) 的後驗權重 \(w_i\)。
把 \(t\) 從 1 慢慢拖到 0:\(t=1\) 時橘點是一團標準高斯;\(t=0.5\) 左右開始往訓練點聚集;\(t=0.2\) 時已經分成 8 小團,各自圍著一個訓練點;\(t=0\) 時全部落進圓圈中心。瀏覽器實測:300 個生成樣本到最近訓練點的距離,中位數 \(2.3\times10^{-3}\)、最大 \(5.4\times10^{-3}\)(剩下的距離來自積分停在 \(t=10^{-3}\) 和 Euler 誤差),沒有任何一個樣本是「新」的。8 個訓練點分到的樣本數是 37、34、33、33、36、52、46、29,大致均分(各 \(1/8\) 的期望是 37.5)。黑色軌跡上的點,後驗權重在 \(t=1\) 時是均勻的(有效個數 8.00),\(t=0.5\) 時有效個數 4.29,\(t=0.3\) 時已有 92.8% 集中在第 8 個訓練點,\(t\le0.1\) 時是 100%:雜訊一小,後驗就幾乎確定是哪一個訓練點,oracle 速度把樣本直接拉過去。這正是書的 Remark:完美的經驗 oracle 等於記憶。
04四種常見的參數化書 §6.2、§6.2.1
這一節建立 diffusion model 訓練損失的系統化觀點:先把標準的三個目標擴充成更廣的四種參數化,說明它們怎麼從不同的建模觀點產生;再把結果提煉成一個拆解 diffusion 目標結構的一般框架,為 §6.3(B16)的等價結果打基礎。
整節考慮前向擾動核 \(p_t(\mathbf x_t\mid\mathbf x_0)=\mathcal N(\mathbf x_t;\alpha_t\mathbf x_0,\sigma_t^2\mathbf I)\),\(\mathbf x_0\sim p_{\text{data}}\)(B10)。令 \(\omega:[0,T]\to\mathbb R_{>0}\) 是正的時間權重函數。四種標準參數化(雜訊 \(\bm\epsilon_{\bm\phi}\)、乾淨資料 \(\mathbf x_{\bm\phi}\)、score \(\mathbf s_{\bm\phi}\)、速度 \(\mathbf v_{\bm\phi}\))和它們的最小化解 \(\bm\epsilon^*\)、\(\mathbf x^*\)、\(\mathbf s^*\)、\(\mathbf v^*\) 整理如下。
變分觀點
從 DDPM 的 KL 散度出發(B04),化簡成預測「產生 \(\mathbf x_t\) 的平均雜訊」或「\(\mathbf x_t\) 從哪個乾淨訊號擾動而來的平均」。
- \(\bm\epsilon\)-prediction(預測雜訊;Ho et al. 2020):\(\bm\epsilon_{\bm\phi}(\mathbf x_t,t)\approx\mathbb E[\bm\epsilon\mid\mathbf x_t]=\bm\epsilon^*(\mathbf x_t,t)\),訓練目標 $$\mathcal L_{\text{noise}}(\bm\phi):=\mathbb E_t\Big[\omega(t)\,\mathbb E_{\mathbf x_0,\bm\epsilon}\big\Vert\bm\epsilon_{\bm\phi}(\mathbf x_t,t)-\bm\epsilon\big\Vert_2^2\Big].$$ \(\bm\epsilon^*\) 是「為了得到這個 \(\mathbf x_t\) 而注入的雜訊」的平均。
- \(\mathbf x\)-prediction(預測乾淨資料;Kingma et al. 2021、Karras et al. 2022、Song et al. 2023):\(\mathbf x_{\bm\phi}(\mathbf x_t,t)\approx\mathbb E[\mathbf x_0\mid\mathbf x_t]=\mathbf x^*(\mathbf x_t,t)\),訓練目標 $$\mathcal L_{\text{clean}}(\bm\phi):=\mathbb E_t\Big[\omega(t)\,\mathbb E_{\mathbf x_0,\bm\epsilon}\big\Vert\mathbf x_{\bm\phi}(\mathbf x_t,t)-\mathbf x_0\big\Vert_2^2\Big].$$ \(\mathbf x^*\) 是給定雜訊觀測 \(\mathbf x_t\) 時,所有合理的乾淨猜測的平均。
Score-based 觀點
預測雜訊等級 \(t\) 的 score,它指向「把 \(\mathbf x_t\) 去雜訊回所有可能產生它的乾淨樣本」的平均方向:
- Score prediction(Song & Ermon 2019;Song et al. 2020):\(\mathbf s_{\bm\phi}(\mathbf x_t,t)\approx\nabla_{\mathbf x_t}\log p_t(\mathbf x_t)=\mathbb E[\nabla_{\mathbf x_t}\log p_t(\mathbf x_t\mid\mathbf x_0)\mid\mathbf x_t]=\mathbf s^*(\mathbf x_t,t)\),訓練目標 $$\mathcal L_{\text{score}}(\bm\phi):=\mathbb E_t\Big[\omega(t)\,\mathbb E_{\mathbf x_0,\bm\epsilon}\big\Vert\mathbf s_{\bm\phi}(\mathbf x_t,t)-\nabla_{\mathbf x_t}\log p_t(\mathbf x_t\mid\mathbf x_0)\big\Vert_2^2\Big],$$ 其中條件 score 滿足 \(\nabla_{\mathbf x_t}\log p_t(\mathbf x_t\mid\mathbf x_0)=-\frac1{\sigma_t}\bm\epsilon\)。
Flow-based 觀點
預測資料通過 \(\mathbf x_t\) 時的瞬時平均速度:
- \(\mathbf v\)-prediction(預測速度;Lipman et al. 2022、Liu et al. 2022、Salimans & Ho、Albergo et al. 2023):\(\mathbf v_{\bm\phi}(\mathbf x_t,t)\approx\mathbb E\big[\frac{d\mathbf x_t}{dt}\,\big|\,\mathbf x_t\big]=\mathbf v^*(\mathbf x_t,t)\),訓練目標 $$\mathcal L_{\text{velocity}}(\bm\phi):=\mathbb E_t\Big[\omega(t)\,\mathbb E_{\mathbf x_0,\bm\epsilon}\big\Vert\mathbf v_{\bm\phi}(\mathbf x_t,t)-\mathbf v_t(\mathbf x_t\mid\mathbf x_0,\bm\epsilon)\big\Vert_2^2\Big],$$ 條件速度是 \(\mathbf v_t(\mathbf x_t\mid\mathbf x_0,\bm\epsilon)=\alpha_t'\mathbf x_0+\sigma_t'\bm\epsilon\)。\(\mathbf v^*\) 是通過觀測點 \(\mathbf x_t\) 的平均速度向量。
基於第 2 節的洞見,四種預測最終都在逼近同一種形式的條件期望:給定觀測到的 \(\mathbf x_t\),平均的雜訊、乾淨資料、score 或速度。
條件 score 為什麼是 \(-\bm\epsilon/\sigma_t\)
所以 score 和雜訊只差一個 \(-1/\sigma_t\):\(\mathbf s^*=-\bm\epsilon^*/\sigma_t\)。這就是為什麼 B06 說 DSM 等價於預測雜訊。
05拆解訓練目標:時程與參數化書 §6.2.2 (A)(B)
如第 4 節所示,四種預測的目標函數有一個共同的模板:
為了提升訓練效率、最佳化整個 diffusion 學習流程,有幾個關鍵的設計選擇(Karras et al. 2022;Lu & Song 2024):
- 前向過程 \(\mathbf x_t\) 的雜訊時程 \(\alpha_t\)、\(\sigma_t\);
- \(\mathrm{NN}_{\bm\phi}\) 的預測類型,以及它對應的回歸目標 \(A_t\mathbf x_0+B_t\bm\epsilon\);
- 時間權重函數 \(\omega(\cdot):[0,T]\to\mathbb R_{\ge0}\);
- 時間分佈 \(p_{\text{time}}\)。
轉述者注:書的列表把 (C) 寫成時間權重、(D) 寫成時間分佈,但接下來的段落標題是 (C) 時間分佈、(D) 時間權重,順序相反。本頁依段落標題的順序,在第 6 節先談時間分佈、再談權重;內容不受影響。
(A) 雜訊時程 \(\alpha_t\)、\(\sigma_t\)
使用者可以依應用選擇時程,常見的例子在 B13 的表裡。重要的是,§6.3(B16)會證明:所有形如 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\) 的仿射流在數學上等價。具體地說,任何這樣的插值都可以透過適當的時間重新參數化和空間縮放,轉成典型的線性時程(\(\alpha_t=1-t\)、\(\sigma_t=t\))或三角函數時程(\(\alpha_t=\cos t\)、\(\sigma_t=\sin t\))。
(B) 參數化 \(\mathrm{NN}_{\bm\phi}\) 與訓練目標 \(A_t\mathbf x_0+B_t\bm\epsilon\)
| 回歸目標 | \(A_t\) | \(B_t\) |
|---|---|---|
| 乾淨資料 | 1 | 0 |
| 雜訊 | 0 | 1 |
| 條件 score | 0 | \(-\frac1{\sigma_t}\) |
| 條件速度 | \(\alpha_t'\) | \(\sigma_t'\) |
擴散訓練裡常有兩個綁在一起的選擇:網路直接預測什麼量,和訓練損失比較的是哪個量。乾淨資料、雜訊、score、速度都可以用在任一個用途上。
預測和損失一致。常見的選擇(也是上面模板的寫法)是:網路輸出哪種預測,就直接用哪種預測訓練。每種預測都有對應的條件訓練目標 \(A_t\mathbf x_0+B_t\bm\epsilon\),\(A_t\)、\(B_t\) 依預測類型和前向時程 \((\alpha_t,\sigma_t)\) 而定,整理在上表。例如 \(\mathbf x\)-prediction 網路和乾淨目標 \(\mathbf x_0\) 比較,\(\mathbf v\)-prediction 網路和條件速度 \(\mathbf v_t=\alpha_t'\mathbf x_0+\sigma_t'\bm\epsilon\) 比較。B16 會證明四種預測編碼同樣的 oracle 資訊,可以互相轉換。
預測一種量、在另一種量上算損失。網路的輸出和損失使用的量也可以分開選:先用 B16 的換算關係把網路的預測轉過去,再對轉換後那種預測的目標算損失。例如在典型時程 \(\mathbf x_t=(1-t)\mathbf x_0+t\bm\epsilon\) 下,假設網路直接預測乾淨資料 \(\mathbf x_{\bm\phi}(\mathbf x_t,t)\)。把它換成速度:
$$\mathbf v_{\bm\phi}(\mathbf x_t,t)=\frac{\mathbf x_t-\mathbf x_{\bm\phi}(\mathbf x_t,t)}t,\qquad\text{而條件速度目標滿足}\qquad\mathbf v_t=\frac{\mathbf x_t-\mathbf x_0}t.$$所以
$$\big\Vert\mathbf v_{\bm\phi}(\mathbf x_t,t)-\mathbf v_t\big\Vert_2^2=\frac1{t^2}\big\Vert\mathbf x_{\bm\phi}(\mathbf x_t,t)-\mathbf x_0\big\Vert_2^2.$$也就是說,網路輸出固定為乾淨預測時,在速度上算損失恰好等於對乾淨預測損失多加一個隨時間變化的權重。一般仿射時程和其他預測類型的對應關係,在 B16 整理。
一般時程下的三個換算權重(轉述者整理,B16 會正式推導)
固定網路輸出乾淨預測 \(\hat{\mathbf x}=\mathbf x_{\bm\phi}(\mathbf x_t,t)\)。由 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\),把它換成其他三種預測,再和各自的目標比:
- 雜訊。\(\hat{\bm\epsilon}=\frac{\mathbf x_t-\alpha_t\hat{\mathbf x}}{\sigma_t}\),\(\bm\epsilon=\frac{\mathbf x_t-\alpha_t\mathbf x_0}{\sigma_t}\),所以 \(\Vert\hat{\bm\epsilon}-\bm\epsilon\Vert^2=\frac{\alpha_t^2}{\sigma_t^2}\Vert\hat{\mathbf x}-\mathbf x_0\Vert^2\):權重是訊號雜訊比 \(\mathrm{SNR}(t)=\alpha_t^2/\sigma_t^2\)。
- Score。\(\hat{\mathbf s}=-\hat{\bm\epsilon}/\sigma_t\),權重是 \(\frac{\alpha_t^2}{\sigma_t^4}\)。
- 速度。\(\hat{\mathbf v}=\alpha_t'\hat{\mathbf x}+\sigma_t'\hat{\bm\epsilon}=\big(\alpha_t'-\frac{\sigma_t'\alpha_t}{\sigma_t}\big)\hat{\mathbf x}+\frac{\sigma_t'}{\sigma_t}\mathbf x_t\),權重是 \(\big(\alpha_t'-\frac{\sigma_t'\alpha_t}{\sigma_t}\big)^2\)。線性時程下 \(\alpha_t'-\frac{\sigma_t'\alpha_t}{\sigma_t}=-1-\frac{1-t}t=-\frac1t\),還原書上的 \(1/t^2\)。
線性時程下三個權重分別是 \(\frac{(1-t)^2}{t^2}\)、\(\frac{(1-t)^2}{t^4}\)、\(\frac1{t^2}\)。它們在 \(t\to0\)(雜訊很小)時都爆大;在 \(t=1\)(純雜訊)時,雜訊和 score 的權重是 0,速度的權重是 1。Demo B 實際用這三種損失訓練同一個 \(\mathbf x\)-prediction 網路。
改變網路直接預測的量還有另一個效果。雖然 oracle 預測之間可以代數換算,有限的神經網路這時被訓練來表示一個不同的函數,輸出的尺度和參數梯度都不同。所以網路預測的選擇會和模型架構、最佳化互相影響;而損失的選擇也控制了不同雜訊等級之間預測誤差的相對權重。為了清楚,模板式除非另外說明,都指預測與損失一致的情形。
Demo B同一個網路,三種損失轉述者補充
一維資料 \(0.6\,\mathcal N(1.2,0.25^2)+0.4\,\mathcal N(-1,0.2^2)\),線性時程(diffusion 時鐘)。網路一律輸出乾淨預測 \(\hat x\)(兩層、每層 32 個神經元),訓練 2,000 步,\(t\) 均勻抽在 \([0.05,1]\)。三次訓練只差損失:直接比 \(\hat x\) 和 \(x_0\);換成雜訊再比(權重 \((1-t)^2/t^2\));換成速度再比(權重 \(1/t^2\))。為了讓三者的學習率可比,每種權重先除以它在 \([0.05,1]\) 上的平均(乘一個常數不改變目標的最小化解)。訓練後,在幾個 \(t\) 上量網路和精確 oracle \(x^*(x_t,t)\) 的均方誤差(對 \(p_t\) 積分)。
上圖是三種損失換算成 \(\hat x\) 誤差後的權重:在 \(t=0.05\),ε 損失和 v 損失的權重(除以平均後)分別約是 25 和 20,x 損失是 1;在 \(t=1\),ε 損失的權重是 0,v 損失還有 1(除以平均後約 0.05)。瀏覽器實測(和 Node 原型逐位相同;三個網路的純計算約 7 秒):
| t | 0.05 | 0.1 | 0.2 | 0.4 | 0.7 | 1 |
|---|---|---|---|---|---|---|
| x 損失 | 4.1e-3 | 1.5e-3 | 2.9e-3 | 1.0e-2 | 2.8e-3 | 3.3e-3 |
| ε 損失 | 1.4e-3 | 2.1e-3 | 3.8e-3 | 1.9e-2 | 2.5e-2 | 4.1e-1 |
| v 損失 | 1.0e-3 | 1.7e-3 | 2.7e-3 | 1.5e-2 | 8.4e-3 | 6.5e-3 |
同一個網路架構、同樣的資料和步數,只換了權重,誤差就照著權重重新分配:在 \(t=0.05\),ε 損失和 v 損失的誤差是 x 損失的三分之一到四分之一;在 \(t=0.7\)–\(1\),x 損失最好,而 ε 損失在 \(t=1\) 的誤差大了一百倍以上,因為那裡的權重是 0,網路根本沒被要求學好。v 損失介於兩者之間。中間 \(t=0.4\) 三者都比較差,是兩團資料剛開始分開、oracle 變化最劇烈的地方。換兩個初始化種子(3、7)在 Node 重跑,這幾個排序都不變:小 \(t\) 時 ε/v 損失比 x 損失好 3–10 倍,\(t=1\) 時 ε 損失差 30–100 倍。這就是書說的「損失的選擇控制了不同雜訊等級之間預測誤差的相對權重」。
06拆解訓練目標:時間分佈與權重書 §6.2.2 (C)(D)
(C) 時間分佈 \(p_{\text{time}}(t)\)
接著看訓練時怎麼抽時間 \(t\),也就是雜訊等級。為了方便,定義固定時間的回歸損失
$$\mathcal L_t(\bm\phi):=\mathbb E_{\mathbf x_0,\bm\epsilon}\Big[\big\Vert\mathrm{NN}_{\bm\phi}(\mathbf x_t,t)-(A_t\mathbf x_0+B_t\bm\epsilon)\big\Vert_2^2\Big],\qquad\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon.$$模板式就可以精簡地寫成 \(\mathcal L(\bm\phi)=\mathbb E_{t\sim p_{\text{time}}}\big[\omega(t)\mathcal L_t(\bm\phi)\big]\)。所以如果不做任何修正,更常抽到某些時間,也就給了它們更多權重。在精確的期望損失層級,只有乘積 \(p_{\text{time}}(t)\,\omega(t)\) 有意義。
非均勻抽樣的另一個用途是重要性抽樣。假設上面的目標固定,但改從一個提議分佈 \(q_{\text{time}}(t)\) 抽時間,則
$$\mathcal L(\bm\phi)=\mathbb E_{t\sim q_{\text{time}}}\Big[\frac{p_{\text{time}}(t)}{q_{\text{time}}(t)}\,\omega(t)\,\mathcal L_t(\bm\phi)\Big],$$只要在 \(p_{\text{time}}(t)\omega(t)>0\) 的地方 \(q_{\text{time}}(t)>0\)。有了這個修正,改變 \(q_{\text{time}}\) 不改變目標,只改變它的 Monte Carlo 估計量,例如估計量的變異數。關鍵的區別是:
| 改變目標裡的 \(p_{\text{time}}\) | ⟹ 不同的權重,不同的目標 |
| 改變 \(q_{\text{time}}\) \(+\) 重要性修正 | ⟹ 同一個目標,不同的估計量 |
所以書把時間抽樣和損失權重在概念上分開。均勻的時間抽樣讓這個區別不明顯,因為它的密度只貢獻一個常數因子;用非均勻抽樣時,就必須說清楚抽樣分佈是在定義目標,還是只是重要性抽樣的提議分佈。
兩種用法在 diffusion 訓練裡都出現過。ScoreFlow 明確地用重要性抽樣降低一個固定的概似加權目標的變異數(Song et al. 2021)。VDM 和後續的分析同樣顯示:當目標在雜訊等級的座標下固定時,雜訊時程可以扮演重要性抽樣分佈的角色(Kingma et al. 2021;Kingma & Gao 2023)。相對地,EDM(Karras et al. 2022)同時指定了一個雜訊等級上的非均勻訓練分佈和另外一個損失權重,兩者的組合決定有效的訓練權重。
重要性抽樣那一行
把期望寫成積分再乘除 \(q_{\text{time}}\):\(\int p_{\text{time}}(t)\,\omega(t)\mathcal L_t\,dt=\int q_{\text{time}}(t)\,\Big[\frac{p_{\text{time}}(t)}{q_{\text{time}}(t)}\omega(t)\mathcal L_t\Big]dt\)。在 \(q=0\) 但 \(p\omega>0\) 的地方,右邊會漏掉一塊,所以需要支撐條件。估計量的變異數取決於 \(q\):當 \(q_{\text{time}}\propto p_{\text{time}}\,\omega\,\mathcal L_t\) 時,括號裡的量變成常數,變異數是 0;實務上用近似。
(D) 時間權重函數 \(\omega(t)\)
對固定的 \(p_{\text{time}}\),權重函數 \(\omega(t)\) 決定不同時間對訓練目標的相對貢獻;配合上一段,時間上的有效權重是 \(p_{\text{time}}(t)\omega(t)\)。
簡單的基準是均勻抽時間、\(\omega(t)\equiv1\),例如標準的簡化 \(\bm\epsilon\)-prediction 目標和 FM/RF 目標(Ho et al. 2020;Lipman et al. 2022;Liu et al. 2022)。其他權重強調不同的雜訊區段,也可以帶有概似或變分的解讀。例如,對 score matching 目標,概似權重 \(\omega(t)=g^2(t)\) 在適當的正則條件下給出負對數概似的上界(Song et al. 2021)。更一般地,依賴 SNR 的權重是在不同雜訊等級之間重新分配訓練重點的常見做法(Kingma et al. 2021;Kingma & Gao 2023)。
單調權重與「加了增強的 ELBO」觀點
描述破壞程度的一個好用量是對數訊號雜訊比(log-SNR)
$$\Lambda_t:=\log\frac{\alpha_t^2}{\sigma_t^2}.$$書用 \(\Lambda\) 表示完整的 log-SNR,和第 9 章(B24–B27)要用的半 log-SNR 座標 \(\lambda_t=\log(\alpha_t/\sigma_t)=\tfrac12\Lambda_t\) 區分。因為前向過程越來越吵時 \(\Lambda_t\) 遞減,把損失寫成一個共同的預測參數化之後,令 \(w(\Lambda)\) 表示分配給每個 log-SNR 等級的有效權重。
Kingma & Gao (2023) 的一個有用結果是:如果 \(w(\Lambda)\) 對 \(\Lambda\) 是非遞增的(等價地,前向過程越吵,權重不減),那麼加權的 diffusion 目標可以(除了和模型參數無關的項)改寫成「高斯擾動過的資料」上負 ELBO 的平均。
為什麼單調性要緊(書的腳註,展開)
定義從雜訊等級 \(t\) 起剩下的變分成本
$$L(t;\mathbf x_0):=\mathcal D_{\text{KL}}\big(p(\mathbf x_{[t,T]}\mid\mathbf x_0)\,\Vert\,p_{\bm\phi}(\mathbf x_{[t,T]})\big),$$\(\mathbf x_{[t,T]}:=\{\mathbf x_s\}_{s\in[t,T]}\) 是剩下的連續 diffusion 路徑。它是 B04 負 ELBO 從破壞等級 \(t\) 起算的連續時間版本;更精確地說,它等於擾動樣本 \(\mathbf x_t\) 的期望負 ELBO,差一個和 \(\bm\phi\) 無關的項。對 \(\bm\epsilon\)-prediction,Kingma & Gao (2023) 證明
$$\frac{d}{dt}L(t;\mathbf x_0)=\frac12\frac{d\Lambda_t}{dt}\,\mathbb E_{\bm\epsilon}\Big[\big\Vert\bm\epsilon_{\bm\phi}(\mathbf x_t,t)-\bm\epsilon\big\Vert_2^2\Big].$$因為 \(\Lambda_t\) 遞減,右邊 \(\le0\):起點越晚,剩下的成本越少。加權的 diffusion 損失(\(w\) 加在每個 log-SNR 等級上的 \(\bm\epsilon\) 損失)因此是 \(-\int_0^Tw(\Lambda_t)\frac{d}{dt}L(t;\mathbf x_0)\,dt\)。分部積分:
$$-\int_0^Tw(\Lambda_t)\,\frac{dL}{dt}\,dt=-\Big[w(\Lambda_t)L(t;\mathbf x_0)\Big]_0^T+\int_0^T\frac{d}{dt}w(\Lambda_t)\,L(t;\mathbf x_0)\,dt=w(\Lambda_0)L(0;\mathbf x_0)+\int_0^T\frac{d}{dt}w(\Lambda_t)\,L(t;\mathbf x_0)\,dt+C,$$其中 \(C=-w(\Lambda_T)L(T;\mathbf x_0)\);\(L(T;\mathbf x_0)\) 只剩終點的先驗匹配項,和 \(\bm\phi\) 無關。如果 \(w(\Lambda)\) 對 \(\Lambda\) 非遞增,因為 \(\Lambda_t\) 隨 \(t\) 遞減,\(\frac{d}{dt}w(\Lambda_t)=w'(\Lambda_t)\frac{d\Lambda_t}{dt}\ge0\)。所以正規化之後,上式是不同高斯破壞等級的 ELBO 的一個非負加權平均:這就是「加了高斯增強的 ELBO」的解讀。若 \(w\) 不單調,某些 \(\frac{d}{dt}w\) 會是負的,這個解讀就不成立。
所以單調權重有具體的機率解讀:它不只是強調某些雜訊等級,而可以看成對不同破壞強度下的高斯破壞資料做變分訓練的平均。
結論。就本書的目的,主要的教訓是:diffusion 訓練裡許多表面上的設計選擇,都可以從「它們怎麼重新塑造目標在雜訊等級上的有效權重」來理解。這個權重又影響實務上的最佳化地形,並在單調權重這類特例裡,影響損失的變分解讀。
07(選讀)EDM 的網路參數化書 附錄 D.6
這一節介紹 Elucidating Diffusion Models(EDM;Karras et al. 2022)為 \(\mathbf x\)-prediction 模型提出的網路參數化準則。EDM 提供一個簡單的配方,讓訓練更容易最佳化、更可靠:把 \(\mathbf x\)-prediction 模型寫成隨時間變化的跳接(skip connection)加上縮放過的殘差;核心想法是讓輸入和回歸目標在每個時間都正規化成單位變異數,並調整跳接路徑,使殘差的誤差不會隨時間被放大。這個配方已經成為 diffusion 實作裡廣泛採用的預設,也自然地延伸到 flow map 的學習,特別是 Consistency Model 家族(第 11 章)。
網路 \(\mathbf x_{\bm\phi}\) 的設計準則
EDM 考慮如下形式的 \(\mathbf x\)-prediction 參數化(書的腳註:四種預測都等價、都可以化成 \(\mathbf x\)-prediction;EDM 採用這個寫法,它研究得很透徹,也自然對齊 flow map 模型「產生乾淨樣本」的目標):
\(c_{\text{skip}}\)、\(c_{\text{out}}\)、\(c_{\text{in}}\)、\(c_{\text{noise}}\) 是隨時間變化的函數,依下面的實務考量選擇,以提升訓練的穩定性與表現。代入 \(\mathbf x\)-prediction 的模板損失,經過簡單的代數,目標變成
$$\mathbb E_{\mathbf x_0,\bm\epsilon,t}\Big[\omega(t)\,c_{\text{out}}^2(t)\,\big\Vert\mathbf F_{\bm\phi}\big(c_{\text{in}}(t)\mathbf x_t,c_{\text{noise}}(t)\big)-\mathbf x_{\text{tgt}}(t)\big\Vert_2^2\Big],\qquad\mathbf x_{\text{tgt}}(t)=\frac{\big(1-c_{\text{skip}}(t)\alpha_t\big)\mathbf x_0-c_{\text{skip}}(t)\sigma_t\bm\epsilon}{c_{\text{out}}(t)}.$$那個「簡單的代數」(書的腳註)
也就是把 \(\mathbf x_0-c_{\text{skip}}\mathbf x_t\)(網路的殘差要補的部分)除以 \(c_{\text{out}}\),當成 \(\mathbf F_{\bm\phi}\) 真正的回歸目標。
加入 \(p_{\text{data}}\) 的標準差 \(\sigma_{\text d}\),EDM 提出下面的設計準則,可以稱為單位變異數準則。
輸入的變異數為 1。
$$\mathrm{Var}_{\mathbf x_0,\bm\epsilon}\big[c_{\text{in}}(t)\mathbf x_t\big]=1\iff c_{\text{in}}^2(t)\,\mathrm{Var}\big[\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\big]=1\iff c_{\text{in}}(t)=\frac1{\sqrt{\sigma_{\text d}^2\alpha_t^2+\sigma_t^2}}\quad(\text{取正根}).$$訓練目標的變異數為 1。假設資料置中(\(\mathbb E[\mathbf x_0]=\mathbf 0\)),
$$\mathrm{Var}\big[\mathbf x_{\text{tgt}}(t)\big]=1\iff c_{\text{out}}^2(t)=\big(1-c_{\text{skip}}(t)\alpha_t\big)^2\sigma_{\text d}^2+c_{\text{skip}}^2(t)\,\sigma_t^2.$$讓 \(\mathbf F_{\bm\phi}\) 到 \(\mathbf x_{\bm\phi}\) 的誤差放大最小。EDM 想降低網路的學習誤差從 \(\mathbf F_{\bm\phi}\) 傳到 \(\mathbf x_{\bm\phi}\) 時被放大的程度:\(\mathbf F_{\bm\phi}\) 的誤差會乘上 \(c_{\text{out}}\),所以選 \(c_{\text{skip}}\) 讓 \(c_{\text{out}}\) 最小:\(c_{\text{skip}}^*\in\arg\min_{c_{\text{skip}}}c_{\text{out}}^2\)。解 \(\partial c_{\text{out}}/\partial c_{\text{skip}}=0\) 得到
$$c_{\text{skip}}^*(t)=\frac{\alpha_t\sigma_{\text d}^2}{\alpha_t^2\sigma_{\text d}^2+\sigma_t^2},\qquad c_{\text{out}}^*(t)=\pm\frac{\sigma_t\sigma_{\text d}}{\sqrt{\alpha_t^2\sigma_{\text d}^2+\sigma_t^2}}.$$依慣例取非負的分支 \(c_{\text{out}}^*\ge0\),保證 \(c_{\text{out}}(0)=0\),而 \(\sigma_t\) 夠大時 \(c_{\text{out}}(t)\to\sigma_{\text d}\),得到直覺的極限 \(\mathbf x_{\bm\phi}(\mathbf x_t,0)\approx\mathbf x_t\)、\(\mathbf x_{\bm\phi}(\mathbf x_t,t)\approx\sigma_{\text d}\mathbf F_{\bm\phi}(\cdot)\)。
\(c_{\text{in}}\)、\(c_{\text{skip}}^*\)、\(c_{\text{out}}^*\) 的推導
輸入。\(\mathbf x_0\) 的每個座標變異數是 \(\sigma_{\text d}^2\),和 \(\bm\epsilon\) 獨立,所以 \(\mathrm{Var}[\alpha_t\mathbf x_0+\sigma_t\bm\epsilon]=\alpha_t^2\sigma_{\text d}^2+\sigma_t^2=:R_t\)。
目標。\(\mathrm{Var}[(1-c\alpha_t)\mathbf x_0-c\sigma_t\bm\epsilon]=(1-c\alpha_t)^2\sigma_{\text d}^2+c^2\sigma_t^2\),要它等於 \(c_{\text{out}}^2\)。
最小化。對 \(c\) 微分:\(-2\alpha_t(1-c\alpha_t)\sigma_{\text d}^2+2c\sigma_t^2=0\Rightarrow c=\frac{\alpha_t\sigma_{\text d}^2}{\alpha_t^2\sigma_{\text d}^2+\sigma_t^2}=\frac{\alpha_t\sigma_{\text d}^2}{R_t}\)(二次式開口向上,所以是最小值)。代回:\(1-c\alpha_t=\frac{\sigma_t^2}{R_t}\),
$$c_{\text{out}}^2=\frac{\sigma_t^4\sigma_{\text d}^2}{R_t^2}+\frac{\alpha_t^2\sigma_{\text d}^4\sigma_t^2}{R_t^2}=\frac{\sigma_t^2\sigma_{\text d}^2(\sigma_t^2+\alpha_t^2\sigma_{\text d}^2)}{R_t^2}=\frac{\sigma_t^2\sigma_{\text d}^2}{R_t}.$$直覺:\(c_{\text{skip}}^*\mathbf x_t\) 正是 \(\mathbf x_0\) 在 \(\mathbf x_t\) 上的最佳線性預測(\(\mathbf x_0\) 若是高斯,就是精確的 \(\mathbb E[\mathbf x_0\mid\mathbf x_t]\)),\(c_{\text{out}}^{*2}\) 是那個線性預測剩下的誤差變異數。網路只需要學線性預測做不到的部分,而且這部分被正規化成單位變異數。
選 \(c_{\text{noise}}(t)\)。它提供給 \(\mathbf F_{\bm\phi}\) 一個雜訊等級的嵌入;任何雜訊等級 \(\sigma_t\) 的一對一映射都可以,例如 \(c_{\text{noise}}(t)=\log\sigma_t\)。
常見的 EDM 特例:\(\alpha_t=1\)、\(\sigma_t=t\)
EDM 用的簡化時程 \(\alpha_t=1\)、\(\sigma_t=t\)(第 11 章的 CTM 也會用到)。前向過程是 \(\mathbf x_t=\mathbf x_0+t\bm\epsilon\),擾動核 \(p_t(\mathbf x_t\mid\mathbf x_0)=\mathcal N(\mathbf x_t;\mathbf x_0,t^2\mathbf I)\),邊際密度是 \(p_t=p_{\text{data}}*\mathcal N(\mathbf 0,t^2\mathbf I)\)。所以精確的終端邊際是 \(p_T=p_{\text{data}}*\mathcal N(\mathbf 0,T^2\mathbf I)\);\(T\) 相對資料尺度夠大時,常用 \(p_{\text{prior}}(\mathbf x_T):=\mathcal N(\mathbf x_T;\mathbf 0,T^2\mathbf I)\) 近似它,當成取樣的先驗。
這時用 \(\mathbf x\)-prediction \(\mathbf x_{\bm\phi^\times}\) 寫的 PF-ODE(B16 會推一般形式)化簡成
$$\frac{d\mathbf x(t)}{dt}=\frac{\mathbf x(t)-\mathbf x_{\bm\phi^\times}(\mathbf x(t),t)}t,$$參數化的係數變成
$$c_{\text{in}}(t)=\frac1{\sqrt{\sigma_{\text d}^2+t^2}},\qquad c_{\text{skip}}(t)=\frac{\sigma_{\text d}^2}{\sigma_{\text d}^2+t^2},\qquad c_{\text{out}}(t)=\pm\frac{t\,\sigma_{\text d}}{\sqrt{\sigma_{\text d}^2+t^2}}.$$- \(t\approx0\) 時,雜訊可以忽略,\(c_{\text{skip}}\approx1\)、\(c_{\text{out}}\approx0\):跳接主導,網路基本上直接輸出輸入,\(\mathbf x_{\bm\phi}(\mathbf x,t)\approx\mathbf x\)。
- \(t\gg0\) 時,輸入被雜訊嚴重破壞,\(c_{\text{skip}}\approx0\)、\(c_{\text{out}}\approx\sigma_{\text d}\):跳接消失,輸出完全由學到的殘差決定,\(\mathbf x_{\bm\phi}(\mathbf x,t)\approx\sigma_{\text d}\mathbf F_{\bm\phi}(c_{\text{in}}(t)\mathbf x,c_{\text{noise}}(t))\)。網路從正規化過的雜訊輸入預測乾淨訊號的一個縮放代理;高雜訊時,模型的輸出完全由學到的去雜訊函數決定。
簡言之,這個參數化在小 \(t\) 時是恆等映射,在大 \(t\) 時平滑地變成對標準化輸入的縮放殘差預測器。
PF-ODE 那一行從哪來
\(\alpha_t=1\)、\(\sigma_t=t\) 時,條件速度是 \(\alpha_t'\mathbf x_0+\sigma_t'\bm\epsilon=\bm\epsilon=\frac{\mathbf x_t-\mathbf x_0}t\)。對 \(\mathbf x_0\) 取後驗平均就是 PF-ODE 的速度 \(\frac{\mathbf x_t-\mathbb E[\mathbf x_0\mid\mathbf x_t]}t\),再用 \(\mathbf x_{\bm\phi^\times}\) 代替 \(\mathbb E[\mathbf x_0\mid\mathbf x_t]\)。這和 Demo A 用的線性時程速度 \(\frac{\mathbf x_t-\mathbf x^*}t\) 形式完全相同。
Demo CEDM 的單位變異數,用樣本驗證轉述者補充
資料是置中後的 \(0.6\,\mathcal N(1.2,0.25^2)+0.4\,\mathcal N(-1,0.2^2)\)(減去平均 0.32),\(\sigma_{\text d}\) 用精確值 \(\approx1.102\);時程是 EDM 的 \(\alpha_t=1\)、\(\sigma_t=t\)。上圖是三個係數隨 \(\sigma=t\) 的變化(橫軸是 \(\log_{10}\sigma\))。拖動 \(\sigma\):讀數用 20,000 對 \((\mathbf x_0,\bm\epsilon)\) 量網路的輸入 \(c_{\text{in}}\mathbf x_t\) 和回歸目標 \(\mathbf x_{\text{tgt}}\) 的變異數,並比較三種跳接選擇下的 \(c_{\text{out}}\)(網路誤差被放大的倍數)。
瀏覽器實測:在 \(\sigma=0.01,0.1,1,3.16,10,79.4\) 六個位置,輸入和目標的樣本變異數都在 0.990–1.015 之間,兩個單位變異數條件都成立(偏差是 20,000 個樣本的抽樣誤差)。三種跳接的比較最有啟發性:小雜訊(\(\sigma=0.1\))時,EDM 和純殘差的 \(c_{\text{out}}\) 都是 0.100,而直接預測 \(\mathbf x\) 是 1.102,網路的誤差會被放大十倍;大雜訊(\(\sigma=10\))時,EDM 是 1.096、直接預測 \(\mathbf x\) 是 1.102,純殘差卻是 10.0。EDM 在每個 \(\sigma\) 都不比另外兩者差,在 \(\sigma=1\) 附近(0.741,另外兩者是 1.000 和 1.102)兩者都贏。\(\sigma=\sigma_{\text d}\) 時 \(c_{\text{skip}}\) 恰好是 \(\tfrac12\):雜訊和訊號一樣大時,跳接只負責一半,其餘交給網路。