活性化関数の役割
線形変換を何回重ねても1つの線形変換にまとまってしまうため、層の間に非線形な活性化関数を挟まなければ多層にする意味がありません。活性化関数が非線形性を導入することで、ニューラルネットワークは複雑な関数を近似できます。
隠れ層で使う関数
| 関数 | 出力の範囲 | 特徴 |
|---|---|---|
| シグモイド関数 | 0〜1 | 滑らかだが、微分の最大値が0.25と小さく、深い層で勾配消失が起きる |
| tanh関数 | −1〜1 | 原点対称で出力の中心が0のため、シグモイドより学習が進みやすい。それでも入力の絶対値が大きいと勾配がほぼ0になる |
| ReLU関数 | 0以上 | 入力が0以下なら0、正ならそのまま出力。正の領域で勾配が1なので勾配消失が起きにくく、計算も軽い。現在の標準 |
| Leaky ReLU関数 | 負でもわずかに出力 | 入力が負のとき小さな傾きを持たせ、ReLUで負の入力のニューロンが学習しなくなる問題(dying ReLU)を緩和 |
勾配消失問題
誤差逆伝播で勾配は各層の活性化関数の微分を掛け合わせて伝わるため、微分が1より小さい関数を深く重ねると、入力層に近い層ほど勾配が0に近づいて学習が進まなくなります。ReLUの採用、適切な重みの初期化、バッチ正規化、スキップ結合が対策です。
出力層で使う関数
- 2値分類: シグモイド関数(0〜1の確率)
- 多クラス分類: ソフトマックス関数(各クラスの確率の合計が1)
- 回帰: 恒等関数(活性化関数を適用しない)
試験で問われる観点
- 活性化関数がないと多層にする意味がない理由
- シグモイド・tanhで勾配消失が起きる理由と、ReLUが標準になった理由
- Leaky ReLUの改良点
- タスク別の出力層の活性化関数



