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

活性化関数 かっせいかかんすう

活性化関数ReLUシグモイド非線形変換ニューラルネットワーク
活性化関数について教えて

簡単に言うとこんな感じ!

ニューラルネットワークの各ノードに「非線形性」を与える関数だよ。「どのくらい強く反応するか」を決めるもので、これがないとどれだけ層を重ねても線形モデルと変わらない。ReLUやシグモイドが有名で、どの活性化関数を使うかがモデルの性能に大きく影響するんだ!


活性化関数とは

活性化関数(Activation Function)は、ニューラルネットワークの各ノードが入力を受け取った後に適用される非線形変換です。非線形性がないと、何層積み重ねても線形変換と等価になってしまうため、複雑なパターン学習に不可欠です。


主な活性化関数の比較

関数出力範囲主な用途
Sigmoid1/(1+e^(-x))(0, 1)2値分類の出力層
Tanh(e^x-e^(-x))/(e^x+e^(-x))(-1, 1)RNN(Sigmoidより改善)
ReLUmax(0, x)[0, ∞)隠れ層の主流
Leaky ReLUmax(0.01x, x)(-∞, ∞)死ぬReLU問題の解決
GELUx·Φ(x)(-∞, ∞)TransformerBERT等)
Softmaxe^xᵢ/Σe^xⱼ(0, 1) 合計=1クラス分類の出力層
Swishx·sigmoid(x)(-∞, ∞)EfficientNet

ReLUが主流になった理由

Sigmoidの問題:
  - 勾配消失問題(深い層で勾配がほぼ0になる)
  - 計算コストが高い(指数関数)

ReLU(Rectified Linear Unit)の利点:
  - x>0 では勾配=1(勾配消失しない)
  - 計算が超シンプル(max操作のみ)
  - 疎な活性化(負の入力は0→ノイズ無視)

死ぬReLU問題(Dying ReLU)

ReLUの弱点:
  x < 0 では常に出力0 → 学習率が高すぎると
  一部のノードが永遠に0を出力し続ける(死ぬ)

解決策:
  - Leaky ReLU:負の側にも小さな傾き
  - PReLU:傾きを学習可能に
  - ELU:負の側に滑らかな曲線

歴史と背景

  • 1958年パーセプトロンでステップ関数を使用
  • 1986年:Sigmoidが誤差逆伝播法と組み合わせて広く普及
  • 2011年:ReLUが深いネットワークの学習を大幅改善(Glorotら)
  • 2018年:BERTでGELUが採用。Transformerの標準に

関連用語