TL

活性化関数の系譜と設計:Sigmoid から GELU・SwiGLU まで

活性化関数を微分形で並べ直せば、勾配消失も死活問題もなぜ起きるか一目で分かる。Sigmoid から GELU・SwiGLU までの設計判断を原理から押さえ、Transformer の選定理由まで一本道で理解できます。

応用活性化関数GELUSwiGLUReLUTransformer勾配消失最終更新: 2026-06-21
TL;DR要点だけ先に
  • 1.活性化関数の良し悪しは順伝播の形より「導関数」で決まる。Sigmoid は導関数が最大0.25で多層化すると勾配が指数的に消えるため、逆伝播の積が痩せて入力側の層が学習されない。
  • 2.ReLU は正領域で導関数が常に1なので勾配消失を断つが、負入力で出力も勾配も0に張り付く「死んだReLU」を生む。Leaky ReLU・GELU は負側に微小な傾きを残してこれを回避する。
  • 3.GELU・Swish は入力を「滑らかなゲート」で重み付けする自己ゲート型。SwiGLU は別の線形射影をゲートに使い、Transformer のFFNで品質が安定するため LLaMA など主要LLMの標準になっている。

評価軸は「出力の形」ではなく「導関数の形」

活性化関数の役割は、線形変換 z = W·x + b に非線形性を入れて表現力を持たせることです。しかし設計の良し悪しを決めるのは、出力 σ(z) の形よりも 導関数 σ'(z) の形 です。理由は学習にあります。誤差逆伝播では、層を遡るたびに各層の σ'(z) が掛け算で積み重なります(漸化式は 誤差逆伝播法の数理 を参照)。つまり活性化関数を選ぶことは、逆伝播でどんな数を繰り返し掛けるかを選ぶこと に等しい。この視点で系譜を辿ると、各世代が前世代の導関数の欠陥を1つずつ潰してきた流れが見えてきます。

この記事の地図

Sigmoid/tanh(導関数が痩せて勾配消失)→ ReLU(正領域で σ'=1、ただし死活問題)→ Leaky ReLU/ELU(負側に傾きを残す)→ Swish/GELU(滑らかな自己ゲート)→ SwiGLU(別射影でゲート、Transformer FFN の標準)。各段が前段の導関数の弱点への応答です。

Sigmoid と tanh:導関数が痩せて勾配が消える

Sigmoid は σ(z) = 1 / (1 + e^(-z)) で出力を (0,1) に潰します。その導関数はきれいな形で書けます。

σ(z)  = 1 / (1 + e^(-z))
σ'(z) = σ(z) · (1 - σ(z))      # 最大値は z=0 のとき 0.25

問題はこの 最大0.25 という上限です。多層で σ' を掛け続けると、0.25^層数 のオーダーで勾配が指数的に縮み、入力に近い層へ届く誤差信号がほぼ消えます。これが 勾配消失 です。さらに |z| が大きい飽和域では σ'(z) ≈ 0 となり、一度飽和したニューロンは更新が止まります。tanh は出力を (-1,1) に取り ゼロ中心 な点で Sigmoid より優れ、導関数 1 - tanh²(z) の最大値も1まで上がりますが、飽和域で勾配が消える本質は変わりません。

ゼロ中心がなぜ効くか

Sigmoid の出力は常に正なので、ある層の全出力が正=次層への入力が全て正になります。すると重み勾配 ∂L/∂W = δ·入力ᵀ の符号が δ の符号だけで決まり、ある重み行の全成分が同符号に揃って更新がジグザグになります。tanh の出力がゼロ中心だとこの偏りが消え、収束が安定します。これは後の Swish/GELU が負側にわずかな負出力を許す設計動機にもつながります。

ReLU:勾配消失を断ち切る代わりに「死ぬ」

ReLU(z) = max(0, z) の導関数は驚くほど単純です。

ReLU(z)  = max(0, z)
ReLU'(z) = 1  (z > 0),   0  (z < 0)      # z=0 は慣例的に0

正領域で導関数が 常に1 なので、何層重ねても勾配がそのまま素通りし、勾配消失が原理的に起きません。計算も比較演算1つで済み軽い。深層ネットワークが実用化した立役者で、土台の構造は ニューラルネットワーク を参照してください。ただし負領域では 出力も導関数も0。あるニューロンの入力 z が学習中に常に負の側へ追い込まれると、勾配が0なので二度と更新されず、永久に0を出し続けます。これが 死んだReLU(dying ReLU) 問題です。大きすぎる学習率や偏った初期化で、層の相当数のニューロンが一斉に死ぬこともあります。

Leaky ReLU と ELU:負側に「逃げ道」を作る

死活問題の原因は「負領域で勾配が完全に0」な点に尽きます。ならば負側にも微小な傾きを残せばよい。Leaky ReLU は負側に小さな固定傾き α(例 0.01)を与えます。

LeakyReLU(z)  = z (z>0),   α·z (z<0)
LeakyReLU'(z) = 1 (z>0),   α   (z<0)      # 負側でも勾配が消えない

負入力でも σ'=α≠0 なので、追い込まれたニューロンにも誤差が届き復活できます。α 自体を学習する PReLU、負側を指数曲線 α·(e^z − 1) で滑らかにつなぎ出力をゼロ中心寄りにする ELU など派生も同じ発想です。ただしいずれも z=0 で導関数が不連続(折れ点)である点は ReLU と共通で、ここが次の滑らかな世代への動機になります。

Swish と GELU:入力自身を「ゲート」にする

ReLU 系は「通すか・止めるか」の硬いスイッチでした。Swishz · sigmoid(β·z)β=1 のとき SiLU)と GELU は、入力の大きさに応じて 滑らかに重み付けして通す自己ゲート型 です。GELU は「入力に、それが標準正規分布で残る確率を掛ける」と解釈でき、Φ を標準正規の累積分布として表します。

