換個寫法,還是同一件事:四種預測與所有仿射流的等價
B15 把訓練目標拆成時程、參數化、時間分佈和權重。這一頁回答前兩個選擇到底差多少。在 oracle 層級:雜訊、乾淨資料、score、速度四種預測彼此可以代數換算;PF-ODE 可以寫成五種等價的形式;任何仿射時程 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\) 都只是典型線性路徑換了時鐘、乘了一個尺度。但書反覆強調:等價的是 oracle 的資訊,不是有限神經網路的行為。選讀的最後一節說明線性時程配 \(\mathbf v\)-prediction 有哪些好處,以及它在哪個意義下不是最佳的。
讀完這頁你應該能夠
- 說出書區分的四種「等價」:預測、訓練目標、仿射前向過程、邊際密度路徑。
- 寫出 \(\bm\epsilon^*\)、\(\mathbf x^*\)、\(\mathbf s^*\)、\(\mathbf v^*\) 之間的換算,並從 Tweedie 公式推出來。
- 把 PF-ODE 寫成雜訊、乾淨資料、score、速度四種參數化,並和 Score SDE 的 \(f(t)\mathbf x-\frac12g^2(t)\mathbf s\) 對上。
- 用 \(c(t)=\alpha_t+\sigma_t\)、\(\tau(t)=\sigma_t/(\alpha_t+\sigma_t)\) 把任何仿射路徑寫成典型路徑的縮放加換時鐘;也能換成三角函數路徑。
- 算出四種損失之間差的時間權重。
- (選讀)說明線性時程讓條件速度的尺度固定、讓條件動能最小,但不一定讓邊際動能最小;並說明 \(\mathbf v\)-prediction 在取樣上為什麼直接。
前置知識
- B15:四種預測的定義與條件回歸目標、訓練模板、「預測一種量、在另一種量算損失」等於換權重。
- B06:Tweedie 公式 \(\alpha_t\mathbb E[\mathbf x_0\mid\mathbf x_t]=\mathbf x_t+\sigma_t^2\nabla\log p_t(\mathbf x_t)\);B10:從 \(\alpha_t,\sigma_t\) 推 \(f,g\) 的 Lemma。
- B13:插值時程表(VE、VP、FM/RF、三角函數);B12:PF-ODE 的速度場。
「書 §」標出原文位置。灰框「轉述者補充」是書裡沒有的內容;藍框「推導」展開書中省略的步驟或附錄 D 的證明。
01「等價」有四種意思書 §6.3
許多 diffusion model 的表述看起來不同,是因為它們用了不同的預測類型、訓練目標、雜訊時程,或不同的連續時間動態。這一節釐清:在精確的理論層級,這些表述在什麼確切的意義下等價;以及對學出來的模型,它們的行為為什麼仍然可能不同。在精確(oracle)層級會出現幾種等價:
- 預測。給定雜訊觀測 \(\mathbf x_t\) 和前向時程,乾淨資料、雜訊、score、速度四種 oracle 含有相同的資訊,可以代數地互相換算。
- 訓練目標。用不同預測類型寫的平方誤差目標,可以只差一個正的、隨時間變化的因子,同時共享同一個逐點的 oracle 最小化解。這些因子決定訓練時不同雜訊等級被加權的程度。
- 仿射前向過程。在粒子層級,仿射前向過程 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\) 可以透過狀態的縮放和一個對應的典型座標,連到典型的仿射形式。這個座標隨時間單調演化時,這個關係也定義了一個時間的重新參數化。
- 邊際密度路徑。在密度層級,不同的確定性和隨機動態可以產生同一條邊際路徑 \(\{p_t\}_{t\in[0,T]}\)。它們的樣本軌跡可能不同,而 \(p_t\) 的演化由對應的連續方程或 Fokker–Planck 方程支配(這一點留給 B17)。
書從預測一路講到取樣:第 2 節連起四種 oracle 預測和它們的訓練損失;第 3 節說明這些預測怎麼給出同一個 oracle PF-ODE 的不同寫法;第 4 節把仿射機率路徑連到典型的線性和三角函數形式;最後第 5 節(選讀)對典型線性時程和速度預測提供更多直覺,包括它們對訓練和數值積分的影響。
這些精確的關係提供共同的數學基礎,但實務上的選擇仍然有意義:有限的神經網路可能以不同的方式逼近等價的 oracle 量,而損失權重、最佳化、模型架構和數值積分都可能導致不同的訓練和取樣行為。
02四種預測類型是等價的書 §6.3.1
先分析 B15 模板裡的設計選擇 (B)。我們已經看過,四種預測類型不是獨立的選擇,而是同一個底層量的不同視角:例如雜訊預測和乾淨預測直接相關(B04),score 預測和雜訊預測也是(B07)。這個反覆出現的模式指向一個更深的原則:四種參數化在代數上等價,可以透過簡單的變換互相轉換。依照 Kingma et al. (2021),書把它寫成下面的命題。
證明(書的附錄 D.4)
和 DSM 最小化解的定理(B09)一樣,\(\mathbb E_t[\omega(t)\,\mathbb E_{\mathbf x_0,\bm\epsilon}\Vert\cdot\Vert^2]\) 的全域最佳解,在每個固定的 \(t\) 讓內層的期望最小時達到。這是標準的均方誤差問題,最小化解唯一,就是目標的條件期望。
Score 與雜訊。DSM(Vincent 2011;B06)給出 \(\mathbf s^*(\mathbf x_t,t)=\mathbb E_{p(\mathbf x_0\mid\mathbf x_t)}[\nabla_{\mathbf x}\log p_t(\mathbf x_t\mid\mathbf x_0)]=\nabla_{\mathbf x_t}\log p_t(\mathbf x_t)\)。用 \(\nabla_{\mathbf x}\log p_t(\mathbf x_t\mid\mathbf x_0)=-\bm\epsilon/\sigma_t\),得 \(\mathbf s^*=-\frac1{\sigma_t}\bm\epsilon^*\),其中 \(\bm\epsilon^*=\mathbb E[\bm\epsilon\mid\mathbf x_t]\) 是 \(\mathcal L_{\text{noise}}\) 的最佳解。
乾淨資料與 score。\(\mathcal L_{\text{clean}}\) 的最佳估計是 \(\mathbf x^*=\mathbb E[\mathbf x_0\mid\mathbf x_t]\),由 Tweedie 公式,\(\alpha_t\mathbf x^*(\mathbf x_t,t)=\mathbf x_t+\sigma_t^2\mathbf s^*(\mathbf x_t,t)\)。
速度。\(\mathcal L_{\text{velocity}}\) 的最佳估計是 \(\mathbf v^*=\mathbb E[\alpha_t'\mathbf x_0+\sigma_t'\bm\epsilon\mid\mathbf x_t]=\alpha_t'\mathbf x^*+\sigma_t'\bm\epsilon^*\)。代入前兩式:
$$\mathbf v^*=\frac{\alpha_t'}{\alpha_t}\mathbf x_t+\Big(\frac{\alpha_t'}{\alpha_t}\sigma_t^2-\sigma_t\sigma_t'\Big)\mathbf s^*=f(t)\mathbf x_t-\frac12g^2(t)\,\mathbf s^*,$$最後一步用 B10 Lemma 的 \(f=\alpha_t'/\alpha_t\)、\(g^2=2\sigma_t\sigma_t'-2\frac{\alpha_t'}{\alpha_t}\sigma_t^2\)。∎
Tweedie 公式的一行版本,和 \(\mathbf x_t=\alpha_t\mathbf x^*+\sigma_t\bm\epsilon^*\)
對 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\) 兩邊取 \(\mathbb E[\cdot\mid\mathbf x_t]\):左邊不變,所以 \(\mathbf x_t=\alpha_t\mathbf x^*+\sigma_t\bm\epsilon^*\)。再代入 \(\bm\epsilon^*=-\sigma_t\mathbf s^*\),就是 Tweedie:\(\mathbf x_t=\alpha_t\mathbf x^*-\sigma_t^2\mathbf s^*\)。所以四種 oracle 只有兩個自由度:\(\mathbf x^*\) 和 \(\bm\epsilon^*\) 由一條線性關係綁在一起,score 是 \(\bm\epsilon^*\) 的縮放,速度是兩者的線性組合。
這個命題最自然的理解是 oracle 資訊的等價。在任何雜訊等級,知道一個 oracle 預測,再加上雜訊觀測 \(\mathbf x_t\) 和前向時程,就透過上面的等式決定了其他三個。例如 score 決定後驗平均的乾淨預測,而這兩者任一個都決定 PF-ODE 的速度。所以在 oracle 層級,這些參數化包含關於底層 diffusion 過程的相同資訊。
但對一個學出來的模型,必須區分這個 oracle 等價和神經網路直接預測的量。網路的輸出可以選 \(\bm\epsilon_{\bm\phi}\)、\(\mathbf x_{\bm\phi}\)、\(\mathbf s_{\bm\phi}\)、\(\mathbf v_{\bm\phi}\) 任何一種;選定一種當主要的預測之後,其他的就用同樣的代數換算來定義。特別是,對參數為 \(\bm\phi^\times\) 的訓練好的模型,這些換算出來的預測依建構就完全一致,例如 \(\mathbf x=\alpha_t\mathbf x_{\bm\phi^\times}(\mathbf x,t)+\sigma_t\bm\epsilon_{\bm\phi^\times}(\mathbf x,t)\)。這些換算在訓練中和訓練後都有用:例如雜訊預測可以換成 score 用在反向 SDE 取樣,或換成速度用在 PF-ODE 取樣。
網路的預測參數化也要和訓練損失區分。如 B15 的 (B) 所說,網路輸出的量不一定是算損失的量:預測可以先換成另一種參數化再算目標。這種換算一般會讓平方誤差目標多一個隨時間變化的權重(第 4 節的式子)。
這些區分對有限的神經網路很重要。雖然 oracle 目標在資訊上等價,直接預測不同的量會讓網路表示和最佳化不同的函數,對應的目標也可能用不同的方式加權雜訊等級。因此,在不同預測參數化下分別訓練的模型,不必產生相同的經驗預測或相同的 PF-ODE。這個命題的等價說的是理想 oracle 預測攜帶的資訊;網路輸出的參數化和訓練目標,仍然是各自獨立、有意義的設計選擇。
03不同參數化下的 PF-ODE書 §6.3.2
PF-ODE 有幾種等價的參數化(score、雜訊、去雜訊、速度)。原則上可以互換,但選擇有實務後果:它改變向量場的剛性(stiffness)、離散化誤差的行為和最佳化的難易。用進階的 ODE 解法快速取樣時(第 9 章,B24–B27),實務上常用 \(\bm\epsilon\) 或 \(\mathbf x\) 預測,因為它們和解法的輸入對得很好,能減少誤差累積。訓練只用很少次函數評估的生成器時(第 11 章,B29–B31),\(\mathbf x\) 或 \(\mathbf v\) 預測常給出更平滑的目標和更好的逐步一致性。
下面用第 2 節的換算,把每種參數化下的 PF-ODE 寫出來:
五行之間怎麼互換
從第四行 \(\alpha_t'\mathbf x^*+\sigma_t'\bm\epsilon^*\) 出發,用 \(\mathbf x_t=\alpha_t\mathbf x^*+\sigma_t\bm\epsilon^*\) 消去其中一個:
- 消去 \(\mathbf x^*\)(\(\mathbf x^*=(\mathbf x_t-\sigma_t\bm\epsilon^*)/\alpha_t\)):\(\frac{\alpha_t'}{\alpha_t}\mathbf x_t+\big(\sigma_t'-\frac{\alpha_t'\sigma_t}{\alpha_t}\big)\bm\epsilon^*=\frac{\alpha_t'}{\alpha_t}\mathbf x_t-\sigma_t\big(\frac{\alpha_t'}{\alpha_t}-\frac{\sigma_t'}{\sigma_t}\big)\bm\epsilon^*\),第一行。
- 消去 \(\bm\epsilon^*\)(\(\bm\epsilon^*=(\mathbf x_t-\alpha_t\mathbf x^*)/\sigma_t\)):\(\frac{\sigma_t'}{\sigma_t}\mathbf x_t+\big(\alpha_t'-\frac{\sigma_t'\alpha_t}{\sigma_t}\big)\mathbf x^*=\frac{\sigma_t'}{\sigma_t}\mathbf x_t+\alpha_t\big(\frac{\alpha_t'}{\alpha_t}-\frac{\sigma_t'}{\sigma_t}\big)\mathbf x^*\),第二行。
- score:第一行代入 \(\bm\epsilon^*=-\sigma_t\mathbf s^*\),第三行。
三個「有 oracle 的」形式都是「已知的線性項 \(L(t)\mathbf x\) + 網路項」,只是 \(L(t)\) 不同(\(\frac{\alpha_t'}{\alpha_t}\) 或 \(\frac{\sigma_t'}{\sigma_t}\))。第 5 節的 Perspective 2 會用到這個結構。
為了看到 Score SDE 的記號,回想 B10 的 Lemma。令
$$f(t)=\frac{\alpha_t'}{\alpha_t},\qquad g^2(t)=\frac{d}{dt}\big(\sigma_t^2\big)-2\frac{\alpha_t'}{\alpha_t}\sigma_t^2=2\sigma_t\sigma_t'-2\frac{\alpha_t'}{\alpha_t}\sigma_t^2,$$PF-ODE 就寫成熟悉的 Score SDE 形式 \(\frac{d\mathbf x(t)}{dt}=f(t)\mathbf x(t)-\frac12g^2(t)\,\mathbf s^*(\mathbf x(t),t)\)。(代入第三行即可:\(-\frac12g^2=\sigma_t^2\frac{\alpha_t'}{\alpha_t}-\sigma_t\sigma_t'=\sigma_t^2\big(\frac{\alpha_t'}{\alpha_t}-\frac{\sigma_t'}{\sigma_t}\big)\)。)
為了具體看到 PF-ODE 怎麼被離散化來取樣,書在 §9.2(B25)會介紹一個廣泛使用的 diffusion ODE 取樣器 DDIM 的更新規則,說明 Euler 離散化怎麼自然地連到 PF-ODE。
04所有仿射流都等價書 §6.3.3
接著分析模板的設計選擇 (A)。
狀態層級的等價
FM(Lipman et al. 2022)和 RF(Liu et al. 2022)使用的一個方便的典型插值是 \(\mathbf x_t^{\text{FM}}=(1-t)\mathbf x_0+t\bm\epsilon=\mathbf x_0+t(\bm\epsilon-\mathbf x_0)\),它的速度是常數向量 \(\bm\epsilon-\mathbf x_0\)。這一節的重點是:這個選擇表面上的簡單並不是本質的;任何仿射插值 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\) 都可以寫成典型路徑重新參數化時間、再縮放的版本。定義
$$c(t):=\alpha_t+\sigma_t,\qquad\tau(t):=\frac{\sigma_t}{\alpha_t+\sigma_t}\qquad\big(c(t)\ne0\big).$$直接的代數改寫給出
$$\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon=(\alpha_t+\sigma_t)\Big(\frac{\alpha_t}{\alpha_t+\sigma_t}\mathbf x_0+\frac{\sigma_t}{\alpha_t+\sigma_t}\bm\epsilon\Big)=c(t)\Big(\big(1-\tau(t)\big)\mathbf x_0+\tau(t)\bm\epsilon\Big)=c(t)\,\mathbf x_{\tau(t)}^{\text{FM}}.$$所以只要 \(c(t)\ne0\),每條仿射路徑都可以逐點表示成典型路徑的純量縮放。如果 \(\tau(t)\) 在關心的時間區間上還是連續且嚴格單調的,那麼 \(t\mapsto\tau(t)\) 也是一個真正的時間變數變換,兩條路徑由時間重新參數化加上縮放 \(c(t)\) 連起來。對常見的前向 diffusion 時程,訊號雜訊比的單調遞減就保證了 \(\tau(t)\) 的單調演化。
為什麼 SNR 遞減保證 \(\tau\) 單調
\(\tau=\frac{\sigma_t}{\alpha_t+\sigma_t}=\frac1{1+\alpha_t/\sigma_t}\)。在 \(\alpha_t,\sigma_t>0\) 時,\(\alpha_t/\sigma_t=\sqrt{\mathrm{SNR}(t)}\) 嚴格遞減,所以 \(\tau\) 嚴格遞增。例如 VE(\(\alpha_t=1\)、\(\sigma_t\) 從 \(\sigma_{\min}\) 增到 \(\sigma_{\max}\)):\(\tau=\frac{\sigma_t}{1+\sigma_t}\) 從接近 0 增到 \(\frac{\sigma_{\max}}{1+\sigma_{\max}}\),永遠到不了 1;\(c(t)=1+\sigma_t\) 則變得很大。VE 對應的是典型路徑的 \([\tau_{\min},\tau_{\max}]\) 一段,放大 \(c\) 倍。
對應的速度,對 \(\mathbf x_t=c(t)\mathbf x_{\tau(t)}^{\text{FM}}\) 用連鎖律:
$$\mathbf v(\mathbf x_t,t):=\frac{d}{dt}\big(\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\big)=c'(t)\,\mathbf x_{\tau(t)}^{\text{FM}}+c(t)\,\tau'(t)\,\frac{d}{ds}\mathbf x_s^{\text{FM}}\Big|_{s=\tau(t)}=c'(t)\,\mathbf x_{\tau(t)}^{\text{FM}}+c(t)\,\tau'(t)\,\mathbf v^{\text{FM}}\big(\mathbf x_{\tau(t)}^{\text{FM}},\tau(t)\big),$$因為沿著典型路徑 \(\mathbf v^{\text{FM}}(\mathbf x_\tau^{\text{FM}},\tau)=-\mathbf x_0+\bm\epsilon\)。整理成命題:
和三角函數流的等價
另一個廣泛使用的仿射流是三角函數插值(Salimans & Ho;Albergo et al. 2023;Lu & Song 2024)。作為具體的例子,書也證明任何仿射流都可以寫成這種形式。三角函數路徑定義為
$$\mathbf x_u^{\text{Trig}}:=\cos(u)\,\mathbf x_0+\sin(u)\,\bm\epsilon.$$令 \(R_t:=\sqrt{\alpha_t^2+\sigma_t^2}>0\),選一個角度 \(\tau_t\) 使 \(\cos\tau_t=\alpha_t/R_t\)、\(\sin\tau_t=\sigma_t/R_t\)。則每個仿射插值都有逐點縮放、重新計時的三角函數表示:
$$\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon=R_t\Big(\frac{\alpha_t}{R_t}\mathbf x_0+\frac{\sigma_t}{R_t}\bm\epsilon\Big)=R_t\,\mathbf x_{\tau_t}^{\text{Trig}}.$$\((\alpha_t,\sigma_t)\) 是平面上的一個點;除以 \(R_t\) 把它放到單位圓上,決定了角度 \(\tau_t\),因此決定了狀態 \(\mathbf x_{\tau_t}^{\text{Trig}}\);半徑 \(R_t\) 給出整體的尺度。若 \(\tau_t\) 還能選成 \(t\) 的連續、嚴格單調函數,這個狀態層級的表示也定義了一個真正的時間重新參數化。對 \(u\) 微分 \(\mathbf x_u^{\text{Trig}}\) 得到它的速度 \(\mathbf v_u^{\text{Trig}}=-\sin(u)\,\mathbf x_0+\cos(u)\,\bm\epsilon\);透過同樣的變數變換,就有速度(以及其他參數化)的封閉形式換算。
兩種典型座標的幾何意義
把 \((\alpha_t,\sigma_t)\) 畫成平面上的一條曲線。FM 座標用直線 \(\alpha+\sigma=1\) 當參考:沿著從原點出發的射線把點投影到這條直線上,交點的 \(\sigma\) 座標就是 \(\tau\),到原點的比例就是 \(c\)。三角函數座標用單位圓當參考:投影到圓上,角度是 \(\tau_t\),半徑是 \(R_t\)。兩者都是「沿射線投影」,只是參考曲線不同;射線的方向只由比值 \(\alpha_t/\sigma_t\),也就是 SNR 決定。所以時程真正重要的資訊是 SNR 怎麼隨時間變化,整體尺度只是乘在狀態上的一個數。
四種參數化的訓練目標
令 \(\mathbf x_t=\alpha_t\mathbf x_0+\sigma_t\bm\epsilon\),\(\sigma_t>0\),\((\alpha_t,\sigma_t)\) 可微且 \(\alpha_t'\sigma_t-\alpha_t\sigma_t'\ne0\)。考慮 oracle 目標 \(\bm\epsilon^*=\mathbb E[\bm\epsilon\mid\mathbf x_t]\)、\(\mathbf x_0^*=\mathbb E[\mathbf x_0\mid\mathbf x_t]\)、\(\mathbf v^*=\mathbb E[\alpha_t'\mathbf x_0+\sigma_t'\bm\epsilon\mid\mathbf x_t]\)。由第 2 節的命題,
$$\nabla_{\mathbf x_t}\log p_t(\mathbf x_t)=-\frac1{\sigma_t}\bm\epsilon^*=\frac{\alpha_t}{\sigma_t^2}\Big(\mathbf x_0^*-\frac{\mathbf x_t}{\alpha_t}\Big),\qquad\mathbf v^*=\alpha_t'\mathbf x_0^*+\sigma_t'\bm\epsilon^*.$$在輸出頭的換算 \(\mathbf s_{\bm\phi}\equiv-\frac1{\sigma_t}\bm\epsilon_{\bm\phi}\equiv\frac{\alpha_t}{\sigma_t^2}\big(\mathbf x_{\bm\phi}-\frac{\mathbf x_t}{\alpha_t}\big)\),以及速度到 score 的換算
$$\mathbf s_{\bm\phi}=\frac{\alpha_t}{\sigma_t(\alpha_t'\sigma_t-\alpha_t\sigma_t')}\,\mathbf v_{\bm\phi}-\frac{\alpha_t'}{\sigma_t(\alpha_t'\sigma_t-\alpha_t\sigma_t')}\,\mathbf x_t$$之下,逐樣本的平方損失只差隨時間變化的權重:
速度到 score 的換算從哪來
用 \(\mathbf x^*=(\mathbf x_t+\sigma_t^2\mathbf s)/\alpha_t\)、\(\bm\epsilon^*=-\sigma_t\mathbf s\) 代入 \(\mathbf v=\alpha_t'\mathbf x^*+\sigma_t'\bm\epsilon^*\):
$$\mathbf v=\frac{\alpha_t'}{\alpha_t}\mathbf x_t+\Big(\frac{\alpha_t'\sigma_t^2}{\alpha_t}-\sigma_t\sigma_t'\Big)\mathbf s=\frac{\alpha_t'}{\alpha_t}\mathbf x_t+\frac{\sigma_t(\alpha_t'\sigma_t-\alpha_t\sigma_t')}{\alpha_t}\mathbf s.$$反解 \(\mathbf s\) 就是上面的式子,也看出為什麼需要 \(\alpha_t'\sigma_t-\alpha_t\sigma_t'\ne0\):它是 \(\sigma_t^2\,\frac{d}{dt}(\alpha_t/\sigma_t)\),等於 0 表示 SNR 在那一刻停止變化,速度不再帶有 score 的資訊。這個換算是仿射的(多一個 \(\mathbf x_t\) 項),但 \(\mathbf x_t\) 項在 \(\mathbf s_{\bm\phi}-\mathbf s^*\) 裡相消,所以誤差之間只差一個倍數。
和 B15 的整理對照:那裡固定網路輸出 \(\hat{\mathbf x}\),算出換成雜訊、score、速度的權重分別是 \(\frac{\alpha_t^2}{\sigma_t^2}\)、\(\frac{\alpha_t^2}{\sigma_t^4}\)、\(\big(\alpha_t'-\frac{\sigma_t'\alpha_t}{\sigma_t}\big)^2\)。把上面的鏈子都換算到 \(\Vert\mathbf x_{\bm\phi}-\mathbf x_0^*\Vert^2\) 上,得到同樣的三個數。
由仿射流的命題,任何仿射流都可以透過 \(\mathbf x_t=c(t)\mathbf x_{\tau(t)}^{\text{FM}}\) 轉到典型 FM 路徑。微分得到
$$\mathbf v_{\bm\phi}(\mathbf x_t,t)=c'(t)\,\mathbf x_{\tau(t)}^{\text{FM}}+c(t)\,\tau'(t)\,\mathbf v_{\bm\phi}^{\text{FM}}\big(\mathbf x_{\tau(t)}^{\text{FM}},\tau(t)\big),\qquad\mathbf x_{\tau(t)}^{\text{FM}}=\frac{\mathbf x_t}{c(t)},$$而 \(\mathbf v^*\) 也滿足同樣的關係。所以速度損失的變換是
$$\big\Vert\mathbf v_{\bm\phi}(\mathbf x_t,t)-\mathbf v^*(\mathbf x_t,t)\big\Vert_2^2=\big(c(t)\tau'(t)\big)^2\,\Big\Vert\mathbf v_{\bm\phi}^{\text{FM}}\Big(\frac{\mathbf x_t}{c(t)},\tau(t)\Big)-\big(\mathbf v^{\text{FM}}\big)^*\Big(\frac{\mathbf x_t}{c(t)},\tau(t)\Big)\Big\Vert_2^2.$$為什麼 oracle 速度也滿足同樣的關係
\(\mathbf x_t\) 和 \(\mathbf x_{\tau(t)}^{\text{FM}}=\mathbf x_t/c(t)\) 互相決定(\(c\ne0\)),所以「給定 \(\mathbf x_t\)」和「給定 \(\mathbf x_{\tau(t)}^{\text{FM}}\)」是同一個條件,\((\mathbf x_0,\bm\epsilon)\) 的後驗相同。對條件速度的連鎖律式兩邊取這個後驗期望,\(c'(t)\mathbf x_{\tau}^{\text{FM}}\) 是已知量,\(\bm\epsilon-\mathbf x_0\) 的期望就是 \((\mathbf v^{\text{FM}})^*\)。所以邊際的 PF-ODE 速度也照同一個式子轉換;Demo A 實際解 ODE 驗證這件事。
Demo AVP、VE、cosine 都是換了時鐘的 FM轉述者補充
一維資料 \(0.6\,\mathcal N(1.2,0.25^2)+0.4\,\mathcal N(-1,0.2^2)\),精確的 oracle。選一個時程,從 \(t=1\) 的精確邊際 \(p_1\) 抽 12 個點,用 RK4(2,000 步)沿它自己的 PF-ODE 倒著解到 \(t=0.002\)。另外把同樣的起點換成 \(\mathbf x_1/c(1)\),在典型 FM 路徑上從 \(\tau(1)\) 解到 \(\tau(0.002)\)。左圖是原始座標下的軌跡;右圖把它們換成 \((\tau(t),\,\mathbf x(t)/c(t))\),和 FM 的軌跡(虛線)疊在一起。
瀏覽器實測,四個時程下 12 條軌跡換到 FM 座標後的最大差距:
| 時程 | \(c(1)\) | \(\tau(1)\) | 沿途最大差距 | 終點最大差距 |
|---|---|---|---|---|
| cosine VP | 1.000 | 1.0000 | 1.1e-6 | 7.9e-11 |
| DDPM 式 VP | 1.007 | 0.9935 | 9.6e-7 | 8.3e-11 |
| VE | 21.000 | 0.9524 | 5.2e-7 | 2.4e-12 |
| 典型 FM | 1 | 1 | 0 | 0 |
終點的差距在 \(10^{-10}\) 的量級,只剩 RK4 的數值誤差;沿途的 \(10^{-6}\) 是把 FM 軌跡在不同的時間格點之間線性內插造成的。所以不只是「一個樣本」的狀態對應:整條 oracle PF-ODE 軌跡都一一對應,正如第 4 節「oracle 速度也滿足同樣的關係」。VE 最能說明縮放的角色:原座標下 \(x(1)\) 散到 ±36(\(\sigma_{\max}=20\)),換到 FM 座標後和其他時程一樣落在 ±3 內;而 \(\tau(1)=20/21\approx0.952\),VE 從來沒有走到典型路徑的純雜訊端,它的先驗 \(\mathcal N(0,\sigma_{\max}^2)\) 只是 \(p_{\text{data}}*\mathcal N(0,\sigma_{\max}^2)\) 的近似(B13 的表說明過)。切換時程看下圖:\(\tau(t)\) 的形狀各不相同(例如 cosine 的 \(\tau'(t)=\frac{\pi/2}{(\cos+\sin)^2}\) 在兩端最大、中間最小),這就是「不同時程只是不同的時鐘」。
05(選讀)參數化與典型流的分析書 §6.3.4
雖然前面已經證明四種參數化在數學上等價、可以互相轉換,前向的仿射加噪流也等價於典型形式 \(\mathbf x_t^{\text{FM}}=(1-t)\mathbf x_0+t\bm\epsilon\),這一節仍然提供更多直覺,分析 \(\mathbf v\)-prediction 配上這個典型仿射流可能的好處。問題很簡單:不同的參數化和時程,怎麼塑造模型學到的東西和我們取樣的方式?分兩個觀點:
- 回歸目標與時程。為什麼 \(\mathbf v\)-prediction 配典型線性時程 \((\alpha_t,\sigma_t)=(1-t,t)\) 很自然:它讓條件速度目標的尺度不隨時間改變,也從速度分解裡去掉了顯式的時程曲率項。
- 對解法的影響。這個參數化怎麼和數值積分互動;詳細的解法分析留到第 9 章。
先區分兩種速度場以免混淆。條件速度是好處理的訓練目標:\(\mathbf v_t(\mathbf x_t\mid\mathbf z)=\mathbf x_t'=\alpha_t'\mathbf x_0+\sigma_t'\bm\epsilon\),\(\mathbf z=(\mathbf x_0,\bm\epsilon)\);oracle(邊際化的)速度是解 PF-ODE 推論時用來移動樣本的:\(\mathbf v^*(\mathbf x,t)=\mathbb E[\mathbf v_t(\cdot\mid\mathbf z)\mid\mathbf x_t=\mathbf x]\)。
Perspective 1:為什麼 \((\alpha_t,\sigma_t)=(1-t,t)\) 是自然的時程
寫 \(\sigma_t:=\zeta(t)\)、\(\alpha_t:=1-\zeta(t)\),\(\zeta(t)\) 隨時間變化。條件速度變成 \(\mathbf v_t(\mathbf x_t\mid\mathbf z)=\zeta'(t)(\bm\epsilon-\mathbf x_0)\)。
單位尺度的回歸目標。對典型時程 \(\zeta(t)=t\),條件速度滿足
$$\mathbb E\big[\Vert\mathbf v_t(\cdot\mid\mathbf z)\Vert_2^2\big]=\mathbb E_{\bm\epsilon}\Vert\bm\epsilon\Vert_2^2+\mathbb E_{\mathbf x_0}\Vert\mathbf x_0\Vert_2^2=D+\underbrace{\operatorname{Tr}\operatorname{Cov}[\mathbf x_0]}_{\text{總變異數}}+\underbrace{\Vert\mathbb E\mathbf x_0\Vert_2^2}_{\text{平均}}.$$所以期望的目標大小不隨 \(t\) 改變。把資料標準化成平均 0、共變異數 \(\mathbf I\) 之後,\(\alpha_t'\mathbf x_0\) 和 \(\sigma_t'\bm\epsilon\) 兩個分量在所有 \(t\) 的貢獻相當,避免在端點附近梯度爆炸或消失。看 diffusion 的訓練目標 \(\mathcal L_{\text{velocity}}(\bm\phi)=\mathbb E_t\mathbb E_{\mathbf x_0,\bm\epsilon}\Vert\mathbf v_{\bm\phi}(\mathbf x_t,t)-\mathbf v_t(\mathbf x_t\mid\mathbf z)\Vert_2^2\),由連鎖律,它對參數的梯度是
$$\nabla_{\bm\phi}\mathcal L_{\text{velocity}}(\bm\phi)=2\,\mathbb E_t\mathbb E_{\mathbf x_0,\bm\epsilon}\Big[\partial_{\bm\phi}\mathbf v_{\bm\phi}(\mathbf x_t,t)^\top\big(\mathbf v_{\bm\phi}(\mathbf x_t,t)-\mathbf v_t(\mathbf x_t\mid\mathbf z)\big)\Big].$$所以目標的尺度 \(\Vert\mathbf v_t(\mathbf x_t\mid\mathbf z)\Vert_2\) 影響梯度的穩定性:在其他條件相同下,如果它在某個 \(t\) 縮到 0(或爆大),梯度就傾向消失(或爆炸)。典型選擇 \(\zeta(t)=t\) 給出和 \(t\) 無關的目標大小,所以回歸訊號在端點(\(t=0\) 或 \(1\))不會塌縮或爆大(假設 \(\mathbb E\Vert\partial_{\bm\phi}\mathbf v_{\bm\phi}\Vert^2\) 和任何時間權重都受到控制)。
典型時程與 \(\mathbf v\)-prediction 的配合。在仿射路徑下,oracle 速度分解成 \(\mathbf v^*(\mathbf x,t)=\alpha_t'\mathbf x^*(\mathbf x,t)+\sigma_t'\bm\epsilon^*(\mathbf x,t)\)。在固定的 \(\mathbf x\) 對 \(t\) 微分:
$$\partial_t\mathbf v^*=\underbrace{\alpha_t''\mathbf x^*+\sigma_t''\bm\epsilon^*}_{\text{時程曲率}}+\alpha_t'\,\partial_t\mathbf x^*+\sigma_t'\,\partial_t\bm\epsilon^*.$$用線性時程 \(\alpha_t=1-t\)、\(\sigma_t=t\),曲率項消失(\(\alpha_t''=\sigma_t''=0\)),\(\mathbf v^*\) 隨時間的變化主要反映後驗的演化 \((\partial_t\mathbf x^*,\partial_t\bm\epsilon^*)\),而不是時程本身。這個效果對 \(\mathbf v\)-prediction 特別乾淨:係數 \(\alpha_t'\)、\(\sigma_t'\) 是常數(\(-1\) 和 \(+1\)),漂移裡沒有額外隨 \(t\) 變化的縮放。相對地,score、\(\mathbf x_0\) 或 \(\bm\epsilon\) 參數化常常引入 \(\sigma_t'/\sigma_t\)、\(\alpha_t'/\alpha_t\) 這類比值,即使在線性時程下也可能在端點附近劇烈變化。所以雖然原則上不是唯一的選擇,線性 \((1-t,t)\) 時程配 \(\mathbf v\)-prediction 讓 oracle 速度的時間依賴特別穩定、透明。
最小化條件能量。接著採取比較理論的最佳運送觀點(第 7 章)。條件動能衡量條件速度沿前向路徑的總期望運動量,也就是從 \(\mathbf x_0\) 走到 \(\bm\epsilon\) 需要的瞬時運動(動能)的總和:
$$\mathcal K[\zeta]:=\int_0^1\mathbb E_{\mathbf x_0,\bm\epsilon}\big[\Vert\mathbf v_t(\cdot\mid\mathbf z)\Vert_2^2\big]\,dt=\Big(D+\operatorname{Tr}\operatorname{Cov}[\mathbf x_0]+\Vert\mathbb E\mathbf x_0\Vert_2^2\Big)\int_0^1\big(\zeta'(t)\big)^2\,dt.$$所以最小化 \(\mathcal K[\zeta]\) 就是在仿射插值族 \(\mathbf x_t=(1-\zeta(t))\mathbf x_0+\zeta(t)\bm\epsilon\) 裡,找期望意義下最平滑、能量最小的路徑。配上邊界條件 \(\zeta(0)=0\)、\(\zeta(1)=1\),Euler–Lagrange 方程 \(\zeta''(t)=0\) 給出最小化解 \(\zeta(t)=t\):直的條件路徑。也就是說,在這個族裡所有平滑的時程中,典型流 \(\zeta(t)=t\) 是從 \(\mathbf x_0\) 走到 \(\bm\epsilon\) 最省能量的方式。第 7 章的命題(B20)會更詳細地處理。
不用 Euler–Lagrange 的一行證明
由 Cauchy–Schwarz,\(1=\big(\zeta(1)-\zeta(0)\big)^2=\Big(\int_0^1\zeta'(t)\,dt\Big)^2\le\int_0^1\zeta'(t)^2\,dt\),等號成立若且唯若 \(\zeta'\) 是常數,也就是 \(\zeta(t)=t\)。所以 \(\mathcal K[\zeta]\ge D+\operatorname{Tr}\operatorname{Cov}[\mathbf x_0]+\Vert\mathbb E\mathbf x_0\Vert^2\),線性時程恰好達到。
關於 oracle 速度能量的 Remark。線性時程 \(\zeta(t)=t\) 永遠最小化上面推出的條件速度能量,但不一定最小化邊際化 oracle 速度 \(\mathbf v^*\) 的能量。原因是 \(\mathbf v^*\) 的大小可以沿著機率路徑變化,所以能量最小的時程可能以不同的速度走過路徑的不同部分。為了明確寫出這個依賴,令 \(\mathbf y_u=(1-u)\mathbf x_0+u\bm\epsilon\),\(u\in[0,1]\) 表示沿著仿射機率路徑的位置,並定義
$$\mathbf b_u(\mathbf y):=\mathbb E\big[\bm\epsilon-\mathbf x_0\,\big|\,\mathbf y_u=\mathbf y\big],\qquad\kappa(u):=\mathbb E_{\mathbf y_u}\big[\Vert\mathbf b_u(\mathbf y_u)\Vert_2^2\big].$$\(\kappa(u)\) 衡量每單位沿路徑移動時,oracle 速度的期望平方大小。時程 \(u=\zeta(t)\) 指定走過這條路徑的快慢。因為 \(\mathbf x_t=\mathbf y_{\zeta(t)}\),oracle 速度變成 \(\mathbf v^*(\mathbf x,t)=\zeta'(t)\,\mathbf b_{\zeta(t)}(\mathbf x)\),動能是
$$\mathcal K_{\text{marg}}[\zeta]=\int_0^1\kappa(\zeta(t))\,\big(\zeta'(t)\big)^2\,dt.$$假設 \(\kappa(u)>0\) 而且夠正則,最小化這個能量得到
$$\kappa(\zeta(t))\,\big(\zeta'(t)\big)^2=\text{常數},\qquad\text{等價地}\qquad\zeta'(t)\propto\frac1{\sqrt{\kappa(\zeta(t))}}.$$所以能量最小的時程在 oracle 速度期望大小較大的地方走得慢,在較小的地方走得快。因此 \(\zeta(t)=t\) 只有在 \(\kappa(u)\) 沿路徑是常數時才最小化邊際速度能量。這突顯了和上面條件速度結果的差別:在仿射族裡,線性時程永遠是條件速度意義下等速、能量最小的選擇。
最小值是多少(轉述者補充)
令 \(L:=\int_0^1\sqrt{\kappa(u)}\,du\)。由 Cauchy–Schwarz,
$$L^2=\Big(\int_0^1\sqrt{\kappa(\zeta(t))}\,\zeta'(t)\,dt\Big)^2\le\int_0^1\kappa(\zeta(t))\,\zeta'(t)^2\,dt=\mathcal K_{\text{marg}}[\zeta],$$第一個等號是變數變換 \(u=\zeta(t)\)。等號成立若且唯若 \(\sqrt{\kappa(\zeta)}\,\zeta'\) 是常數,正是書的條件。所以 \(\min_\zeta\mathcal K_{\text{marg}}=L^2\);線性時程的值是 \(\int_0^1\kappa(u)\,du\),兩者的差 \(\int\kappa-\big(\int\sqrt\kappa\big)^2\) 就是 \(\sqrt\kappa\) 的變異數,\(\kappa\) 越不均勻,線性時程越浪費。最佳時程可以寫成反函數:\(t(\zeta)=\frac1L\int_0^\zeta\sqrt{\kappa(u)}\,du\)。Demo B 數值地算出這些量。
Perspective 2:為什麼速度預測對取樣來說很自然
用 PF-ODE 取樣最終需要它的速度場。這讓 \(\mathbf v\)-prediction 特別直接:網路預測的正是 ODE 右手邊的量。相比之下,\(\mathbf x\)-、\(\bm\epsilon\)-、\(\mathbf s\)-prediction 是透過「目前的狀態 + 網路預測」的組合來編碼同一個 oracle 速度。在 oracle 層級,由第 3 節的命題,這些都是同一個 \(\mathbf v^*(\mathbf x,t)\) 可以精確換算的形式,所以底層的 oracle PF-ODE 不因參數化的選擇而改變。這裡著重的是學到的 PF-ODE 在取樣時怎麼表示;訓練對應預測時用的損失可以另外選。
\(\mathbf x\)-、\(\bm\epsilon\)-、\(\mathbf s\)-prediction 下的 PF-ODE。第 3 節命題的前三行有共同的形式
$$\frac{d\mathbf x(t)}{dt}=\underbrace{L(t)\,\mathbf x(t)}_{\text{已知的線性項}}+\underbrace{\mathbf N_{\bm\phi^\times}(\mathbf x(t),t)}_{\text{依賴網路的項}},$$\(L(t)\) 是由雜訊時程決定的已知純量係數,\(\mathbf N_{\bm\phi^\times}\) 含有乘在乾淨、雜訊或 score 預測上的適當時間係數。例如 \(\bm\epsilon\)-prediction 下,\(L(t)=\frac{\alpha_t'}{\alpha_t}\)、\(\mathbf N_{\bm\phi^\times}(\mathbf x,t)=-\sigma_t\big(\frac{\alpha_t'}{\alpha_t}-\frac{\sigma_t'}{\sigma_t}\big)\bm\epsilon_{\bm\phi^\times}(\mathbf x,t)\)。這個形式對數值積分有用:已知的線性項可以解析處理,依賴網路的項才數值近似。以指數積分器為基礎的 diffusion 解法,例如 DPM-Solver(Lu et al. 2022),正是利用這個結構;第 9 章(B26)會詳談。
\(\mathbf v\)-prediction 下的 PF-ODE。形式直接而簡單:\(\frac{d\mathbf x(t)}{dt}=\mathbf v_{\bm\phi^\times}(\mathbf x(t),t)\approx\mathbf v^*(\mathbf x(t),t)\)。一次網路評估就直接給出標準 ODE 解法需要的量,不必先和一個另外的線性項組合。典型線性時程讓這個連結特別透明。對 \(\mathbf x_t=(1-t)\mathbf x_0+t\bm\epsilon\),一個速度預測決定了對應的端點預測
$$\widehat{\mathbf x}_0=\mathbf x_t-t\,\mathbf v_{\bm\phi^\times}(\mathbf x_t,t),\qquad\widehat{\bm\epsilon}=\mathbf x_t+(1-t)\,\mathbf v_{\bm\phi^\times}(\mathbf x_t,t).$$用這一個預測從 \(t\) 走到 \(s\):
$$(1-s)\,\widehat{\mathbf x}_0+s\,\widehat{\bm\epsilon}=\mathbf x_t+(s-t)\,\mathbf v_{\bm\phi^\times}(\mathbf x_t,t),$$恰好是學到的速度場在典型線性時程下的普通 Euler 更新。所以 \(\mathbf v\)-prediction 加線性時程,讓模型預測和 PF-ODE 的數值積分之間有特別直接的連結。更一般的時程和數值解法留到第 9 章。
端點預測和 Euler 更新的代數
\(\mathbf x_t=(1-t)\mathbf x_0+t\bm\epsilon\)、\(\mathbf v=\bm\epsilon-\mathbf x_0\)。\(\mathbf x_t-t\mathbf v=(1-t)\mathbf x_0+t\bm\epsilon-t\bm\epsilon+t\mathbf x_0=\mathbf x_0\);\(\mathbf x_t+(1-t)\mathbf v=\bm\epsilon\)。所以(用網路的預測代替真值)\((1-s)\widehat{\mathbf x}_0+s\widehat{\bm\epsilon}=\mathbf x_t+\mathbf v\big(-(1-s)t+s(1-t)\big)=\mathbf x_t+(s-t)\mathbf v\)。白話:「先猜出兩個端點,再在 \(s\) 重新插值」和「沿著目前的速度走一步」是同一件事;這正是 B25 的 DDIM 在線性時程下的樣子。
合起來,\(\mathbf v\)-prediction 直接提供 PF-ODE 需要的速度,其他預測類型則透過依賴時程的變換表示同一個 oracle 動態。這種直接的對應,是速度預測可以被認為「對取樣很自然」的主要意義。
結論。\(\mathbf v\)-prediction 配典型線性時程有一些理論上的好處,例如固定的目標大小、沒有時程曲率,但這些性質不必然讓它普遍更好。實務上,模型的表現取決於一連串互相影響的因素:網路架構、正規化方式、時間上的損失權重、取樣器和離散化步數的選擇、guidance 強度、正則化策略、資料的縮放,以及整體的訓練預算。不同的資料集和目標可能偏好其他的參數化或時程,最佳設定終究是一個經驗問題,要靠驗證和消融實驗回答。
Demo B條件能量最小,不代表邊際能量最小轉述者補充
同一個一維資料,\(\mathbf y_u=(1-u)\mathbf x_0+u\bm\epsilon\)。上圖是精確算出的 \(\kappa(u)\)(oracle 速度的期望平方,每單位路徑);中圖是三個時程 \(\zeta(t)\);下圖是各時程下條件速度的期望平方 \(\mathbb E\Vert\mathbf v_t(\cdot\mid\mathbf z)\Vert^2=C\,\zeta'(t)^2\)(\(C=1+\mathbb E x_0^2\))隨 \(t\) 的變化。讀數是兩種動能。
\(\kappa(u)\) 很不均勻:在 \(u\approx0.25\) 最大(1.659),在 \(u\approx0.6\) 最小(0.190),差了將近 9 倍。直覺上可以這樣理解:\(u\approx0.6\) 時兩團資料的雜訊版本剛好疊在一起,後驗對「從哪一團來」最不確定,各個條件速度方向相反、平均後幾乎抵消。瀏覽器實測的動能:
| 時程 | 條件動能 \(\mathcal K\) | 邊際動能 \(\mathcal K_{\text{marg}}\) |
|---|---|---|
| 線性 \(\zeta=t\) | 2.317(最小) | 0.892 |
| \(\zeta^*\)(\(\zeta'\propto1/\sqrt\kappa\)) | 2.618 | 0.812(最小) |
| \(\sin^2(\pi t/2)\) | 2.859 | 1.034 |
三個數都和理論對得上:線性的條件動能就是 \(C=2.317\);\(\sin^2\) 的條件動能是 \(C\pi^2/8=2.859\);線性的邊際動能是 \(\int\kappa=0.892\),最佳值是下界 \((\int\sqrt\kappa)^2=0.812\)。兩種「最省力」各自有不同的贏家:線性時程在條件動能上最小,\(\zeta^*\) 在邊際動能上省了約 9%。中圖看得出 \(\zeta^*\) 在 \(\kappa\) 小的地方(\(\zeta\approx0.6\))走得快;下圖是代價:\(\zeta^*\) 的條件目標大小在那裡衝到約 10,失去了線性時程「目標尺度固定」的好處。這正是第 5 節兩個觀點之間的取捨。