「活性化関数」について

ニューラルネットワーク入門

日付:2025年2月15日

ニューラルネットワークにおける活性化関数の役割を解説し、代表的な関数(シグモイド、ReLU、ソフトマックス)の仕組みと違いを比較。Pythonの実装例も掲載。

目 次

活性化関数とは?ニューラルネットワークの非線形変換

ニューラルネットワークでは、入力データを行列演算によって変換し、出力を生成します。
しかし、そのままでは単なる線形変換にすぎず、複雑なパターンを学習できません

そこで重要になるのが 活性化関数(Activation Function) です。
活性化関数を使うことで、ニューラルネットワークは 非線形変換 を行い、より高度な表現力を獲得できます。

本記事では、代表的な活性化関数の種類とその特性、使い分けのポイントについて解説します。

1. 活性化関数の役割

活性化関数は、ニューラルネットワークの各層で適用され、出力値を変換する関数です。

例えば、ニューラルネットワークの基本的な計算は次のようになります。

z=Wx+bz = W x + b y=f(z)y = f(z)

ここで f(z)f(z) が活性化関数 であり、線形変換結果 zz に対して 非線形性を導入 します。

2. 代表的な活性化関数

(1) シグモイド関数(Sigmoid)

定義

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

特徴

  • 出力が (0,1) の範囲に収まる → 確率のように扱える
  • 小さい値や大きい値で勾配が消失しやすい(勾配消失問題)
  • 主に出力層で使用されるが、隠れ層では ReLU が主流

Python 実装

PYTHON
import numpy as np import matplotlib.pyplot as plt def sigmoid(x): return 1 / (1 + np.exp(-x)) x = np.linspace(-10, 10, 100) y = sigmoid(x) plt.plot(x, y) plt.title("Sigmoid Function") plt.xlabel("x") plt.ylabel("σ(x)") plt.grid() plt.show()
Sigmoid Function

(2) ReLU 関数(Rectified Linear Unit)

定義

f(z)=max(0,z)f(z) = \max(0, z)

特徴

  • 計算がシンプルで高速(指数関数を使わない)
  • 勾配消失問題を回避しやすい(大きな値では勾配が 1)
  • 負の値では勾配がゼロになる(Dying ReLU 問題)

Python 実装

PYTHON
def relu(x): return np.maximum(0, x) x = np.linspace(-10, 10, 100) y = relu(x) plt.plot(x, y) plt.title("ReLU Function") plt.xlabel("x") plt.ylabel("ReLU(x)") plt.grid() plt.show()
ReLU Function

(3) ソフトマックス関数(Softmax)

定義

σ(zi)=ezijezj\sigma(z_i) = \frac{e^{z_i}}{\sum_{j} e^{z_j}}

特徴

  • 多クラス分類に適用される(出力の合計が 1 になる)
  • 各出力が確率として解釈できる
  • 指数関数を使うため、数値が大きいとオーバーフローの危険

Python 実装

PYTHON
def softmax(x): exp_x = np.exp(x - np.max(x)) # オーバーフロー防止 return exp_x / np.sum(exp_x) x = np.array([2.0, 1.0, 0.1]) y = softmax(x) print("Softmax出力:", y)
出力結果
Softmax出力: [0.659 0.242 0.098]

3. 活性化関数の使い分け

活性化関数主な用途長所短所
シグモイド出力層(確率を出す場合)値が 0〜1 の範囲勾配消失が起こる
ReLU隠れ層(主流)計算が速い負の値で勾配がゼロ(Dying ReLU)
ソフトマックス多クラス分類確率として解釈可能オーバーフローの可能性

4. まとめ

  • 活性化関数はニューラルネットワークに非線形性を加える役割を持つ。
  • シグモイドは出力層、ReLU は隠れ層、ソフトマックスは分類問題に最適。
  • 適切な活性化関数を選ぶことで学習の効率が大きく向上する。

ニューラルネットワークの設計や実装で活性化関数を適切に選べるようになると、より強力なモデルを作ることができます。

シリーズ一覧ニューラルネットワーク入門
6