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


はじめに

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.

この記事が気に入ったらサポートをしてみませんか?