CS236 補充課 G · 連續時間 Markov 鏈
CS236 補充課 G · 連續時間 Markov 鏈

連續時間 Markov 鏈:離散資料的 diffusion 怎麼加雜訊、怎麼倒回去

第 18 講把 diffusion 搬到文字這種離散資料上:加雜訊變成「token 隨機換成別的字,或被蓋成 MASK」,用的數學是連續時間 Markov 鏈(CTMC)。這一頁從「速率是什麼」開始,一步一步推導等待時間的分佈、分佈的演化方程、反向過程為什麼只需要機率的比值,以及 τ-leaping 一次揭開很多個 token 的代價。

先修:補充課 B(分離變數、矩陣指數)、D(Markov 鏈、detailed balance) 服務:第 18 講 預計閱讀 2 小時,可以分次讀

讀完這頁你應該能夠

  1. 區分機率和速率,並說明速率矩陣 \(Q\) 的兩個條件從哪裡來。
  2. 推導停留時間為什麼是指數分佈,說明下一步跳到哪裡的機率,並寫出 Gillespie 模擬法。
  3. 從流入與流出推導 master equation \(\frac{d\mathbf p}{dt} = Q\mathbf p\),手解一個兩狀態的例子,並說明直接用 Euler 法會出什麼問題。
  4. 推導 uniform 與 absorbing 兩種加雜訊方式的轉移機率。
  5. 用貝氏定理推導反向 CTMC 的速率 \(\bar Q_t(j,i) = \frac{p_t(j)}{p_t(i)}Q_t(i,j)\),說明它和 concrete score 的關係。
  6. 用兩個 token 的例子說明 τ-leaping 為什麼會產生不存在的組合。

00為什麼需要它

前面幾堂的粒子都在連續的空間裡,可以移動一點點。但文字是離散的:一個 token 只能是字彙裡的某個字,不存在「A 和 B 之間」,也沒辦法對它加高斯雜訊。Score \(\nabla\log p\) 也沒有意義,因為不能對離散的東西微分。

所以要換一種連續時間的隨機過程:粒子大部分時間都不動,偶爾跳到另一個狀態。下表是這一頁和前面幾堂的對應,讀完你會發現每一格都有對應的東西:

連續資料離散資料(本頁)
隨機過程SDE連續時間 Markov 鏈
分佈的演化Fokker–Planckmaster equation
加雜訊高斯雜訊換字或蓋成 MASK
反向需要score \(\nabla\log p_t\)機率比 \(p_t(j)/p_t(i)\)
數值解Euler–Maruyamaτ-leaping

01從「每步機率」到「速率」

速率不是機率

補充課 D 的 Markov 鏈一步一步走,每一步用機率決定去哪裡。如果時間是連續的,就不能說「每步」,要改說「每單位時間」,也就是速率。

就像車速不是距離:時速 60 公里,開 1 分鐘才走 1 公里。同樣地,速率 2 代表「每單位時間發生約 2 次」,乘上一段很短的時間才是機率:

手算

某個狀態以速率 2 跳走。\(\Delta t = 0.01\) 內跳走的機率約 \(2\times0.01 = 0.02\)。速率可以大於 1,但 \(\Delta t = 1\) 時,機率不是 2,「速率 × 時間」只有在時間很短時才是機率。

速率矩陣

把所有速率排成速率矩陣 \(Q\)。\(Q(j, i)\) 是「現在在 \(i\),每單位時間跳到 \(j\) 的速率」,注意是第 \(i\) 行第 \(j\) 列。在很短的時間 \(\Delta t\) 內:

$$P(x_{t+\Delta t} = j\mid x_t = i)\approx Q(j, i)\,\Delta t$$

這裡 \(j\neq i\)。

對角元素怎麼決定?留在原地的機率是 1 減掉跳走的機率。令離開 \(i\) 的總速率是 \(\lambda_i = \sum_{j\ne i}Q(j, i)\):

