Gin04ghデータ分析業務、予測モデル開発などを担当しています。勉強してきた技術などを適当に書いていければと思います。Python、R、SAS、JavaScript、PHP、Rubyらへんが得意です。以前に、Dropoutによる近似ベイズ推論に関する記事をあげました。).push({});割と今更ですが、深層学習において、汎化性能を保つための工夫の一つであるDropoutを使って推論を行うことが、近似的にベイズ推論になっているという論文がありますので、それについて記します。実際に試験的...上記では、ソフトマックス関数の出力値の平均を、カテゴリカル分布のパラメータと見て、その不確実性をエントロピーとして算出していました。これについて、少し気になることがあったので、確認をしてみました。論文では、前回の記事のように具体的に計算は行っておらず、「カテゴリカル分布のパラメータが揺らぐので、それをエントロピーなり分散なりで計算すれば、深層学習の予測の不確実性を定量化できるだろう」と言っています。出力ベクトル→平均値→Softmax→エントロピーと算出してみると、どっちも問題なさそうな気がするのですが、どちらがより妥当なのかが疑問に思いました。これについて、学習させるデータ、推論データ、ドロップアウトなどについて、乱数固定して、両方の結果を見比べてみました。準備もろもろインポートします。tqdm乱数を固定して、CPUで学習させることにします。GPUで乱数固定する場合は、Chainerであれば、cupyで設定することになります。np.random.seed(0)12random.seed(0)np.random.seed(0)前回同様にMNISTについてサクッと学習させます。'elapsed_time']))trainer.run()ひとまずこれで準備完了です。出力ベクトル→Softmax→平均値→エントロピーモデルの出力値のソフトマックス関数の値について、モンテカルロドロップアウトサンプリングの平均値をとってエントロピーを計算させてみます。これは前回記事と同じやり方になります。30')plt.show()結果についてはやはり前回同様、エントロピーが低いものは予測しやすい画像、エントロピーが高いものは予測しにくい画像が集まりました。次に、モデルの出力値のモンテカルロドロップアウトサンプリングの平均値について、ソフトマックス関数をとってエントロピー算出してみます。30')plt.show()やっぱりピッタリ一致しませんでした。傾向としては同じようなものを抽出してきている様子です。おまけとまとめおまけなんですが、ドロップアウトなしの出力ベクトル→Softmax→エントロピーを計算させた結果が以下になります。30')plt.show()やっぱり似たようなものが出てきた笑いずれの方法も、これらの結果を能動学習に用いるなどであれば、似たような効力は得られそうな気がします。モンテカルロドロップアウトサンプリングを導出することで、ベイズの枠組みとして考えられることは、論文で理論的に定式化していますので、モンテカルロドロップアウトサンプリングから予測分布を導出する形まで、数式的には納得がいく気がします。論文著者のサイトで以下のものがあります。http://mlg.eng.cam.ac.uk/yarin/blog_2248.htmlこれのソフトマックス尤度の考えなどからすれば、やはり「出力ベクトル→Softmax→平均値→エントロピー」が今のところ一番納得できるやり方な気はするのですが、結果が同じでないということは微妙に何か違うことなので、この辺りは厳密にはどう考えればいいのかなーって思いました。実験したソースコードは以下にまとめました。コメントをキャンセルメールアドレスが公開されることはありません。・掲載されている広告について当サイトでは、第三者配信の広告サービス(Googleアドセンス)を利用しています。使用することがあります。Googleアドセンスに関する詳細やこのような情報が広告配信事業者に使用されないようにする方法については、こちらをご参照ください。・使用しているアクセス解析ツールについて当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。このGoogleアナリティクスはトラフィックデータの収集のために『Cookie』を使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。『Cookie』を無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。この規約に関して、詳しくはこちらをご覧ください。