DropPathとは - Shinichi0713/LLM-fundamental-study GitHub Wiki
はい、DropPath
(Stochastic Depth)は、
**「深いニューラルネットワークにおいて、訓練時にランダムに残差(またはブロック)ごと“通り道”を落とす(スキップする)ためのレイヤ」**です。
詳しく解説
1. なぜ使うの?
- 深いネットワークでは過学習や勾配消失が起きやすい
- DropPathは「層全体を確率的にスキップ」することで、
- ネットワークのアンサンブル的な効果
- 汎化性能の向上
- 残差ブロック(ResNetなど)の訓練安定化
を狙っています
2. どう動くの?
- 訓練時のみ有効(推論時は何もしない)
- 残差ブロックなどの出力を、一定確率で「0」にして入力だけを通す
- 確率$p$で「通り道」(path)を落とす(dropする)のでDropPath
- 落とさなかった場合は出力を$\frac{1}{1-p}$倍してスケール補正
3. どこで使うの?
- ResNet, Vision Transformer(ViT)などの「残差接続」や「ブロック」単位で
- timmやtransformersの多くのモデルで使われています
公式ドキュメントより(timm)
DropPath implements Stochastic Depth per sample (when applied in main path of residual blocks).
During training, randomly drops entire residual paths (blocks) with a certain probability.
参考コード例
from timm.models.layers import DropPath
# 使い方例
import torch
x = torch.randn(8, 128, 32, 32) # [batch, channels, H, W]
dplayer = DropPath(drop_prob=0.2)
out = dplayer(x) # 訓練時は20%で「全体をゼロ」に
まとめ
- DropPathは「層単位のDropout」
- 深いネットワークの汎化性能向上や学習安定化のためのテクニック
- timmなどの最新モデルで標準的に使われています
関連ワード: Stochastic Depth, ResNet, Vision Transformer, Dropout
もし具体的な使い方や理論背景がさらに知りたい場合はご質問ください!