ベイズ深層学習についての勉強をはじめたので、外観についてまとめてみようと思います。
深層学習でベイズとは?
深層学習は主に、確率的勾配降下法に基づいて学習されます。
以下ではNN(ニューラルネットワーク)と表現します
確率的勾配降下法では、損失関数を最小にするパラメータを探索します。
しかし、損失関数を最小にするパラメータはNNの表現力のため、しばしば過学習を起こしてしまいます。
そこで、勾配降下法を途中で止めたり、正則化を加えたり、ドロップアウトを用いることで過学習を抑えています。
ベイズ推測を深層学習で用いるモチベーションも過学習抑制することになります。また、ベイズ推測により不確実要素を取り入れることが可能になるといわれています。
ベイズ推測については以前書いたブログを参照ください。
ベイズ推測についての説明
統計モデル
深層学習でベイズを行うと言われても、NNは確率分布なのと思う方もいると思います。ベイズ深層学習では以下のようにモデルを扱います
深層学習の出力等の詳しい説明は以前のブログを参照ください。
深層学習についての説明
回帰モデル
NNでの回帰出力をf(x|w)とします。xは入力、 wはパラメータとします。
誤差関数はE = \| y - f(x|w)\|^2の二乗誤差を用います。
そこで回帰モデルは
p(y|x,w) = \frac{1}{(2\pi\sigma^2)^{(1/2)}}exp(-E/2\sigma^2)
とすることができます。
分類モデル
具体例として二値分類を考えます。
NNでの出力を回帰モデル同様 f(x|w) とします。ここで分類モデルなのでf(x|w) \in [0,1]に注意してください。
そこで分類モデルは
p(y|x,w) = f(x|w)^y(1-f(x|w))^{(1-y)}
となります。
例として上記の二つを考えましたが、統計モデルとしては他にも考えられます。是非調べてみてください。
いざベイズ推測
統計モデルが考えられたので、あとは事前分布を設定すればベイズ推測を行うことができますね。
しかし、NNのような複雑なモデルではそう簡単にベイズ推測を行うことができません。それは事前分布を簡単に計算できないからです。
主にベイズ推測ではMCMCを用いた事後分布からのサンプリングを利用しますが、NNでは事後分布の広がりが大きく探索範囲が広いため従来のMCMC法では十分にサンプリングを行うことができません。また、バッチ学習では計算量がかかりすぎるなどの問題があります。
そこで次のような確率的方法でバッチ学習を用いずミニバッチでベイズ推測を行う手法が提案されています
確率的勾配ランジュバン方程式
これはバッチ学習では計算量がかかりすぎる問題点を解消した、ミニバッチでMCMCが行える方法になります。
確率的変分推論
これは完全な事後分布ではなく、事後分布を近似する変分推論という手法をミニバッチで行う手法になります。変分推論についてもブログが書ければと思っています。
確率的逆伝播法
これは変分推論同様、事後分布を近似する手法で期待値伝播法という考え方に基づいて提案されています。
上記のような手法を用いて、事後分布を近似しベイズ推測を行います。
最後に
今回はベイズ深層学習の概観について説明しました。
ベイズ深層学習はまだまだ研究の余地があるように思います。
この記事を読んで興味を持っていただけたら幸いです。
次回はもう少し踏み込んだ記事が書ければと思っています。
参考文献
須山敦志(2019) :『ベイズ深層学習』, 講談社