GELU(z)  = z · Φ(z)                       # Φ は標準正規分布の累積分布関数
SiLU(z)  = z · sigmoid(z)                 # GELU の実用的な近似に近い挙動
GELU(z) ≈ 0.5·z·(1 + tanh(√(2/π)·(z + 0.044715·z³)))   # tanh近似(高速)

要点は3つあります。(1) 滑らかで全域微分可能 ——折れ点がなく、導関数が連続なので最適化が安定する。(2) 負側に小さな負出力を許す ——z がやや負のとき出力もわずかに負になり、ゼロ中心性に寄与しつつ死活問題を避ける。(3) 大きな負入力では出力がほぼ0に減衰 ——ReLU 的なスパース性も保つ。導関数は積の微分で求まり、z=0 付近でも0でない値を持つため勾配が流れ続けます。「ReLU の利点(正領域で素通し・スパース)を残しつつ、折れ点と死活問題を消した」のが Swish/GELU だと捉えると位置づけが明確です。

GELU は2系統の実装が混在する

GELU には Φ を直接使う 厳密版(erf 版) と上記 tanh 近似版 があり、値がわずかに食い違います。学習時と推論時、あるいは別フレームワーク間でこの2系統を取り違えると、再現実験で微妙なズレが出ます。BERT 系は tanh 近似で学習された経緯があるため、重みを移植する際はどちらで学習されたかを必ず確認してください。

SwiGLU:ゲートを「別の線形射影」に分離する

ここが現代 LLM の核心です。Transformer のフィードフォワード層(FFN)は本来 Linear → 活性化 → Linear の2段でした。GLU 系 は活性化を1本の信号にかけるのをやめ、入力を 2本の独立した線形射影 に分け、片方を「値」、もう片方を活性化に通して「ゲート」とし、要素ごとに掛け合わせます。Swish をゲートに使うのが SwiGLU です。

# 通常のFFN(GELU)
FFN(x)    = Linear2( GELU( Linear1(x) ) )

# SwiGLU 版FFN:射影を W と V の2本に分け、片方をゲートに
SwiGLU(x) = Linear2( Swish(x·W) ⊙ (x·V) )    # ⊙ は要素ごとの積

