ニューラルネットワーク基礎

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 ──────/──────────→

主な用途


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を凌駕(勾配消失問題の解決)
  • 現在:出力層や特定のアーキテクチャでは引き続き使用

関連用語