AI・機械学習の基本概念

ドロップアウト どろっぷあうと

過学習防止ニューラルネットワーク正則化アンサンブル汎化ランダム無効化
ドロップアウトについて教えて

簡単に言うとこんな感じ!

「毎回、授業に出る人をランダムに休ませながらチームで練習する」イメージだよ!ニューラルネットワークの学習中に、ランダムでニューロン(ノード)を一時的にオフにすることで、「特定のニューロンに依存する丸暗記」を防いで、チーム全体で汎用的な力をつける——それがドロップアウトなんだ!


ドロップアウトとは

ドロップアウト(Dropout)とは、ニューラルネットワークの学習時に、各ニューロン(ノード)を確率 p(例:50%)でランダムに無効化する正則化手法です。無効化されたニューロンは、そのミニバッチの順伝播・逆伝播に参加しません。次のミニバッチでは別のランダムな組み合わせが無効化されます。

ドロップアウトの本質的な効果は「アンサンブル学習の近似」です。毎回異なる部分ネットワークで学習することが、多様なモデルを組み合わせるアンサンブル学習と等価であり、これが汎化性能向上につながるとされています。また、特定のニューロンが担うべき仕事を他のニューロンも分担できるようにすることで、共同適応(co-adaptation)を防ぎます。

推論(テスト)時はドロップアウトを適用せず、全ニューロンを使います。ただし出力のスケールが変わらないよう、各ニューロンの出力に (1-p) を掛ける(または学習時に 1/(1-p) で割る)調整が行われます。


ドロップアウトの設定と効果

パラメータ典型的な値効果
ドロップアウト率 p0.2〜0.5(入力層は0.1〜0.2)値が大きいほど強い正則化(過学習防止)
適用タイミング学習時のみ推論時は全ニューロンを使用(スケール調整あり)
層ごとの設定全結合層に多く適用畳み込み層には別手法(SpatialDropout等)を使うことも

ドロップアウト率の目安

入力層 (p = 0.1〜0.2)

隠れ層1 (p = 0.3〜0.5) ← 最も効果的に使われる

隠れ層2 (p = 0.3〜0.5)

出力層 (ドロップアウト不使用が多い)

歴史と背景

  • 2012年:Srivastava・Hinton・Krizhevsky・Sutskeverらが「Dropout: A Simple Way to Prevent Neural Networks from Overfitting」を発表
  • 2012年:AlexNetがImageNet競技で圧勝した際にドロップアウトが使われ、ディープラーニングの実用性が広く認知される
  • 2013年:理論的な解釈として「アンサンブル学習の近似」という観点が整理される
  • 2015年バッチ正規化の登場により、ドロップアウトとの使い分けが検討されるようになる
  • 2017年以降Transformerアーキテクチャ(BERT・GPTなど)でもドロップアウトが正則化手法として標準的に採用される
  • 現在:過学習防止の定番手法として、ほぼすべてのディープラーニングフレームワーク(PyTorch・TensorFlow/Keras)に組み込まれている

ドロップアウトの仕組み

学習時 vs 推論時のドロップアウト 学習時(一部ノードがランダムにOFF) 灰色=OFF(p=0.5の場合) 推論時(全ノードがON) 全ノード有効 × 出力スケール調整 毎ミニバッチで無効化するノードはランダムに変わる

関連する規格・RFC

規格・RFC番号内容
ISO/IEC 22989:2022AI概念・用語(ニューラルネットワークの訓練技法を含む)

関連用語