σ(x) = 1 / (1 + e−x)
σ'(x) = σ(x) · (1 − σ(x))
━ 青: σ(x) ┅ オレンジ: σ'(x)
入力を 0〜1 の範囲に押し込める関数。出力を「確率」として解釈できるため、二値分類の出力層で広く使われる。
特徴
・出力が常に正で、滑らかなS字カーブを描く
・x が大きい / 小さいと勾配がほぼ 0 になる(勾配消失問題)
・出力が 0 中心でないため、後続層の重み更新が非効率になりやすい
・導関数の最大値は 0.25(x=0 のとき)と小さい
✓ 確率として直感的✓ 滑らかで微分可能✗ 勾配消失✗ 非0中心✗ exp計算コスト
よく使われる場面:二値分類の出力層、ゲート機構(LSTM・GRU)
tanh(x) = (ex − e−x) / (ex + e−x)
tanh'(x) = 1 − tanh²(x)
━ 青: tanh(x) ┅ オレンジ: tanh'(x)
出力が −1〜1 で 0 中心のS字関数。Sigmoidの改良版として隠れ層で好まれてきた。
特徴
・出力が 0 中心 → 勾配の正負が偏りにくく、学習が安定
・Sigmoid同様、飽和領域では勾配が消失する
・最大勾配は 1(x=0 のとき)で、Sigmoid の最大 0.25 より大きい
・数学的に sigmoid と線形関係: tanh(x) = 2σ(2x) − 1
✓ 0中心出力✓ 勾配がSigmoidより急✗ 飽和領域で勾配消失ℹ Sigmoidの上位互換的
よく使われる場面:RNN / LSTM の隠れ層、正規化された特徴を扱うネットワーク
ReLU(x) = max(0, x)
ReLU'(x) = { 1 (x > 0), 0 (x ≤ 0) }
━ 青: ReLU(x) ┅ オレンジ: ReLU'(x)
x が正ならそのまま、負なら 0 を返す最もシンプルな活性化関数。深層学習の標準として最も広く使われている。
特徴
・計算が高速(比較 1 回のみ)
・正の領域で勾配が常に 1 → 勾配消失を大幅に軽減
・負の入力では出力が常に 0(Dying ReLU 問題)
・出力は 0 中心ではなく、上限もない(発散リスク)
✓ 計算が極めて高速✓ 勾配消失しにくい✓ スパースな活性化✗ Dying ReLU✗ 非0中心
よく使われる場面:CNN・深いFFNの隠れ層全般(画像認識、NLPなど)
派生形:Leaky ReLU, PReLU, ELU, GELU, Swish など