$$P(x_{t+\Delta t} = i\mid x_t = i)\approx1 - \lambda_i\,\Delta t$$

定義 \(Q(i, i) = -\lambda_i\),兩種情況就能合成一條式子(\(\delta_{ij}\) 是 \(i = j\) 時為 1、否則為 0):

$$\begin{aligned}&P(x_{t+\Delta t} = j\mid x_t = i)\\={}&\delta_{ij} + Q(j, i)\,\Delta t + O(\Delta t^2)\end{aligned}$$

所以速率矩陣有兩個條件,都有清楚的來由:

  • 非對角元素 \(\ge0\):速率不能是負的。
  • 每一行加起來是 0:這就是 \(Q(i,i) = -\lambda_i\) 的定義,代表從 \(i\) 出發,所有去向的機率加起來是 1。
例子:三個狀態(本頁一直會用到)

A→B 1.0、A→C 0.5;B→A 0.3、B→C 0.7;C→A 0.6、C→B 0.2。

$$Q = \begin{bmatrix}-1.5&0.3&0.6\\1&-1&0.2\\0.5&0.7&-0.8\end{bmatrix}$$

第一行是「從 A 出發」:\(-1.5 + 1 + 0.5 = 0\) ✓。

ABC1.00.30.70.20.60.5
同一條鏈的圖。箭頭上的數字是速率,不是機率,所以加起來不必等於 1。

記號:本頁沿用第 18 講與 SEDD 論文的寫法,\(Q(j, i)\) 是 \(i\to j\)、每一行加總為 0、分佈是行向量 \(\mathbf p\),演化寫成 \(Q\mathbf p\)。補充課 D 用的是「列向量乘矩陣、每一列加總為 1」,兩者差一個轉置:\(T(\Delta t)\approx I + \Delta t\,Q^\top\)。

一句話帶走:速率乘上很短的時間才是機率;\(Q\) 的非對角是跳走的速率,對角是負的總離開速率,所以每一行加起來是 0。

02什麼時候跳、跳去哪裡

等待時間:為什麼是指數分佈

粒子在狀態 \(i\),離開的總速率是 \(\lambda\)。令 \(S(t)\) 是「到時間 \(t\) 還沒跳」的機率。要撐到 \(t + dt\),就要先撐到 \(t\),然後在接下來的 \(dt\) 也不跳:

$$S(t + dt) = S(t)\,(1 - \lambda\,dt)$$

移項、除以 \(dt\),得到 \(\frac{dS}{dt} = -\lambda S\)。這正是補充課 B 第 3 節的方程,加上 \(S(0) = 1\):

還沒跳的機率 $$S(t) = P(\tau > t) = e^{-\lambda t}$$
平均 1/λe⁻¹ ≈ 0.37還沒跳的機率 e^(−λt)1t
放射性衰變是同一件事:每顆原子每單位時間以固定速率衰變。

