Sigmoid・Tanh しぐもいど・たんえいち
SigmoidTanh活性化関数勾配消失S字曲線
SigmoidとTanhについて教えて
簡単に言うとこんな感じ!
ニューラルネットワーク初期の主流活性化関数だよ。Sigmoidは「0〜1に圧縮するS字曲線」、Tanhは「-1〜1に圧縮するS字曲線」。どちらも滑らかで微分しやすいけど、深いネットワークでは勾配消失問題が起きるから今はReLUに置き換えられることが多いんだ!
Sigmoid関数
Sigmoid(x) = 1 / (1 + e^(-x))
出力範囲:(0, 1)
x = -∞ → 出力 ≈ 0
x = 0 → 出力 = 0.5
x = +∞ → 出力 ≈ 1
グラフ(S字形):
1 ─────────────────
│ /
0.5│ /
│ /
0 ──────/──────────→
主な用途:
- 2値分類の出力層(確率として解釈)
- ロジスティック回帰
Tanh関数(双曲線正接)
Tanh(x) = (e^x - e^(-x)) / (e^x + e^(-x))
出力範囲:(-1, 1)
x = -∞ → 出力 ≈ -1
x = 0 → 出力 = 0
x = +∞ → 出力 ≈ 1
関係式:Tanh(x) = 2×Sigmoid(2x) - 1
Sigmoidとの違い:
- 出力が0中心(-1〜1)→ 勾配の更新が効率的
- RNNやLSTMの隠れ状態でよく使われる
勾配消失問題
Sigmoidの微分:f'(x) = f(x)(1 - f(x))
最大値:x=0 で 0.25
Tanhの微分:f'(x) = 1 - Tanh(x)²
最大値:x=0 で 1.0
深い層では:
0.25 × 0.25 × 0.25 × ... → ほぼ0に!
→ 初期の層へ勾配が届かない(勾配消失)
ReLUが解決した理由:x>0 なら微分=1(消えない)
使い分けのまとめ
| 用途 | 推奨関数 |
|---|---|
| 2値分類の出力層 | Sigmoid |
| 多クラス分類の出力層 | Softmax |
| LSTM・RNNの内部 | Tanh |
| CNN・MLPの隠れ層 | ReLU/GELU |
歴史と背景
- 1943年:McCulloch & Pittsのニューロンモデルでステップ関数を使用
- 1986年:Rumelhart らが誤差逆伝播法とSigmoidの組み合わせを普及
- 2011年:ReLUがSigmoid・Tanhを凌駕(勾配消失問題の解決)
- 現在:出力層や特定のアーキテクチャでは引き続き使用
関連用語
- 活性化関数 — Sigmoid・Tanhが属するカテゴリ
- ReLU・Leaky ReLU・GELU — SigmoidやTanhに代わった主流
- 勾配消失・勾配爆発 — Sigmoidで起きる問題
- LSTM — TanhをよくつかうRNNの発展型
- ロジスティック回帰 — Sigmoidを出力層に使う分類器