Denoising Score Matching の簡潔な導出
Denoising Score Matching (PDF) は、データに摂動を加えたものに対するスコアマッチングを効率的に学習する手法です。もとの論文では、目的関数の 2 次式を展開して内積項の積分を変形することで導出しており、岡野原さんの本でもこれに倣った証明を載せています(本ではガウスノイズの場合に解析解の一致を見るという別証明も載っています)。この記事では、目的関数の勾配が一致することを示す短い別証明を与えます。積分と微分を自由に交換したりしていますが、そのための条件は省略します。
まず、データを $x$ とし、これに摂動を加えた変数を $\tilde x$ とします。このとき、$\tilde x$ に対するスコアマッチングとは、モデル $s_\theta(\tilde x)$ を用いて次の目的関数を最小化することです。
\[\mathcal L_{\text{SM}}(\theta) = \mathbb E_{p(\tilde x)} \left[ \left\| \nabla_{\tilde x} \log p(\tilde x) - s_\theta(\tilde x) \right\|^2 \right]\]ここで、$\nabla_{\tilde x}$ は $\tilde x$ に関する勾配です。さて、スコア関数は $ \nabla_{\tilde x} \log p(\tilde x) = \mathbb E_{p(x|\tilde x)}[ \nabla_{\tilde x} \log p(\tilde x|x) ] $ と変形できます。この式が正しいことは、次のように示せます。
\[\begin{aligned} &\mathbb E_{p(x|\tilde x)} [ \nabla_{\tilde x} \log p(\tilde x|x)] - \nabla_{\tilde x} \log p(\tilde x) \\ &= \mathbb E_{p(x|\tilde x)} [ \nabla_{\tilde x} \log p(\tilde x, x) ] - \nabla_{\tilde x} \log p(\tilde x) \\ &= \mathbb E_{p(x|\tilde x)} [ \nabla_{\tilde x} \log p(x|\tilde x) ] \\ &= \int p(x|\tilde x) \, \frac{\nabla_{\tilde x} \, p(x|\tilde x)}{p(x|\tilde x)} \, dx \\ &= \nabla_{\tilde x} \int p(x|\tilde x) \, dx \\ &= \nabla_{\tilde x} 1 \\ &= 0 \end{aligned}\]1 行目では $\nabla_{\tilde x} \log p(x) = 0$ を用いています。3 行目で対数の微分を展開し、5 行目で確率の積分が 1 に正規化されていることを用いています。
モデル $s_\theta(\tilde x)$ のパラメータ $\theta$ に関するヤコビアンを $J_\theta(\tilde x)$ と書くことにして、目的関数の勾配を上の式を用いて変形します。
\[\begin{aligned} \nabla_\theta \mathcal L_{\text{SM}}(\theta) &= \mathbb E_{p(\tilde x)} \left[ -2J_\theta(\tilde x)^\top (\nabla_{\tilde x} \log p(\tilde x) - s_\theta(\tilde x))\right] \\ &= \mathbb E_{p(\tilde x)} \left[ -2J_\theta(\tilde x)^\top \left( \mathbb E_{p(x|\tilde x)} \left[ \nabla_{\tilde x} \log p(\tilde x|x) \right] - s_\theta(\tilde x) \right) \right] \\ &= \mathbb E_{p(x, \tilde x)} \left[ -2J_\theta(\tilde x)^\top (\nabla_{\tilde x} \log p(\tilde x|x) - s_\theta(\tilde x)) \right] \\ &= \nabla_\theta \mathbb E_{p(x, \tilde x)} \left[ \left\| \nabla_{\tilde x} \log p(\tilde x|x) - s_\theta(\tilde x) \right\|^2 \right]. \end{aligned}\]そこで、最右辺の期待値項を $ \mathcal L_{\text{DSM}}(\theta) = \mathbb E_{p(x, \tilde x)} \left[ \| \nabla_{\tilde x} \log p(\tilde x|x) - s_\theta(\tilde x) \|^2 \right] $ とおけば、$\mathcal L_{\text{SM}}$ と $\mathcal L_{\text{DSM}}$ は勾配が一致するため、定数の差しかないことがわかります。これで DSM が導出できました。
スコア関数を条件付きスコア関数に置き換える式 $ \nabla_{\tilde x} \log p(\tilde x) = \mathbb E_{p(x|\tilde x)} \left[ \nabla_{\tilde x} \log p(\tilde x|x) \right] $ が強力で、これが DSM の核であることがこの導出からわかります。この式は、$x$ と $\tilde x$ が何であっても成り立つため、ほかにも応用がありそうな予感がします。