Dropoutによる近似ベイズ推論について2



以前に、Dropoutによる近似ベイズ推論に関する記事をあげました。

Dropoutによる近似ベイズ推論について
(adsbygoogle = window.adsbygoogle || ).push({});割と今更ですが、深層学習において、汎化性能を保つための工夫の一つであるDropoutを使って推論を行うことが、近似的にベイズ推論になっているという論文がありますので、それについて記します。また、実際に試験的...

上記では、ソフトマックス関数の出力値の平均を、カテゴリカル分布のパラメータと見て、その不確実性をエントロピーとして算出していました。

これについて、少し気になることがあったので、確認をしてみました。

エントロピー算出検証

論文では、上記記事のような計算を具体的に行ったというのではなく、「カテゴリカル分布のパラメータが揺らぐので、それをエントロピーなり分散なりで計算すれば、深層学習の予測の不確実性を定量化できるのでは」と提言をしています。

ただ、例えばエントロピーを使ったとしても、定量化計算には、具体的には次のような計算の仕方があるのかと思います。

  • 出力ベクトル→Softmax→平均値→エントロピー
  • 出力ベクトル→平均値→Softmax→エントロピー

どちらもやり方としては問題なさそうな気がしますが、両方の結果は一致しないように思います。

これについて、学習させるデータ、推論データ、ドロップアウトなどについて、乱数固定して、両方の結果を見比べてみようと思います。

準備

もろもろインポートします。

乱数を固定して、CPUで学習させることにします。

GPUで乱数固定する場合は、Chainerであれば、cupyで設定することになります。

前回同様にMNISTについてサクッと学習させます。

ひとまずこれで準備完了です。

出力ベクトル→Softmax→平均値→エントロピー

モデルの出力値のソフトマックス関数の値について、モンテカルロドロップアウトサンプリングの平均値をとってエントロピーを計算させてみます。

これは前回記事と同じになります。

結果についてはやはり前回同様、エントロピーが低いものは予測しやすい画像、エントロピーが高いものは予測しにくい画像が集まりました。

出力ベクトル→平均値→Softmax→エントロピー

次に、モデルの出力値のモンテカルロドロップアウトサンプリングの平均値について、ソフトマックス関数をとってエントロピー算出してみます。

コード的には少し変更するだけですね。

やっぱりピッタリ一致はしませんでした。

ただし、傾向としては同じようなものを抽出してきている様子です。

果たしてこれは、どちらがより、深層学習の認識の不確かさを正しく計算していることになるのでしょう…。

おまけとまとめ

おまけなんですが、ドロップアウトなしの出力ベクトル→Softmax→エントロピーを計算させた結果が以下になります。

やっぱり似たようなものが出てきたよ笑

この結果を能動学習に用いるなどであれば、いずれも似たような効力は得られそうな気がします。

ただし、モンテカルロドロップアウトサンプリングを導出することで、ベイズの枠組みとして考えられるという話ですので、ベイズの枠組みとして考えるならば、やはりモンテカルロドロップアウトサンプリングから予測分布を導出する形が数式的に納得がいく気がしますね。

また、論文著者のサイトで以下のものがあります。

http://mlg.eng.cam.ac.uk/yarin/blog_2248.html

これのソフトマックス尤度の考えなどからすれば、やはり「出力ベクトル→Softmax→平均値→エントロピー」が今のところ一番納得できるやり方なのかなと思いました。



 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です