GELU は入力値をガウス分布の累積分布関数(CDF)で確率的にゲーティングする活性化関数であり、BERT・GPT-2・GPT-3・GPT-4 で採用され、Transformer ベースモデルにおける標準的な活性化関数として広く普及している。
GELU(Gaussian Error Linear Unit)は、2016年に Dan Hendrycks と Kevin Gimpel が提案した活性化関数であり、入力 x に対してガウス分布の累積分布関数 Φ(x) を乗じる:GELU(x) = x · Φ(x) という形式で定義される。
GELU の核心は「確率的ゲーティング」にある。ReLU が x < 0 を一律にゼロにするのに対し、GELU は入力値に応じて確率的に通過・遮断を決定する。この特性により、入力がゼロ付近の領域で滑らかな勾配が維持され、学習の安定性が向上する。Google の BERT(2018年, 110M/340M パラメータ)で初めて大規模に採用され、以降 OpenAI の GPT-2(2019年, 1.5B)、GPT-3(2020年, 175B)、GPT-4(2023年)と一貫して使用されている。2026年現在でも BERT 系エンコーダモデル(RoBERTa / DeBERTa-v3 / ELECTRA)の標準であり続ける。
GELU の厳密な定義は以下の通りである。
PyTorch では torch.nn.GELU(approximate='tanh') で tanh 近似を、torch.nn.GELU(approximate='none') で厳密計算を選択できる。GPT-2 の公式実装は tanh 近似を採用している。CUDA カーネルレベルでは cuDNN が GELU のネイティブ実装を提供しており、A100 GPU で ReLU 比 1.2 倍程度の計算コストに抑えられる。H100 では FP8 演算との組み合わせで更に高速化される。
| 特性 | ReLU | GELU | Swish | SwiGLU |
|---|---|---|---|---|
| 数式 | max(0, x) | x·Φ(x) | x·σ(x) | Swish(xW)⊙(xV) |
| 微分の連続性 | 不連続(x=0) | 連続 | 連続 |
| 連続 |
| 負の入力 | 完全遮断 | 確率的通過 | 確率的通過 | 確率的通過 |
| 計算コスト | 1.0x | 1.5x | 1.3x | 2.0x |
| 主な採用モデル | 旧世代 | BERT/GPT | EfficientNet | LLaMA/Mistral |
import torch
import torch.nn.functional as F
# PyTorch 標準
gelu_exact = F.gelu(x, approximate='none')
gelu_tanh = F.gelu(x, approximate='tanh')
# 手動実装(教育用)
def gelu_manual(x):
return 0.5 * x * (1.0 + torch.erf(x / 1.4142135623730951))
# tanh 近似の手動実装
def gelu_tanh_manual(x):
return 0.5 * x * (1.0 + torch.tanh(
0.7978845608028654 * (x + 0.044715 * torch.pow(x, 3))
))
TensorRT-LLM では GELU がネイティブ演算として最適化されており、A100 80GB で batch_size=32、seq_len=2048 の場合、GELU レイヤーの実行時間は約 0.8ms(ReLU: 0.5ms)である。
Q1: GELU と ReLU のどちらを選ぶべきか? A: 2024年以降の新規モデル開発では GELU(または SwiGLU)を推奨する。ReLU は dying neuron 問題があり、大規模モデルでは学習の安定性に差が出る。計算コストの差は GPU の並列処理で吸収される。
Q2: GELU の近似はどの程度正確か? A: tanh 近似の最大誤差は約 0.004(x ≈ -1.5 付近)であり、実用上は厳密計算と同等の精度が得られる。GPT-2/3 は tanh 近似で学習されており、近似による精度劣化は観測されていない。
Q3: GELU はなぜ SwiGLU に置き換えられつつあるのか? A: SwiGLU は FFN にゲート機構を導入することで、同じ計算予算でより高い表現力を実現する。Shazeer(2020年)の実験で SwiGLU が GELU を一貫して上回ることが示され、LLaMA 以降のデコーダモデルは SwiGLU に移行した。ただし BERT 系エンコーダモデルでは GELU が依然として標準。