詳細解釋
Swish是Google發現的自門控激活函數,定義為f(x) = x · sigmoid(βx),平滑且非單調,在深度網絡中通常優於ReLU。
數學定義:
- Swish(x) = x · sigmoid(βx)
- β=1時:Swish(x) = x · σ(x)
- β→∞:趨向ReLU
- β→0:趨向線性函數
特性:
- 平滑:處處可微
- 非單調:小負值區域有正值輸出
- 自門控:Sigmoid作為門控信號
- 無上界:正值區域線性增長
- 有下界:負值趨向0
發現故事:
- 2017年:Google使用神經架構搜索發現
- 自動搜索:在大量候選激活中找到
- 驚喜:簡單但優於精心設計的ReLU
- 推廣:被多種架構採用
與ReLU的比較:
- ReLU:硬閾值,dying問題
- Swish:平滑,緩解dying
- 性能:通常優於ReLU
- 成本:Sigmoid計算開銷
與GELU的關係:
- 非常相似:都是x與某種門控的乘積
- GELU:使用高斯CDF
- Swish:使用Sigmoid
- 性能:通常相當
應用:
- EfficientNet:Google的高效網絡使用Swish
- 搜索發現的架構:NAS發現的模型常用
- Transformer:某些變體使用(但GELU更常見)
- 現代CNN:替代ReLU的選擇之一
計算優化:
- 1.702近似:Swish(x) ≈ x · σ(1.702x)接近GELU
- 硬Swish:h-swish = x · ReLU6(x+3)/6
- 移動優化:硬Swish適合量化移動設備
變體:
- H-Swish(Hard Swish):
- 使用ReLU6近似Sigmoid
- 計算更快,適合移動端
- MobileNetV3使用
為何有效:
- 非單調性:小負值保留有用信息
- 平滑性:優化更穩定
- 自門控:自動調節信息流
Swish是神經架構搜索發現的成功激活函數。