訓練時にニューラルネットワークのニューロンをランダムに一定確率で無効化することで、特徴量の共適応を防ぎ汎化性能を向上させる正則化手法。2012年にHintonらが提案し、深層学習の基盤技術となった。LLMではFine-tuning時に主に使用される。
PC構成ビルダーで最適なパーツを選択
Dropout は 2012 年に Geoffrey Hinton らによって提案されたニューラルネットワークの正則化手法である。訓練時の各 Forward Pass において、ネットワーク内のニューロンを確率 p でランダムに無効化(出力を 0 に設定)する。これにより、特定のニューロンの組み合わせに依存した特徴表現(共適応)を防ぎ、各ニューロンがより頑健な特徴を学習するよう促す。
推論時にはすべてのニューロンが有効化され、出力に (1 - p) を乗じることで訓練時との期待値を一致させる(Inverted Dropout では訓練時に 1/(1-p) を乗じることで推論時の処理を不要にする)。
Dropout の動作は以下のように形式化される。
標準的な全結合層の出力は y = f(Wx + b) であるが、Dropout を適用すると以下のようになる。
x_masked = x ⊙ m(⊙ はアダマール積)y = f(W * x_masked + b)Inverted Dropout(実装上の標準)では:
x_masked = (x ⊙ m) / (1 - p)y = f(Wx + b)(変更なし)| パラメータ | 説明 | 典型的な値 |
|---|---|---|
| p(ドロップ率) | ニューロンを無効化する確率 | 0.1〜0.5 |
| 1-p(保持率) | ニューロンを有効に保つ確率 | 0.5〜0.9 |
| スケーリング係数 | 1/(1-p)、期待値一致のため | 1.11〜2.0 |
Transformer アーキテクチャでは、Dropout は以下の複数箇所に適用される。
| 適用箇所 | 説明 | 効果 |
|---|---|---|
| Attention Dropout | Softmax 後の Attention 重みに適用 | Attention パターンの多様化 |
| Residual Dropout | 残差接続の加算前に適用 | 層間の情報フローの正則化 |
| Embedding Dropout | トークン埋め込み後に適用 | 入力表現の頑健性向上 |
| FFN Dropout | Feed-Forward Network 内に適用 | 中間表現の正則化 |
| Output Dropout | 最終線形層前に適用 | 出力分布の滑らか化 |
各箇所のドロップ率は通常同一値が使用されるが、箇所ごとに異なる値を設定する手法(Heterogeneous Dropout)も研究されている。
基本的な Dropout から多数の派生手法が開発されている。
| 変種 | 原理 | 主な用途 |
|---|---|---|
| DropConnect | 重み(接続)をランダムに無効化 | 全結合層 |
| Spatial Dropout | チャネル全体をドロップ | CNN |
| DropPath(Stochastic Depth) | 層全体をスキップ | ResNet、Vision Transformer |
| Variational Dropout | ベイズ推論に基づく適応的ドロップ率 | 不確実性推定 |
| Concrete Dropout | ドロップ率を学習可能パラメータ化 | 自動チューニング |
| RDropout(R-Drop) | 同一入力の 2 回の Forward の KL を最小化 | Fine-tuning |
| DropBlock | 連続領域をブロック単位でドロップ | CNN |
| Targeted Dropout |
LLM の文脈では、DropPath は Vision Transformer(ViT)で広く使用されており、R-Drop は Fine-tuning 時の正則化として効果が報告されている。
現代の大規模 LLM では、事前訓練時に Dropout を使用しないケースが主流である。
| モデル | パラメータ数 | Dropout Rate | 備考 |
|---|---|---|---|
| GPT-2 | 1.5B | 0.1 | 初期の Transformer LLM |
| GPT-3 | 175B | 0.0 | Dropout 不使用の先駆け |
| LLaMA | 7B-65B | 0.0 | Meta の効率的 LLM |
| LLaMA 2 | 7B-70B | 0.0 | 後継モデルも不使用 |
| Mistral | 7B | 0.0 | 小規模ながら高性能 |
| Falcon | 7B-180B | 0.0 |
この傾向の理由は以下の通りである:
ただし、Fine-tuning やデータ量が限定的なシナリオでは Dropout は依然として有効な正則化手法である。
Dropout を実装する際の重要なポイントを以下に示す。
| 注意点 | 説明 | 対策 |
|---|---|---|
| 訓練/推論モードの切替 | model.train() と model.eval() で挙動が変わる | 推論時に eval() を確実に呼ぶ |
| シード固定 | 再現性のためにランダムシードを固定 | torch.manual_seed() を使用 |
| 勾配への影響 | ドロップされたニューロンは勾配が 0 | 期待値は正しく保たれる |
| バッチノルムとの相互作用 | Dropout と BatchNorm の順序が精度に影響 | LayerNorm 使用時は問題なし |
| 分散訓練 | 各 GPU で異なるマスクが生成される | 意図的な設計として許容 |
一般的には 0.1〜0.3 が出発点である。Attention Dropout は 0.0〜0.1、全結合層の Dropout は 0.1〜0.3 が目安。モデル規模が大きくなるほど低い値(または 0.0)が適切になる傾向がある。検証データでの性能を監視しながら調整する。自動チューニング手法として Concrete Dropout を使用する方法もある。
計算コスト自体は微小(マスク生成と要素積のみ)だが、Dropout は有効なニューロン数を減らすため、同等の性能に到達するまでのエポック数が増加する。結果として訓練時間は 10〜30% 程度長くなることがある。ただし、正則化による汎化性能の向上がこのコストを正当化する場面は多い。
LLM では Weight Decay のみで十分な場合が多い。両方を使用する場合は、それぞれの強度を下げる必要がある(相互作用により正則化が過剰になるため)。Fine-tuning では Dropout 0.1 + Weight Decay 0.01 の組み合わせが良い出発点となる。両方のパラメータを同時にグリッドサーチすることが推奨される。
| 重要度の低いニューロンを優先的にドロップ |
| モデル圧縮前処理 |
| TII 開発 |
| Phi-2 | 2.7B | 0.0 | Microsoft Research |
| Gemma | 2B-7B | 0.0 | Google DeepMind |