Dropoutの概要のべんきょ

やったこと

↓でDropoutの概要を知る。

【ニューラルネットワーク】Dropout(ドロップアウト)についてまとめる - Qiita

なぜやったのか

pytorch云々でいろいろいじっていたら、そういやDropoutよくわからないなぁってなったから。

メモ

Dropoutとは

ニューラルネットワークの学習時に、ある一定の割合のノードを不活性化して学習を行う方法。

この方法のねらい

過学習を抑えながらパラメータを行い、精度を上げる。

やっていること

※pは調整パラメータ
Dropoutはレイヤーの各ノードに設置される。値はベルヌーイ分布に従う(確率pで1、p-1で0)。
確率pでそのまま次の入力値に、1-pで0を次の入力値にする。
レイヤー内で一定の割合でノードが活性化するのではなく、各ノードで活性化する確率が与えられる。
活性化されたノードと不活性化ノードがある状態でパラメータを更新。テスト時にはパラメータにpをかける。

pの調整で試されたこと

レイヤーのノード数を固定しDropout率をいじる

訓練時に活性化するノードの数をパラメータで変化させて、AccuracyとLossを観測。

ノード数nとしたときにp×nを一定値に固定しpとnをいじる

訓練時に活性化するノードの数を固定して、パラメータを変化させてAccuracyとLossを観測。

活性化ノードの割合

活性化しているノードが多すぎても少なすぎても学習がうまくいかない。
そのため、inputを行った直後の場合だと80%程度が活性化しているのが望ましい。
隠れ層の場合は50%前後が活性化しているのがいいみたい?

わからなかったところ・あやふやなところ

わからないところがわからない。実際に動かしてみたり実装を読んだほうがわかるのかなぁ。

その他

次はDropoutの実装をやりたい。