以下に、**活性化関数(特に出力層)**の用途と代表的な例を、タスク別・レイヤー(層)別にまとめます。ポイントを整理しておくと、問題を解く際に役立ちます。
1. 出力層でよく使われる活性化関数
タスク | 出力層の活性化関数 | 主な理由 | 主な損失関数 |
---|---|---|---|
回帰(連続値予測) | 恒等関数(Identity) | 出力をそのまま実数値とする。 | MSE(平均二乗誤差), MAEなど |
2クラス分類 | シグモイド関数(Sigmoid) | 出力を[0,1]の範囲に正規化して「クラス1の確率」を表す。 | バイナリクロスエントロピーなど |
3クラス以上の多クラス分類 | ソフトマックス関数(Softmax) | 各クラスの出力を[0,1]に正規化して「各クラスの確率分布」を表す。 | クロスエントロピーなど |
-
恒等関数 (Identity)
- 数式:( f(x) = x )
- 活性化による変形を行わないので、そのままの値を出力したい場合に使う。
-
シグモイド (Sigmoid)
- 数式:( \sigma(x) = \frac{1}{1 + e^{-x}} )
- 出力範囲が[0,1]となり、2値分類に適した確率解釈が可能。
-
ソフトマックス (Softmax)
- 数式:( \text{Softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}} )
- すべてのクラスに対して確率分布(合計1)を生成できるので、多クラス分類に用いられる。
2. 中間層(隠れ層)でよく使われる活性化関数
名称 | 数式(イメージ) | 特徴 |
---|---|---|
ReLU | ( \max(0, x) ) | 単純・高速。勾配消失が起きにくい。0より小さい入力は0にカットするため「死んだReLU」問題に注意。 |
Leaky ReLU | ( \max(0.01x, x) ) など | ReLUが0未満のときにも小さな傾きを持たせて、死んだReLU問題を緩和。 |
Sigmoid | ( \frac{1}{1 + e^{-x}} ) | 出力が[0,1]に制限される。深い層で勾配消失が起きやすいため、近年はあまり使われないことも多い。 |
tanh | ( \frac{e^x - e^{-x}}{e^x + e^{-x}} ) | 出力が[-1,1]。Sigmoidよりも中心が0に近く勾配消失が少し緩和されるが、深い層ではやはり問題が起こり得る。 |
ELU, SELU, GELU | (やや複雑) | ReLUの改良版として提案。学習の安定化・汎化性能向上を狙う。 |
- 中間層(隠れ層)では、一般的にReLU系が主流。
- シグモイドやtanhは浅いネットワークや特定の用途で使われることもある。
3. なぜこのように使い分けるのか
-
回帰では恒等関数
- 出力を連続値としてそのまま扱いたいため。
-
2クラス分類ではシグモイド
- 出力を確率([0,1])とみなし、閾値0.5などでクラス判定できる。
-
多クラス分類ではソフトマックス
- 各クラスの確率を出力し、その最大値でクラスを予測する。
-
隠れ層はReLU系が主流
- 学習が高速で、深い層でも勾配消失を比較的起こしにくい。
4. 覚え方のヒント
-
出力層は「確率分布を作るか否か」で分類する
- 確率分布が必要ならシグモイド(2クラス)かソフトマックス(多クラス)。
- 確率分布が不要(連続値出力)なら恒等関数。
-
隠れ層は「ReLU」をベースに覚える
- 「ReLUが基本、特殊な場合にtanhやLeaky ReLUなど」という流れ。
まとめ
-
出力層
- 回帰 ⇒ 恒等関数
- 2クラス分類 ⇒ シグモイド
- 多クラス分類 ⇒ ソフトマックス
-
中間層
- 主流はReLU(またはLeaky ReLUなど)
- 場合によってSigmoidやtanhも使用
-
覚え方
- 「出力が確率かどうか」で区別する
- 「中間層はまずReLUから」
このようにタスクに応じて出力層の活性化関数を使い分けることが非常に重要です。また、中間層ではReLUを中心に必要に応じて他の活性化関数を採用する、というイメージを持っておくと整理しやすくなります。