ゲート Swish(x·W) が、もう一方の値経路 x·V を成分ごとに「どれだけ通すか」連続的に制御します。ゲートが入力依存で動くため表現力が上がり、勾配も値経路を素通りしやすく学習が安定します。代償として線形層が1本増える(パラメータが約1.5倍)ため、実装では中間次元を約 2/3 に縮めて総パラメータを揃えるのが定石です。理論的優位の証明はなく経験的に品質が高いことが選定理由ですが、その安定性ゆえ LLaMA や PaLM 系をはじめ主要 LLM の FFN 標準になりました。全体構造は LLM と TransformerTransformer アーキテクチャ図解 を合わせて参照してください。

試験・面接で問われる定番
  • 勾配消失の原因:Sigmoid の導関数 σ(z)(1−σ(z)) は最大0.25。多層で掛かり 0.25^層数 で勾配が指数的に消える。
  • 死んだReLU:負入力で出力も導関数も0。一度負側に固定されると更新が止まる。Leaky ReLU は負側に傾き α を残して回避。
  • GELU/Swish が滑らかな利点:折れ点がなく全域微分可能で、負側に小出力を許しゼロ中心性とスパース性を両立。
  • SwiGLU の構造Swish(x·W) ⊙ (x·V)。ゲート用と値用の2射影に分け要素積。中間次元を2/3に縮めパラメータを調整。

一覧で押さえる:導関数と弱点

各関数を「正領域・負領域の導関数の振る舞い」と「主な弱点」で並べると、系譜が一望できます。

関数正領域の導関数負領域の導関数主な弱点・特徴
Sigmoid最大0.25・飽和で→0→0勾配消失・出力が非ゼロ中心
tanh最大1・飽和で→0→0ゼロ中心だが飽和で消失は残る
ReLU1(一定)0勾配消失なし・ただし死活問題
Leaky ReLU1α(≠0)死活問題を回避・z=0で折れ点
GELU / Swish1付近で連続小さく非0全域滑らか・自己ゲート
SwiGLUゲート×値で連続制御ゲートで連続抑制FFN品質が安定・パラメータ増

まとめ:導関数を見れば選定理由が読める

活性化関数の進化は「逆伝播で掛かる導関数を健全に保つ」物語でした。Sigmoid/tanh は 導関数が痩せて勾配消失、ReLU は正領域 σ'=1 でそれを断つ代わりに 負側で死ぬ、Leaky ReLU/ELU は 負側に傾きを残して 蘇生路を作り、Swish/GELU は 滑らかな自己ゲート で折れ点と死活問題を同時に消し、SwiGLU は ゲートを別射影に分離 して FFN の品質を底上げしました。新しい活性化関数に出会ったら、まず導関数を描き「正領域で勾配が素通りするか」「負領域で0に張り付かないか」「折れ点はあるか」を問えば、その設計意図と適用先がそのまま読み解けます。土台の学習機構は ニューラルネットワーク誤差逆伝播法の数理 で固めておくと理解が一段深まります。

AI/機械学習 Article

活性化関数の系譜と設計:Sigmoid から GELU・SwiGLU までを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

活性化関数

比較で見る軸

難易度: advanced / カテゴリ: AI/機械学習 / タグ数: 6

導入後に効く点

ReLU は正領域で導関数が常に1なので勾配消失を断つが、負入力で出力も勾配も0に張り付く「死んだReLU」を生む。Leaky ReLU・GELU は負側に微小な傾きを残してこれを回避する。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
advanced
カテゴリ
AI/機械学習
タグ数
6

判断チェックリスト

  • 自社の用途が「活性化関数 / GELU」に近いか確認する。
  • 強みである「活性化関数の良し悪しは順伝播の形より「導関数」で決まる。Sigmoid は導関数が最大0.25で多層化すると勾配が指数的に消えるため、逆伝播の積が痩せて入力側の層が学習されない。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

活性化関数GELUSwiGLUReLUTransformer活性化関数GELUSwiGLU
参考: 公式情報