LoginSignup
2
0

ニューラルネットワークの予測の不確実性(Monte Carlo dropout・概要編)

Posted at

はじめに

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.
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0