ドロップアウト

Dropout

ドロップアウト(Dropout)とは、ニューラルネットワークの学習時に、各層のニューロンをランダムに一定割合で無効化する正則化手法です。2012年にGeoffrey Hintonらによって提案され、深層学習における過学習対策として広く使われています。

ドロップアウトの仕組み

訓練時、各ニューロンは設定された確率(ドロップアウト率、通常0.2〜0.5)でランダムに「ドロップ」されます。ドロップされたニューロンは出力がゼロとなり、順伝播にも逆伝播にも参加しません。推論時(予測時)にはすべてのニューロンが使用されますが、出力にドロップアウト率を掛けてスケーリングします。

表:ドロップアウトの要点まとめ
ひとことで言うと学習中にニューロンをランダムに無効化して、過学習を防ぐ手法。
なぜ効くか特定のニューロンに頼れなくなるため、多数のモデルを平均したような効果が出る。
注意点推論(本番)時は無効にする。無効化率は0.2〜0.5が目安。

なぜ効果があるのか

ドロップアウトにより、ネットワークは特定のニューロンに依存しない冗長な表現を学習するようになります。これはアンサンブル学習の近似とも解釈でき、毎回異なるサブネットワークを学習することで、多数のモデルの平均的な予測を得る効果があります。

図:ドロップアウトの働き
1学習開始全ニューロンがある状態
▶
2ランダムに休ませる毎回違う組み合わせ
▶
3残りで学習特定の経路に頼れない
▶
4毎回変わる多様なモデルを学ぶ
▶
5本番では全部使う平均的な予測になる

適用のポイント

ドロップアウト率はハイパーパラメータとして調整が必要です。一般的に全結合層では0.5、畳み込み層では0.2〜0.3程度が使われます。最近ではバッチ正規化の普及により使用頻度が減っていますが、Transformerなどでは依然として重要な正則化手法です。