AI・機械学習
中級

ReLU系活性化関数の派生(レルケイ カッセイカカンスウノハセイ)

ReLU(Rectified Linear Unit)を起点として開発された活性化関数ファミリーであり、Leaky ReLU・PReLU・ELU・SELU・ReLU6 等の派生が存在し、各々が dying ReLU 問題の解消や特定のアーキテクチャへの最適化を目指して設計されている。

0 回閲覧
0 いいね

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 ファミリー一覧

活性化関数数式提案年特徴
ReLUmax(0, x)2010 (Nair & Hinton)計算が最速、dying ReLU 問題あり
Leaky ReLUmax(αx, x), α=0.012013 (Maas et al.)負の勾配を保持
PReLUmax(αx, x), α は学習可能2015 (He et al.)負の勾配を自動調整
ELUx if x>0, α(eˣ-1) otherwise2015 (Clevert et al.)出力平均をゼロに近づける
SELUλ·ELU(x)2017 (Klambauer et al.)自己正規化を実現
ReLU6min(max(0, x), 6)2010 (Krizhevsky)モバイル推論向け量子化に最適
CELUmax(0,x) + min(0, α(eˣ/ᵅ-1))2017 (Barron)ELU の連続微分可能版
Hardswishx·ReLU6(x+3)/62019 (Howard et al.)MobileNet v3 で採用

dying ReLU 問題の詳細

ReLU の最大の問題は、学習中に大きな負の勾配が流入すると、その後ニューロンの出力が恒久的にゼロになる「dying neuron」現象である。

  • 発生メカニズム: 重みの更新により W·x + b が常に負になると、ReLU(W·x + b) = 0 となり、勾配もゼロになるため二度と更新されない
  • 発生率: 一般的なネットワークでは全ニューロンの 10-40% が dying neuron になり得る(学習率や初期化に依存)
  • 対策: Leaky ReLU(α=0.01 で負の勾配を保持)、PReLU(α を学習パラメータ化)、ELU(指数関数で滑らかに接続)

各派生関数の採用事例

  • ReLU: ResNet(2015年, 152層)、VGG(2014年)、YOLO v1-v3、DQN(DeepMind, 2015年)
  • Leaky ReLU: DCGAN(2015年)の Discriminator、YOLO v4-v8 の Backbone
  • PReLU: ResNet-v2(He et al., 2016年)。ImageNet で ReLU 比 0.5% の精度向上
  • ELU: U-Net 系セグメンテーションモデル。医療画像解析で安定した学習に寄与
  • SELU: 全結合ネットワーク(MLP)向け。Batch Normalization なしで自己正規化が成立
  • ReLU6: MobileNet v1/v2(Google, 2017-2018年)。INT8 量子化との相性が最良で、Android Neural Networks API のデフォルト
  • Hardswish: MobileNet v3(Google, 2019年)。Swish の近似で計算量を 60% 削減

LLM での位置づけ

ReLU は 2017年の Transformer 論文(Vaswani et al.)で FFN に採用されたが、その後の LLM 開発では以下の理由で GELU / SwiGLU に置き換えられた。

  • 滑らかさ: GELU / SwiGLU は x=0 付近で微分が連続であり、大規模学習で勾配の安定性が向上
  • 表現力: GLU 系はゲート機構により情報の流れを適応的に制御でき、同じパラメータ数でより高い精度を達成
  • 実証データ: Shazeer(2020年)の実験で、同一条件下で SwiGLU が ReLU を perplexity 3% 以上上回ることが確認

ただし、ReLU は推論時の計算コストが最小であるため、エッジデバイス向け小規模モデル(TinyLLaMA 1.1B、Phi-1.5 1.3B 等)や蒸留モデルでは依然として有効な選択肢である。

PyTorch での実装

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()

よくある質問(FAQ)

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 の利点が限定的だった。

まとめ

  • ReLU は深層学習の実用化を牽引した活性化関数
  • dying ReLU 問題を解消する Leaky ReLU / PReLU / ELU が派生として開発された
  • LLM では GELU / SwiGLU が主流だが、CNN・GAN・エッジ推論では ReLU 系が依然として有効
  • モバイル向けでは ReLU6 / Hardswish が量子化との相性で最適解