スコア関数の定義とランジュバン・モンテカルロ(Langevin Monte Carlo)法

ランジュバン・モンテカルロ(Langevin Monte Carlo)法は対数尤度の勾配であるスコア(score)を用いたサンプリング手法(MCMC)です。当記事ではスコア関数の定義とランジュバン・モンテカルロ法の数式について取りまとめを行いました。
「拡散モデル ーデータ生成技術の数理(岩波書店)」の$1$章やランジュバン・モンテカルロ法の論文などを参考に作成を行いました。

・用語/公式解説
https://www.hello-statisticians.com/explain-terms

・ランジュバン・モンテカルロ法論文

前提の確認

最尤法と対数尤度

パラメータ$\theta$に基づく同時確率密度関数が$p_{\theta}(\mathbf{x}) = P(x_1, \cdots , x_n|\theta)$のように表される時、同時確率密度関数を$\theta$に着目した関数を尤度$L(\theta) = p_{\theta}(\mathbf{x})$のように定義する。

この時、対数尤度$\log{L(\theta)}$は下記のように表される。
$$
\large
\begin{align}
\log{L(\theta)} = \log{p_{\theta}(\mathbf{x})}
\end{align}
$$

最尤法では上記の対数尤度$\log{L(\theta)}$を最大にする$\theta$を元の確率分布のパラメータの推定値であるとみなす。詳しくは下記などでも取り扱った。

・Python実装を通して学ぶ、統計モデリング入門(筆者作成)

スコア関数の定義

対数尤度$\log{L(\theta)} = \log{p_{\theta}(\mathbf{x})}$の勾配をスコア(score)という。統計学では一般的に対数尤度の$\theta$に関する勾配をスコアと定義するが、拡散モデルなどでランジュバン・モンテカルロ法を取り扱う際は入力値$\mathbf{x}$についての勾配を計算する。

入力値$\mathbf{x}$に関するスコア関数を$s(\mathbf{x})$とおくと、$s(\mathbf{x})$は下記のように定義される。
$$
\large
\begin{align}
s(\mathbf{x}) & \equiv \nabla_{\mathbf{x}} \log{p_{\theta}(\mathbf{x})}: \mathbb{R}^{d} \longrightarrow \mathbb{R}^{d} \\
\nabla_{\mathbf{x}} &= \left( \begin{array}{c} \displaystyle \frac{\partial}{\partial x_1} \\ \vdots \\ \displaystyle \frac{\partial}{\partial x_d} \end{array} \right)
\end{align}
$$

また、対数関数の微分の公式に基づいてスコア関数について下記が成立する。
$$
\large
\begin{align}
s(\mathbf{x}) = \nabla_{\mathbf{x}} \log{p_{\theta}(\mathbf{x})} = \frac{\nabla_{\mathbf{x}} p_{\theta}(\mathbf{x})}{p_{\theta}(\mathbf{x})}
\end{align}
$$

上記より、スコア関数は「勾配ベクトルを確率で割ったベクトル」であることが確認できるので、「確率の小さい領域では大きくなり、確率の小さい点では小さくなる」という特徴を持つ。ランジュバン・モンテカルロ法ではこの特徴に基づいて、確率(尤度)の大きな領域を優先的に探索できる。

MCMC法の概要

下記などで詳しく取り扱った。

・Python実装を通して学ぶ、統計モデリング入門(筆者作成)

ランジュバン・モンテカルロ法

ランジュバン・モンテカルロ法の数式

ランジュバン・モンテカルロ法では正規乱数ベクトル$\mathbf{u}_{k} \sim \mathcal{N}(\mathbf{0},\mathbf{I})$を用いてベクトル$\mathbf{x}_{k}$を下記の漸化式に基づいてサンプリングを行う。
$$
\large
\begin{align}
\mathbf{x}_{k+1} &= \mathbf{x}_{k} + \alpha \nabla_{\mathbf{x}} \log{p(\mathbf{x}_{k})} + \sqrt{2 \alpha} \mathbf{u}_{k} \\
&= \mathbf{x}_{k} + \alpha s(\mathbf{x}) + \sqrt{2 \alpha} \mathbf{u}_{k} \\
&= \mathbf{x}_{k} + \alpha \frac{\nabla_{\mathbf{x}} p_{\theta}(\mathbf{x})}{p_{\theta}(\mathbf{x})} + \sqrt{2 \alpha} \mathbf{u}_{k}
\end{align}
$$

ランジュバン・モンテカルロ法の解釈

ランジュバン・モンテカルロ法の漸化式ではスコア関数の値に基づいてベクトル$\mathbf{x}_{k}$の値をUpdateし、サンプリングを行う。

上記に基づいてランジュバン・モンテカルロ法では確率の大きな領域を中心にサンプリングを行うことができる。

「スコア関数の定義とランジュバン・モンテカルロ(Langevin Monte Carlo)法」への1件の返信

コメントは受け付けていません。