等待時間 \(\tau\) 的密度是 \(-S'(t) = \lambda e^{-\lambda t}\),這就是指數分佈,它的平均是 \(1/\lambda\)。速率越大,等得越短,很合理。

它還有沒有記憶的性質:已經等了 \(s\),再等超過 \(t\) 的機率是

$$\begin{aligned}P(\tau > s + t\mid\tau > s) &= \frac{e^{-\lambda(s+t)}}{e^{-\lambda s}}\\&= e^{-\lambda t}\end{aligned}$$

和完全沒等過一樣。這正是 Markov 性質:未來只看現在在哪裡,不管已經待了多久。

跳去哪裡

在每一段 \(dt\) 內,跳到 \(j\) 的機率是 \(Q(j, i)\,dt\),跳走的總機率是 \(\lambda\,dt\)。所以已知要跳了,跳到 \(j\) 的條件機率是兩者的比值:

$$P(\text{跳到 }j\mid\text{跳了}) = \frac{Q(j, i)}{\lambda_i}$$
手算

從 A 出發:\(\lambda = 1.0 + 0.5 = 1.5\)。平均停留 \(1/1.5 = 0.667\)。超過 1 的機率 \(e^{-1.5} = 0.223\)。跳的時候,去 B 的機率 \(1.0/1.5 = \tfrac23\),去 C 的機率 \(\tfrac13\)。

精確的模擬:Gillespie 演算法

這兩件事直接給出不需要切時間步的模擬方法。在狀態 \(i\):

  1. 抽等待時間 \(\tau = -\ln(u)/\lambda_i\),其中 \(u\) 是 \([0, 1]\) 上的均勻亂數。(\(P(\tau > t) = P(u \lt e^{-\lambda t}) = e^{-\lambda t}\),確實是指數分佈。)
  2. 以機率 \(Q(j, i)/\lambda_i\) 選下一個狀態 \(j\)。
  3. 時間前進 \(\tau\),重複。

Demo G1 · 一條 CTMC 的軌跡,以及停留時間的分佈

怎麼看:上圖是一條軌跡,它是階梯狀的:大部分時間不動,瞬間跳走,而且每次停留的時間長短不一,這和「每隔固定時間跳一次」的離散鏈不同。下圖是 20,000 次停留在 A 的時間的直方圖,和指數分佈 \(1.5e^{-1.5\tau}\) 重合。
上:一條 Gillespie 軌跡下:20,000 次停留在 A 的時間指數分佈 1.5·e^{−1.5τ}
一句話帶走:固定速率的等待時間是指數分佈,平均 \(1/\lambda\),沒有記憶;跳的時候按速率的比例選去向。
小練習:離開的總速率是 2。平均停留多久?停留超過 1 的機率是多少?
平均 \(1/2\);\(P(\tau > 1) = e^{-2}\approx0.135\)。

03Master equation:分佈的演化是一個線性 ODE

推導:流入減流出

從一顆粒子換成整個分佈 \(\mathbf p_t\)(在每個狀態的機率)。用第 1 節的機率和全機率,走一小段時間後在 \(j\) 的機率是:

$$\begin{aligned}p_{t+\Delta t}(j) ={}&\underbrace{p_t(j)(1 - \lambda_j\Delta t)}_{\text{原本在 }j\text{ 且沒跳走}}\\&+ \underbrace{\sum_{i\ne j}p_t(i)\,Q(j, i)\,\Delta t}_{\text{從別處跳進來}}\end{aligned}$$

移項、除以 \(\Delta t\),取極限:

$$\frac{dp_t(j)}{dt} = \underbrace{\sum_{i\ne j}Q(j,i)\,p_t(i)}_{\text{流入}} - \underbrace{\lambda_j\,p_t(j)}_{\text{流出}}$$
ji 流進來i′ 流進來λⱼ · p(j) 流出去
和補充課 C 的盒子帳本一樣:機率只會因為進出而改變。

右邊正好是矩陣乘法 \(Q\mathbf p_t\) 的第 \(j\) 個元素(\(-\lambda_j\) 就是對角元素 \(Q(j,j)\))。所以:

Master equation $$\frac{d\mathbf p_t}{dt} = Q\,\mathbf p_t$$

這也叫 Kolmogorov forward equation,是 Fokker–Planck 方程的離散版本。總機率不變:把所有 \(j\) 加起來,\(\mathbf 1^\top Q = 0\)(每一行加起來是 0),所以 \(\frac{d}{dt}\sum_jp_t(j) = 0\)。

手算:開始的一瞬間

三狀態例子,從 A 出發,\(\mathbf p_0 = (1, 0, 0)\)。\(Q\mathbf p_0\) 就是 \(Q\) 的第一行 \((-1.5, 1, 0.5)\)。所以 \(\Delta t = 0.01\) 之後約是 \((0.985, 0.01, 0.005)\)。

解:矩陣指數

它就是補充課 B 第 7 節的線性 ODE,解是矩陣指數:

解 $$\mathbf p_t = e^{tQ}\,\mathbf p_0$$

所以 \(P(x_t = j\mid x_0 = i) = \big(e^{tQ}\big)(j, i)\)。

特徵值的意義也和 B 一樣。\(Q\) 一定有特徵值 0:它的特徵向量滿足 \(Q\boldsymbol\pi = 0\),也就是不再變化的穩態。鏈不可約時(每個狀態都能走到每個狀態),其他特徵值的實部都是負的,對應會衰減掉的部分。

手算:兩個狀態,完全解開

A→B 速率 2,B→A 速率 1:\(Q = \begin{bmatrix}-2&1\\2&-1\end{bmatrix}\)。trace 是 \(-3\),行列式是 0,所以特徵值是 \(0\) 和 \(-3\)。

穩態:\(Q\boldsymbol\pi = 0\) 給出 \(-2\pi_A + \pi_B = 0\),也就是 \(\boldsymbol\pi = (\tfrac13, \tfrac23)\)。

從 A 出發,\(p_A(t)\) 是穩態加上衰減的部分:

$$p_A(t) = \tfrac13 + \tfrac23e^{-3t}$$

驗算:\(p_A' = -2e^{-3t}\)。右邊 \(-2p_A + p_B\),其中 \(p_B = 1 - p_A = \tfrac23 - \tfrac23e^{-3t}\),算出來也是 \(-2e^{-3t}\) ✓。

Demo G2 · 兩個狀態的鏈

怎麼看:拖動兩個速率。曲線從 1 指數衰減到穩態 \(\pi_A = b/(a+b)\),速度由第二個特徵值 \(-(a+b)\) 決定:\(a, b\) 同時放大,穩態不變,但收斂變快。
p_A(t)p_B(t)穩態

為什麼不直接用 Euler 法

用 Euler 法(補充課 B 第 8 節)一步步解,就是 \(\mathbf p_{k+1} = (I + \Delta t\,Q)\mathbf p_k\)。\(I + \Delta t\,Q\) 的對角元素是 \(1 - \Delta t\,\lambda_i\)。步長小時沒問題,但只要 \(\Delta t\,\lambda_i > 1\),它就變成負的,「機率」會出現負數,這和 補充課 B 的 stiffness 是同一件事。

Demo G3 · e^{tQ}、5,000 條模擬軌跡,以及大步長的 Euler

怎麼看:實線(矩陣指數)和點(5,000 條 Gillespie 軌跡的比例)是兩種完全不同的算法,結果重合,都收斂到穩態。把 Euler 的步長拉大,虛線會開始偏離,超過 \(1/\lambda_{\max} = 1/1.5\) 之後會出現振盪和負數。
ABC實線:e^{tQ} p₀ 點:5,000 條 Gillespie 軌跡的比例 虛線:Euler
一句話帶走:每個狀態的機率變化是流入減流出,寫成 \(\dot{\mathbf p} = Q\mathbf p\),解是 \(e^{tQ}\mathbf p_0\)。
小練習:離開某狀態的最大速率是 4,用 Euler 解 master equation,步長最多多大才不會出現負機率?
需要 \(1 - 4\Delta t\ge0\),\(\Delta t\le0.25\)。

04兩種加雜訊的方式:uniform 與 absorbing

第 18 講的離散 diffusion 讓每個 token 獨立地照同一個 CTMC 變化。字彙大小 \(N\),有兩種常用的規則。這裡把速率歸一化成 1;第 18 講的 \(Q^{\text{uniform}} = \mathbf 1\mathbf 1^\top - NI\) 是這裡的 \(N\) 倍,只差時間的縮放。

推導轉移機率

這兩種規則不必算矩陣指數,用第 2 節直接想就好。「重抽」或「被蓋」事件以速率 1 發生,所以到時間 \(t\) 完全沒發生過的機率是 \(e^{-t}\)。

  • absorbing(蓋成 MASK):沒發生過就還是原字,機率 \(e^{-t}\);發生過就是 MASK,機率 \(1 - e^{-t}\)。
  • uniform(重抽成隨機的字):沒發生過是原字,機率 \(e^{-t}\);發生過的話,最後一次重抽的結果是完全均勻的,每個字機率 \(1/N\)。所以原字的機率是 \(e^{-t} + (1 - e^{-t})/N\)(可能抽回自己),其他每個字是 \((1 - e^{-t})/N\)。
uniform:換成隨機的字absorbing:蓋成 MASK
規則以速率 1 把 token 重抽成 \(N\) 個字之一以速率 1 變成 MASK,MASK 不再改變
\(P(\text{還是原本的字})\)\(e^{-t} + (1 - e^{-t})/N\)\(e^{-t}\)
其他每個別的字 \((1 - e^{-t})/N\)MASK:\(1 - e^{-t}\)
\(t\to\infty\)完全均勻的亂碼全部 MASK
手算

\(N = 26,\ t = 1\):uniform 還是原字 \(0.368 + 0.632/26 = 0.392\);absorbing 還是原字 \(0.368\)。

原句THE CAT SATuniformTHX CAT QATabsorbingTH· CAT ·AT
橙色是被改動的位置。uniform 被換掉的字和沒換的字看起來一樣;absorbing 能清楚看出哪些字被藏起來了。

Demo G4 · 同一句話,兩種加雜訊

怎麼看:拖動時間。橘色是和原句不同的位置。uniform 的雜訊把字母換成別的字母,模型不知道哪些字可以相信;absorbing 的雜訊只是把字藏起來,剩下看得到的字永遠是對的。第 18 講的結果是 absorbing 一致比 uniform 好,原因之一就在這裡:被蓋住的句子仍然「合理」,只要把 MASK 填回去。
uniform(26 個字母)
absorbing(· = MASK)
一句話帶走:事件以速率 1 發生,沒發生過的機率是 \(e^{-t}\);uniform 發生過就變均勻,absorbing 發生過就變 MASK。

05倒轉時間:反向的速率只需要機率的比值

推導:貝氏定理

前向的 CTMC 把資料 \(p_0\) 變成雜訊 \(p_T\)。生成時要從雜訊走回資料。假設現在是時間 \(t\),在狀態 \(i\),往回看一小段 \(dt\),上一刻在 \(j\) 的機率是多少?這正是貝氏定理:

$$\begin{aligned}&P(x_{t-dt} = j\mid x_t = i)\\={}&\frac{P(x_{t-dt} = j)\,P(x_t = i\mid x_{t-dt} = j)}{P(x_t = i)}\end{aligned}$$

代入:分子第一項是 \(p_t(j)\)(\(dt\) 很短),第二項是前向從 \(j\) 跳到 \(i\) 的機率 \(Q_t(i, j)\,dt\),分母是 \(p_t(i)\):

$$\begin{aligned}&P(x_{t-dt} = j\mid x_t = i)\\={}&\frac{p_t(j)}{p_t(i)}\,Q_t(i, j)\,dt\end{aligned}$$

「機率 = 速率 × \(dt\)」,所以倒著走時,從 \(i\) 跳到 \(j\) 的速率是:

反向速率 $$\bar Q_t(j, i) = \frac{p_t(j)}{p_t(i)}\,Q_t(i, j)$$

這裡 \(i\ne j\)。

關鍵在 \(\frac{p_t(j)}{p_t(i)}\):反向過程只需要機率的比值,歸一化常數消掉了。這就是第 18 講的 concrete score,和連續情形反向 SDE 只需要 \(\nabla\log p_t\) 完全對應(補充課 F §6)。模型要學的就是這個比值。

手算:一個 token 的 absorbing 鏈

手算

三個字 A、B、C 的初始機率 \((0.5, 0.3, 0.2)\)(第 18 講投影片 31、38 的例子),加上 MASK。前向時各字以速率 1 被蓋住,所以 \(p_t(v) = p_0(v)e^{-t}\),\(p_t(\text{MASK}) = 1 - e^{-t}\)。

反向是從 MASK 揭開成 \(v\)。前向 \(v\to\) MASK 的速率是 1,所以

$$\begin{aligned}\bar Q_t(v, \text{MASK}) &= \frac{p_t(v)}{p_t(\text{MASK})}\\&= \frac{p_0(v)\,e^{-t}}{1 - e^{-t}}\end{aligned}$$

\(t = 1\) 時,分母 \(0.632\),揭開成 A、B、C 的速率是 \(0.291, 0.175, 0.116\)。注意比例就是 \(0.5 : 0.3 : 0.2\):揭開成哪個字,由資料分佈決定。

驗證它真的走回去:倒著走時,每單位時間揭開成 A 的量是「速率 × MASK 的機率」\(= p_t(A)\)。而前向的 \(\frac{d}{dt}p_t(A) = -p_t(A)\),所以倒著走時 \(p_t(A)\) 正好以 \(p_t(A)\) 的速率增加 ✓。

Demo G5 · 一個 token 的 absorbing 鏈:倒著走回原本的分佈

怎麼看:線是前向的精確機率,點是從 \(t = 3\)(95% 是 MASK)出發、用反向速率模擬 20,000 次的比例。點落在線上:反向過程在每個時刻都經過同樣的分佈,最後回到 \((0.5, 0.3, 0.2)\)。
ABCMASK線:前向 p_t(精確) 點:從 p₃ 出發、用反向速率模擬 20,000 次的比例
一句話帶走:由貝氏定理,反向速率等於前向速率乘上機率比;只要知道比值,就能倒著走,這個比值就是 concrete score。

06很多個 token:τ-leaping 一次揭開好幾個的代價

狀態太多

序列有 \(d\) 個 token 時,狀態數是 \(N^d\)。\(N = 26,\ d = 10\) 就有 \(1.4\times10^{14}\) 個,不可能直接處理整個 \(Q\)。第 18 講的做法是讓前向過程每個 token 獨立。獨立事件同時發生的機率是 \(dt^2\) 量級,所以任一瞬間只有一個 token 在變,反向也只需要「只差一個位置」的比值。

τ-leaping

精確的反向模擬一次只能改一個 token,太慢。τ-leaping 讓一個時間步內每個位置同時、獨立地決定要不要變。它相當於 CTMC 版本的 Euler–Maruyama。

代價:同一步內,每個位置只看「步驟開始時」的序列做決定,看不到其他位置在同一步裡改成了什麼。步長很小時,同一步裡很少有兩個位置同時變,問題不大;步長很大時,相依性就被忽略了。

手算:最小的例子

資料只有兩個長度 2 的字,各 50%:AB 和 BA。也就是兩個位置永遠不同。

現在兩個位置都是 MASK,要揭開第 1 個位置。兩種字的機率相同,所以揭開成 A 或 B 各 50%。第 2 個位置也一樣。

  • 同一步一起揭開:兩個位置各自看到「另一個是 MASK」,獨立地選。\(P(\text{AA}) = P(\text{BB}) = \tfrac14\),所以一半的結果不合法。
  • 分兩步揭開:第一個揭開成 A 之後,另一個看到 A,只有 AB 符合,所以它的比值一定選 B。結果一定合法。
一步全部揭開:各自只看到 MASK··AA有一半是 AA 或 BB分兩步揭開:後者看得到前者··A·AB一定合法
相依性存在於資料裡,但同一步內的獨立決定看不到它。步驟切得越細,就越少有兩個位置擠在同一步。

Demo G6 · 只有 AB 和 BA 兩個合法的「字」:步數太少會生出 AA、BB

怎麼看:前向用 absorbing 雜訊加到 \(t = 4\)(98% 的位置是 MASK)。\(S = 1\) 時約一半不合法,和上面手算相同,也就是第 18 講 Demo B 的「1 步時幾乎都是不存在的組合」。拖動步數,兩個位置通常在不同的步驟揭開,不合法的比例快速下降。
上:20,000 次生成的結果比例下:不合法(AA、BB)的比例對步數
一句話帶走:τ-leaping 同一步內位置之間互相看不到,步數太少就會忽略相依性,產生資料裡不存在的組合。

07CTMC 的 detailed balance

和補充課 D 第 4 節一樣,若穩態分佈 \(\boldsymbol\pi\) 滿足

$$\pi_i\,Q(j, i) = \pi_j\,Q(i, j)$$

(每一對狀態之間的流量相等),鏈就是可逆的。代入第 5 節的公式,在穩態下:

$$\bar Q(j, i) = \frac{\pi_j}{\pi_i}Q(i, j) = Q(j, i)$$

反向和前向是同一條鏈。兩種雜訊正好是兩個極端:

  • uniform 對均勻分佈滿足 detailed balance:任兩個字之間來回的速率一樣。
  • absorbing 完全不可逆:只能變成 MASK,不能變回來,所以反向過程(揭開 MASK)和前向長得完全不同,而且需要知道資料分佈的比值才能定義。

08在 CS236 哪裡用到

本頁的概念第 18 講的對應
速率矩陣、兩個條件§6「\(Q_t\) 的每一行加總為 0、非對角 ≥ 0」
master equation、\(e^{tQ}\)§6 的 \(\frac{d\mathbf p_t}{dt} = Q_t\mathbf p_t\)、\(\mathbf p_t = \exp(\bar\sigma(t)Q)\mathbf p_0\);課後問答「為什麼不用更複雜的 \(Q\):要能快速算矩陣指數」
uniform、absorbing§6 的兩種 \(Q\) 與 Demo A;SEDD Uniform vs Absorb 的結果
反向速率需要比值§4 的 concrete score、§7 的 \(\bar Q_t(j,i) = \frac{p_t(j)}{p_t(i)}Q_t(i,j)\)
τ-leaping 與相依性§7 的 τ-leaping、Demo B 的步數與合法比例

常見誤解

誤解:「速率就是機率」。速率可以大於 1;只有乘上很短的時間 \(\Delta t\) 才是機率。直接把 \(I + \Delta t\,Q\) 當轉移矩陣,步長大時會出現負機率(Demo G3)。
誤解:「CTMC 每隔固定時間跳一次」。停留時間是指數分佈,有時很快就跳、有時待很久(Demo G1)。
誤解:「反向過程就是把前向的箭頭反過來」。反向速率要乘上機率比 \(p_t(j)/p_t(i)\);absorbing 的前向只有「變成 MASK」,反向卻是「揭開成哪個字」,完全由資料分佈決定。
誤解:「τ-leaping 只是比較粗的近似,結果會稍微模糊一點」。它會產生資料裡根本不存在的組合(Demo G6 的 AA、BB),因為同一步內位置之間的相依性被忽略了。

自我測驗

1. 從 A 出發,A→B 速率 1、A→C 速率 3。第一次跳到 B 的機率是多少?
\(1/(1 + 3) = 0.25\)。
2. \(Q = \begin{bmatrix}-1&3\\1&-3\end{bmatrix}\) 的穩態是什麼?收斂的速率是多少?
\(-\pi_1 + 3\pi_2 = 0\),\(\boldsymbol\pi = (0.75, 0.25)\)。trace 是 \(-4\),行列式是 0,非零特徵值 \(-4\),所以差距照 \(e^{-4t}\) 消失。
3. absorbing 雜訊下,\(t = 1\) 時某個 token 還是原本的字的機率是多少?
\(e^{-1}\approx0.368\)。
4. 寫出反向 CTMC 的速率。為什麼不需要歸一化常數?
\(\bar Q_t(j,i) = \frac{p_t(j)}{p_t(i)}Q_t(i,j)\);只出現機率的比值,常數在比值中消掉。
5. 為什麼 τ-leaping 一步揭開所有 MASK 會生出不存在的字?
每個位置只看步驟開始時的序列(另一個位置還是 MASK),各自獨立地選字,忽略了「另一個位置選了什麼」對這個位置的影響。

延伸閱讀