活性化関数 かっせいかかんすう
活性化関数ReLUシグモイド非線形変換ニューラルネットワーク
活性化関数について教えて
簡単に言うとこんな感じ!
ニューラルネットワークの各ノードに「非線形性」を与える関数だよ。「どのくらい強く反応するか」を決めるもので、これがないとどれだけ層を重ねても線形モデルと変わらない。ReLUやシグモイドが有名で、どの活性化関数を使うかがモデルの性能に大きく影響するんだ!
活性化関数とは
活性化関数(Activation Function)は、ニューラルネットワークの各ノードが入力を受け取った後に適用される非線形変換です。非線形性がないと、何層積み重ねても線形変換と等価になってしまうため、複雑なパターン学習に不可欠です。
主な活性化関数の比較
| 関数 | 式 | 出力範囲 | 主な用途 |
|---|---|---|---|
| Sigmoid | 1/(1+e^(-x)) | (0, 1) | 2値分類の出力層 |
| Tanh | (e^x-e^(-x))/(e^x+e^(-x)) | (-1, 1) | RNN(Sigmoidより改善) |
| ReLU | max(0, x) | [0, ∞) | 隠れ層の主流 |
| Leaky ReLU | max(0.01x, x) | (-∞, ∞) | 死ぬReLU問題の解決 |
| GELU | x·Φ(x) | (-∞, ∞) | Transformer(BERT等) |
| Softmax | e^xᵢ/Σe^xⱼ | (0, 1) 合計=1 | 多クラス分類の出力層 |
| Swish | x·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の標準に
関連用語
- ReLU・Leaky ReLU・GELU — 主要な活性化関数の詳細
- Sigmoid・Tanh — 伝統的な活性化関数
- Softmax — 多クラス分類の出力層活性化
- 勾配消失 — Sigmoidで起きる問題
- ニューラルネットワーク — 活性化関数が使われる文脈