Dropoutに関する誤解

機械学習において、モデルが訓練データに一致しすぎるのを防ぐための手法としてドロップアウトがあります。

ドロップアウトによってどのように訓練するのかというところで、自分の中でどうも誤解していたようでした。

スポンサーリンク

以前の理解

各ノードを通して得られた演算結果を評価データと比較することで学習しますが、この演算結果の一部を予め決めていた確率で取り除くことで、過学習を防ぐ。

と理解していましたが、色々読んでいるとどうも違うようで…

今の理解

最初に演算グラフを構築する際に、あらかじめ決めていた確率でノードそのものを取り除くことで、不均等なグラフにして過学習を防ぐ。

というのが正しい?ようです。

正確にはノードでの演算結果をある確率で 0 にする、的なことが AlexNet の論文に書いてありました。

最後だけ演算結果を無視するのと途中のノードの演算結果を無視するのでは全然意味が変わってきそうですが、数学にも脳科学にも明るいわけではないので、他のニューロンからの入力の一部が入力側と出力側のニューロンの互いにどれほどの影響を与えているのかはわかりません…

(追記 2017/02/26)

過去の自分のメモを見てたら、ドロップアウトはユニット (=グラフ) の一部を欠落させることで汎化性能を高める、とか書いてありましたね。ちゃんと覚えておけよ…(^^;)

スポンサーリンク

コメント・質問する