GELU(Gaussian Error Linear Unit)は、滑らかな曲線で非線形性を与えるニューラルネットワークの活性化関数です。AlexNet世代のReLUが「0で折れる直線」だったのに対し、Transformer世代のBERTやGPTはFFN(フィードフォワード層)にGELUを採用する——本記事は厳密な数式より、「なぜ折れ目のない活性化が選ばれたか」に焦点を当てます。
活性化関数の役割
G-160が示すように、活性化関数は非線形性を導入するために使われます。重み付き和だけを層で重ねると、全体として線形変換に近くなり、複雑なパターンを表現できません。
G-203のように、隠れ層から活性化を外すと表現力が落ちます。試験ではReLU、シグモイド、tanh、ソフトマックスなど名前と用途の対応が問われます——GELUはその仲間入りをした比較的新しい選択肢です。
ReLU時代の常識
AlexNet以降、CNNではReLUが標準になりました(TF-384)。
| 関数 | 形 | 長所・短所(試験向け) |
|---|---|---|
| ReLU | 0で折れる | 計算が単純、勾配消失を緩和しやすい。負の入力は完全に0(G-196) |
| シグモイド/tanh | なだらかだが飽和 | 深い層で勾配消失しやすい(G-122) |
| ソフトマックス | 出力を確率分布に | 出力層の多クラス分類用。隠れ層の活性化ではない |
ReLUは強力ですが、負の領域で出力がゼロに「切り落とされる」——この折れ目が、深いTransformerのFFNでは別の選択が検討される一因になりました。
GELUの形と直感
GELUの特徴は滑らかさです。
- 正の入力 — ほぼそのまま通す(ReLUに近い)
- 負の入力 — 完全に0にせず、小さな値を残す曲線
- 名前の由来 — ガウス誤差関数(正規分布の累積)に関連する形。試験では式より「滑らかな非線形」で十分なことが多い
直感的には「入力を確率的に通す」ような振る舞い——小さな負の値も少し残す——と説明されることがあります。実務ではBERT、GPTアーキテクチャのFFNでGELU(または近い変種)が使われ、Transformer系=GELUと覚えると整理しやすいです。
TransformerのFFNでの位置
TransformerブロックはおおむねAttention+FFNの繰り返しです(TF-0108)。
| 部品 | 役割 | 活性化の有無 |
|---|---|---|
| Self-Attention | 系列内の重み付き集約 | ソフトマックスは注意重み用(G-304) |
| FFN(2層MLP) | 各位置の特徴を非線形変換 | GELUがここに入る |
| 出力層 | 次トークン・クラスの予測 | ソフトマックス等(タスク依存) |
GELUはTransformer全体の名前ではなく、FFNの中の部品の一つです。レイヤー正規化やAttentionと同じく、ブロックを構成する要素として位置づけます。
試験で押さえるポイント
- 定義 — 滑らかな活性化関数。Transformer系でよく使われる
- 役割 — 隠れ層への非線形性(G-160)。なければ表現力が落ちる(G-203)
- 対比 — ReLU=折れ目、GELU=曲線。ソフトマックス=出力層の確率化
- すり替え回避 — 損失関数・正則化・Transformerそのものではない
すり替えに注意
| 誤った説明 | 正しい理解 |
|---|---|
| GELU=ReLU | 曲線 vs 折れ目。世代も用途も異なる |
| GELU=ソフトマックス | 隠れ層活性化 vs 出力層の確率化(G-122) |
| GELU=Transformer | FFNの部品 vs 全体アーキテクチャ |
| GELU=損失関数 | 順伝播の非線形 vs 学習の誤差(G-204) |
| GELU=正則化 | 活性化 vs L1/L2など(G-169) |
よくある質問
GELUは何ですか?
Gaussian Error Linear Unitの略で、ニューラルネットワークの隠れ層などに挿入する活性化関数の一種です。ReLUのように0付近で折れ目があるのではなく滑らかな曲線で非線形性を与え、BERTやGPTなどTransformer系モデルのフィードフォワード層でよく使われます。
GELUとReLUは同じですか?
同じではありません。どちらも隠れ層に非線形性を与える活性化関数ですが、ReLUは入力が0以下なら0・正ならその値を返す折れ目のある関数、GELUは滑らかな曲線で負の領域にも小さな値を通します。用途の世代(CNNのReLU vs TransformerのGELU)も異なります。
GELUとソフトマックスは同じですか?
同じではありません。GELUは隠れ層の各ユニットに適用する活性化関数です。ソフトマックスは多クラス分類の出力層で確率分布(合計1)に正規化する関数であり、役割と適用位置が異なります。