勾配降下党青年局

万国のグラーディエントよ、降下せよ!

時刻をスキップするときの拡散過程

拡散モデルで定義される、データからノイズを加えていく拡散過程は以下のように定義されています。
q(x_t|x_{t-1})=N(x_t;\sqrt{\alpha_t}, (1-\alpha_t)\boldsymbol{I})

ここで時刻tの状態を一気にサンプリングできて、
q(x_t|x_0)=N(x_t;\sqrt{\displaystyle{\prod_{i=1}^{t}\alpha_i}}, (1-\displaystyle{\prod_{i=1}^{t}\alpha_i})\boldsymbol{I})
となります。

この証明ですが、大抵の場合q(x_1|x_0)から始まる帰納法もしくは\cdotsでごまかすやつを使って証明します。どっちにしろ条件の方のx_0は固定します。
まあそれはそれでいいんですが、最近時刻tへ1回でサンプリングをするのは、離れたタイムステップ間でサンプリングすることの特殊ケースでしかないことに気づきました。
より一般的な式で証明した方が後々分かりやすくない?ということでやってみます。
つまりq(x_t|x_{t-k})kを動かすことで帰納法をやってみます。

離れたタイムステップ間のサンプリングにも対応する、より一般的な結果はこちらになります。
q(x_t|x_{t-n})=N(x_t;\sqrt{\displaystyle{\prod_{i=t-n+1}^{t}\alpha_i}}, (1-\displaystyle{\prod_{i=t-n+1}^{t}\alpha_i})\boldsymbol{I})

見づらいので、\alpha_{t|t-k}=\displaystyle{\prod_{i=t-k+1}^{t}\alpha_i}とします。
すると\alpha_{t|t-k}\alpha_{t-k} =(\displaystyle{\prod_{i=t-k+1}^{t}\alpha_i})\alpha_{t-k} = \displaystyle{\prod_{i=t-k}^{t}\alpha_i} = \alpha_{t|t-(k+1)}であることに注意しといてください。

帰納法で証明します。
証明したいことは、以下の通りです。
q(x_t|x_{t-n})=N(x_t;\sqrt{\alpha_{t|t-n}}x_{t-n}, (1-\alpha_{t|t-n})\boldsymbol{I})
n=1のとき、\alpha_{t|t-1}=\displaystyle{\prod_{i=t}^{t}\alpha_i}=\alpha_tであるため定義通りになります。
n=kのとき、題意が成り立つとすると、x_tは以下のようにサンプリングできます。


\begin{eqnarray}
x_t &= &\sqrt{\alpha_{t|t-k}}x_{t-k}+\sqrt{1-\alpha_{t|t-k}}\epsilon_1 \\
&=& \sqrt{\alpha_{t|t-k}}(\sqrt{\alpha_{t-k}}x_{t-(k+1)} + \sqrt{1-\alpha_{t-k}}\epsilon_2)+ \sqrt{1-\alpha_{t|t-k}}\epsilon_1 \\
& = & \sqrt{\alpha_{t|t-k}}\sqrt{\alpha_{t-k}}x_{t-(k+1)}  + \sqrt{\alpha_{t|t-k}}\sqrt{1-\alpha_{t-k}}\epsilon_2 + \sqrt{1-\alpha_{t|t-k}}\epsilon_1 \\
& = & \sqrt{\alpha_{t|t-(k+1)}}x_{t-(k+1)}  + \sqrt{\alpha_{t|t-k}}\sqrt{1-\alpha_{t-k}}\epsilon_2 + \sqrt{1-\alpha_{t|t-k}}\epsilon_1
 \end{eqnarray}

これでq(x_t|x_{t-(k+1)})の平均が\sqrt{\alpha_{t|t-(k+1)}}となることはわかりました。
分散については正規分布の再生性から、二項と三項の分散を足すだけでよくて、

\alpha_{t|t-k}(1-\alpha_{t-k})+1-\alpha_{t|t-k}=1-\alpha_{t|t-(k+t)}となります。
よって、q(x_t|x_{t-(k+1)})=N(x_t;\sqrt{\alpha_{t|t-(k+1)}}x_{t-(k+1)}, (1-\alpha_{t|t-(k+1)})\boldsymbol{I})

帰納法のあれがあーいうやつにより、証明完了です。