はじめに
Monte Carlo dropoutで予測の不確実性を算出する手法の概要を説明します。
事前準備(変分ベイズ)
前提知識として必要なベイズ推論と変分推論について説明します。
ベイズ推論
通常のニューラルネットワークでは、出力は変数$y$ですが、ベイズ推論では分布$p(y|x)$を考えます。
分布が尖った形になっている場合は予測の不確実性が低く、裾が広い場合は不確実性が高いことになります。
ラベルの分布は、パラメータの分布$p(\theta)$を考え、積分で$\theta$を消去することで求めます。
$$
p(y|x) = \int p(y|x, \theta)p(\theta) {\rm d}\theta
$$
変分推論
パラメータの事後分布$p(\theta|X,Y)$を、計算しやすい分布$q(\theta)$で近似することを考えます。
近似分布$q(\theta)$は、$p(\theta|X,Y)$とのKLダイバージェンスが小さければ、よい近似となります。
$$
D_{KL}[q(\theta)||p(\theta|X,Y)] = \int q(\theta)\ln\frac{q(\theta)}{p(\theta|X,Y)} {\rm d}\theta
$$
しかし、直接最小化することは難しいため、データの周辺分布 $\ln p(X,Y)$ とその下界(ELBO)$\mathcal{L}(\xi)$ を考えます。
これらと、上記KLダイバージェンスには、下記の関係があることが知られています。
$$
\ln p(X,Y) = \mathcal{L}(\xi) + D_{KL}[q(\theta;\xi)||p(\theta|X,Y)]
$$
ここで、$\xi$は$q(\theta)$の形を決めるパラメータで、変分推論では$\xi$を最適化します。
この関係性を用いて、KLダイバージェンスを最小化する問題を、ELBOを最大化する問題に置き換えます。
ELBOは下記で定義されます。
$$
\mathcal{L}(\xi) = \int q(\theta;\xi)\ln \frac{p(X,Y,\theta)}{q(\theta;\xi)} {\rm d}\theta
$$
同時確率を条件付き確率に書き換えると、$p(X,Y,\theta)=p(Y|X,\theta)p(X|\theta)p(\theta)$となり、$X$と$\theta$は独立のため $p(X,Y,\theta)=p(Y|X,\theta)p(X)p(\theta)$ と書くことができます。
これをELBOに代入すると下記のようになります。
\mathcal{L}(\xi) = \int q(\theta;\xi) \ln p(Y|X, \theta) {\rm d}\theta + \int q(\theta;\xi) \ln p(X) {\rm d}\theta + \int q(\theta;\xi) \ln \frac{p(\theta)}{q(\theta;\xi)} {\rm d}\theta
= \mathbb{E}_{q(\theta;\xi)}[\ln p(Y|X, \theta)] + \ln p(X) - D_{KL}[q(\theta;\xi)||p(\theta)]
$\ln p(X)$は定数なので、ELBOを最大化するために、下記の負の対数尤度と$q(\theta)$とパラメータの事前分布とのKLダイバージェンスの和を最小化すればよいことが分かります。
\mathbb{E}_{q(\theta;\xi)}[-\ln p(Y|X, \theta)] + D_{KL}[q(\theta;\xi)||p(\theta)]
Monte Carlo dropout
概要
dropoutは、ニューラルネットワークの一部のユニットをランダムに不活化する操作です。
不活化するユニットは、毎回ランダムに選ぶため、dropoutの操作ごとに異なるニューラルネットワークを得ることができます。
この特性を利用して、dropoutの操作後のニューラルネットワークのパラメータを、$q(\theta;\xi)$からのサンプリングと考えます。
つまり、負の対数尤度の期待値を最小化するために、各バッチでdropoutを適用し、そのパラメータでの負の対数尤度を最小化します。
学習方法
パラメータ$\theta$でのデータ$x$の予測を$p(y|x,\theta)=\mathcal{N}(f(x;\theta),\sigma^2)$、正解を$y$とすると、対数尤度は$\ln p(y|x,\theta)=-\frac{\ln 2\pi\sigma^2}{2} - \frac{(y-f(x;\theta))^2}{2\sigma^2}$となります。
つまり、負の対数尤度を最小化するためには、2乗誤差を最小化すればよいことになります。
また、事前分布として、平均0の正規分布を仮定すれば、事前分布とのKLダイバージェンスを最小化するためには、$\theta$のL2ノルムを最小化すればよいことになります。
まとめると、各ミニバッチでdropoutを適用してパラメータ$\theta$をサンプリングし、平均二乗誤差とパラメータのL2ノルムを最小化します。
$$
\mathcal{L} = \frac{1}{n} \sum_{i=1}^n (y_n - f(x_n;\theta))^2 + \alpha ||\theta||_2^2
$$
ここで、$\alpha$は、2つの項のバランスを調整するパラメータです。
不確実性の算出
dropoutを推論時にも適用し、n個のパラメータ${\theta_1, \cdots, \theta_n}$をサンプリングし、事後分布の期待値と分散を計算します。
$$
\mu(y) = \frac{1}{n}\sum_{i=1}^n f(x;\theta_i)
$$
$$
{\rm Var}(y) = \sigma^2 + \frac{1}{n}\sum_{i=1}^n f(x;\theta_i)^T f(x;\theta_i) - \mu(y)^T \mu(y)
$$
参考資料
- Y. Gal and Z. Ghahramani, Dropout as a bayesian approximation: Representing model uncertainty in deep learning, ICML, 2016.