活性化関数
読み: かっせいかかんすう
ニューラルネットワークの各ニューロンに非線形性を導入する関数。線形変換の繰り返しでは表現できない複雑なパターンの学習を可能にする。
活性化関数 (Activation Function) は、ニューロンの線形出力 z = Wx + b に適用される非線形関数である。活性化関数がなければ多層ネットワークは単一の線形変換と等価になり、XOR のような非線形問題を解けない。活性化関数の選択は、モデルの学習速度や最終精度を左右する要因のひとつである。
画像認識向けのモデルでは、中間層に ReLU (Rectified Linear Unit) を用いる構成が代表例として挙げられる。f(x) = max(0, x) という単純な計算で、正の入力をそのまま通し負の入力を 0 にする。シグモイドや tanh は入力の絶対値が大きい領域で勾配が飽和するのに対し、ReLU は正の領域で勾配が 1 に保たれる。順方向の計算も比較 1 回で済む。
- ReLU:
f(x) = max(0, x)。計算が単純で正の領域では勾配が飽和しない。一方、負の入力しか受けないニューロンでは勾配が 0 になり、更新が止まる状態 (「死んだニューロン」問題) が生じ得る - Leaky ReLU:
f(x) = max(0.01x, x)。負の領域にも小さな傾きを与える設計 (式中の 0.01 は係数の一例で、実装によって変わる)。負の入力でも勾配が 0 にならない点が ReLU との違いである - GELU: Transformer 系モデルで採用される滑らかな活性化関数。x に標準正規分布の累積分布関数を乗じる近似で、BERT や Vision Transformer で採用例がある
- Softmax: 出力層で使用され、各クラスの確率分布を生成する。多クラス画像分類の最終層で、クラス数に応じた確率分布を出力する用途に用いられる
超解像や画像生成では出力層に tanh (-1 から 1) や sigmoid (0 から 1) を使い、ピクセル値の範囲を制約する。中間層には ReLU 系、出力層にはタスクに応じた活性化関数を選択するのが基本方針である。