【どろっぷあうと】

ドロップアウト とは?

最終更新:
💡 学習中、一部の値を一時的に使わない

ニューラルネットワークの学習時、一部の値をランダムにゼロにする正則化手法。モデルを削ることとの違いと、学習・推論時の処理を解説します。

📌 このページのポイント
ドロップアウト:学習中だけ一時的にゼロ学習時の一例値 1 → 0値 2 → 4値 3 → 6値 4 → 0残った値を2倍に調整通常の推論時値 1 → 1値 2 → 2値 3 → 3値 4 → 4この処理では変更なしKerasで rate = 0.5 とした説明用の例どの値をゼロにするかはランダムモデルの一部を永久に削除する処理ではない
この層の入力と出力の対応です。毎回ちょうど半数になる保証ではありません。学習モードでは残った値を1÷(1−率)倍にします。
ひよこ ひよこ
ドロップアウトは、モデルの一部を削るの?
ペンギン先生 ペンギン先生
ずっと削除するわけではないよ。学習中の計算で、一部のユニットの値をランダムにゼロにする。どれを使わないかを変えながら学習するんだ。
ひよこ ひよこ
それで、何がよくなる?
ペンギン先生 ペンギン先生
特定のユニットの組み合わせへ依存し過ぎることを抑える正則化の方法だよ。学習した例だけに合わせ過ぎる、過学習を減らす助けになる。ただし、使えば必ず精度が上がるわけではないんだ。
ひよこ ひよこ
どれくらい使わないようにする?
ペンギン先生 ペンギン先生
ドロップアウト率で割合を指定する。適した値はモデルやデータで違うので、使わない場合とも比較して、検証用データで確認しよう。単に大きくすればよい数字ではないんだ。
ひよこ ひよこ
ゼロにした分、値の大きさが変わる?
ペンギン先生 ペンギン先生
スケールの調整も考えるよ。KerasのDropoutは学習時、残った値を1÷(1−率)倍にする。重みを全部書き換える説明ではない。通常の推論時は、そのランダムな無効化や同じスケール調整をしないんだ。
ひよこ ひよこ
本番でも毎回、使わない場所が変わる?
ペンギン先生 ペンギン先生
通常は学習モードだけで使うので、推論では無効化を止めるよ。実装の学習・推論モードを確認しよう。ドロップアウトを止めたからといって、他の処理も含めた予測が必ず同一になるとまではいえないんだ。
もっと詳しく知りたい人へ

rateを0.5にしたら、毎回ぴったり半分?

ランダムな無効化の割合を指定するので、小さな入力で毎回ちょうど半分になる保証ではありません。また、マスクを共有する形などは設定によって変わります。

trainable=Falseにすれば、止められる?

KerasのDropoutには、学習で更新する重みがありません。trainableの指定では動作は切り替わらず、trainingによる学習・推論モードで無効化を行うかが変わります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ドロップアウト」って出てきたら「学習中に一部の値をランダムにゼロにする正則化手法」と思えばだいたいOK!
📖 おまけ:英語の意味
「Dropout」 = 一時的に抜けること
💬 ユニットを学習中の計算からランダムに外す考え方です。Srivastavaらの2014年の論文が、代表的な説明と実験結果を示しています。

参考資料

← 用語集にもどる