ReLU(Rectified Linear Unit)を起点として開発された活性化関数ファミリーであり、Leaky ReLU・PReLU・ELU・SELU・ReLU6 等の派生が存在し、各々が dying ReLU 問題の解消や特定のアーキテクチャへの最適化を目指して設計されている。
ReLU(Rectified Linear Unit)は f(x) = max(0, x) で定義される最もシンプルな活性化関数であり、2012年の AlexNet(Krizhevsky et al.)で深層学習の実用化に貢献した。しかし負の入力に対して勾配がゼロになる「dying ReLU」問題があり、これを解消するための派生関数が多数提案されてきた。
ReLU の登場以前、ニューラルネットワークでは sigmoid や tanh が標準的に使用されていたが、これらは勾配消失問題(vanishing gradient problem)を引き起こし、深い層のネットワークの学習を困難にしていた。ReLU は正の領域で勾配が一定(=1)であるため勾配消失を大幅に緩和し、AlexNet(2012年)で ImageNet SOTA を達成して以降、深層学習の標準的な活性化関数となった。2026年現在、CNN・GAN・強化学習モデルでは依然として ReLU 系が広く使用されるが、LLM(大規模言語モデル)では GELU・SwiGLU に主役の座を譲っている。
| 活性化関数 | 数式 | 提案年 | 特徴 |
|---|---|---|---|
| ReLU | max(0, x) | 2010 (Nair & Hinton) | 計算が最速、dying ReLU 問題あり |
| Leaky ReLU | max(αx, x), α=0.01 | 2013 (Maas et al.) | 負の勾配を保持 |
| PReLU | max(αx, x), α は学習可能 | 2015 (He et al.) | 負の勾配を自動調整 |
| ELU | x if x>0, α(eˣ-1) otherwise | 2015 (Clevert et al.) | 出力平均をゼロに近づける |
| SELU | λ·ELU(x) | 2017 (Klambauer et al.) | 自己正規化を実現 |
| ReLU6 | min(max(0, x), 6) | 2010 (Krizhevsky) | モバイル推論向け量子化に最適 |
| CELU | max(0,x) + min(0, α(eˣ/ᵅ-1)) | 2017 (Barron) | ELU の連続微分可能版 |
| Hardswish | x·ReLU6(x+3)/6 | 2019 (Howard et al.) | MobileNet v3 で採用 |
ReLU の最大の問題は、学習中に大きな負の勾配が流入すると、その後ニューロンの出力が恒久的にゼロになる「dying neuron」現象である。
ReLU は 2017年の Transformer 論文(Vaswani et al.)で FFN に採用されたが、その後の LLM 開発では以下の理由で GELU / SwiGLU に置き換えられた。
ただし、ReLU は推論時の計算コストが最小であるため、エッジデバイス向け小規模モデル(TinyLLaMA 1.1B、Phi-1.5 1.3B 等)や蒸留モデルでは依然として有効な選択肢である。
import torch.nn as nn
# 標準 ReLU
relu = nn.ReLU()
# Leaky ReLU(negative_slope=0.01 がデフォルト)
leaky_relu = nn.LeakyReLU(negative_slope=0.01)
# PReLU(num_parameters でチャネルごとの学習を指定)
prelu = nn.PReLU(num_parameters=256)
# ELU(alpha=1.0 がデフォルト)
elu = nn.ELU(alpha=1.0)
# SELU(自己正規化。lecun_normal 初期化と併用)
selu = nn.SELU()
# ReLU6(モバイル向け)
relu6 = nn.ReLU6()
Q1: 2026年現在、ReLU を新規プロジェクトで使うべきか? A: CNN(画像認識・物体検出)では ReLU が依然として最も一般的で問題ない。LLM / Transformer 系では GELU または SwiGLU を推奨する。エッジデバイス向け推論では ReLU6 / Hardswish が計算効率と量子化精度の両面で有利。
Q2: Leaky ReLU の α はいくつに設定すべきか? A: α=0.01 がデフォルトで多くのケースで十分だが、GAN の Discriminator では α=0.2 が広く使用される。PReLU を使えば α が自動学習されるため手動調整が不要になる。
Q3: SELU はなぜ普及しなかったのか? A: SELU の自己正規化特性は全結合ネットワークでのみ成立し、CNN・RNN・Transformer では保証されない。また Batch Normalization + ReLU の組み合わせが実用上十分な性能を発揮するため、SELU の利点が限定的だった。