Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

GELU (Gaussian Error Linear Unit)

GELU(ガウス誤差線形ユニット)は各入力を正規累積分布関数でスケーリングする、BERT、GPT-2、ビジョンTransformerで使われる滑らかな活性化関数です。コードも紹介します。

ガウス誤差線形ユニット(GELU)は、GELU(x) = x · Φ(x)で定義される活性化関数です。ここでΦは標準正規分布の累積分布関数です。標準正規変数が入力値を下回る確率に応じて各入力に重みを付けるため、大きな正の入力はほぼそのまま通過し、大きな負の入力はほぼゼロになり、ゼロ付近の入力は約半分にスケーリングされます。Dan Hendrycks氏とKevin Gimpel氏は、2016年の論文Gaussian Error Linear Units (GELUs)でGELUを提案しました。GELUは、BERT、GPT-2、GPT-3、ビジョントランスフォーマー(ViT)などのTransformerモデルで標準的な活性化関数となり、各フィードフォワードブロックの2つの線形レイヤーの間に配置されます。

GELUの仕組み#

Hendrycks氏とGimpel氏は、確率的正則化からGELUを導出しました。各入力xに対し、確率Φ(x)で値を保持し、それ以外ではゼロにするランダムなマスクを掛けることを考えます。これは、入力に応じて保持確率が上がるドロップアウトのようなものです。GELUはこの処理の期待値Φ(x) · xであり、入力を値に応じて滑らかにゲートします。一方、ReLUは符号に応じて不連続にゲートします。

こうして得られる曲線には、学習上重要な次の3つの特性があります。

  • 全域で滑らか: GELUとその導関数は連続しており、ゼロに折れ曲がりがありません。そのため、バックプロパゲーション中に重みが小さく変化すると、出力も小さく変化します。
  • 単調ではない: 負の入力では、出力がいったん低下した後、ゼロに向かって上昇します。x ≈ −0.75で約−0.17の最小値に達します。
  • 負の入力に対する勾配: 中程度に負の入力を持つユニットにも勾配が伝わるため、ReLUユニットなら学習が止まる領域でも学習を続けられます。

Φには誤差関数が含まれるため、一般的な近似が2種類あります。tanh形式の0.5x(1 + tanh(√(2/π)(x + 0.044715x³)))は、厳密なGELUとの差が約0.0005以内で、GPT-2で使われました。シグモイド形式のx · σ(1.702x)は差が約0.02以内で、OpenAIのCLIPで使われるQuickGELUです。PyTorchのnn.GELUはデフォルトで厳密な形式を計算し、approximate="tanh"を指定するとtanh形式を計算します。

import torch
from torch import nn

x = torch.tensor([-3.0, -1.0, -0.75, 0.0, 1.0, 3.0])

# Exact GELU: x * Phi(x), where Phi is the standard normal CDF
exact = nn.GELU()(x)

# Tanh approximation, as used in GPT-2
approx = nn.GELU(approximate="tanh")(x)

print(f"GELU exact: {[round(v, 4) for v in exact.tolist()]}")
print(f"GELU tanh:  {[round(v, 4) for v in approx.tolist()]}")
print(f"ReLU:       {nn.ReLU()(x).tolist()}")

厳密なGELUは[-0.004, -0.1587, -0.17, 0.0, 0.8413, 2.996]を、tanh形式は[-0.0036, -0.1588, -0.17, 0.0, 0.8412, 2.9964]を、ReLUは[0.0, 0.0, 0.0, 0.0, 1.0, 3.0]を出力します。GELUは−0.75付近の最小値で−0.17を出力し、Φ(1) = 0.8413であるため1を0.8413に変換し、±3ではReLUとほぼ同じ値になります。2種類のGELU形式の違いは小数第4位にしか現れません。

GELUの用途#

  • GPTモデル: OpenAI初のGPTは2018年にGELUを採用し、GPT-2とGPT-3もこれを引き継ぎました。
  • BERT: GoogleのBERTはGPTに続いてReLUではなくGELUを選択し、現在も多くのBERT系エンコーダーがGELUを使用しています。
  • ビジョントランスフォーマー: ViTは各エンコーダーブロックのMLPでGELUを適用します。ResNetを現代化する際にReLUをGELUへ置き換えたConvNeXtをはじめ、多くのビジョンバックボーンがこれに続きました。
  • 検出トランスフォーマー: Ultralyticsパッケージでは、Baiduのリアルタイム検出トランスフォーマーであるRT-DETRのAIFI Transformerエンコーダーが、2つのフィードフォワードレイヤーの間でGELUを適用します。

近年の多くの大規模言語モデル(LLM)は、通常のGELUからゲート付きフィードフォワードレイヤーへ移行しました。GoogleのGemmaは、GELUで活性化した射影と2つ目の線形射影を乗算するGEGLUを使用します。Llama、PaLM、Qwenは、SiLUベースのSwiGLUを使用します。

  • ReLU: max(0, x)は計算コストが低く、正確なゼロを出力しますが、ゼロで折れ曲がります。GELUの論文では、評価したすべてのコンピュータビジョン、自然言語処理、音声タスクで、GELUがReLUとELUを上回ったと報告されています。
  • SiLU(Swish): x · σ(x)は全体的に似た形状で、最小値は約−0.28とより深くなります。Transformerでは通常GELUが使われ、畳み込み検出器ではSiLUがより一般的です。
  • Leaky ReLU: 負の入力に対して一定の直線的な傾きを保ちます。一方、GELUの負の領域は、ゼロに戻る曲線です。
  • GEGLU: ゲート付きの派生形式で、学習可能な2つ目の射影を追加します。Noam Shazeer氏が2020年にT5で比較した際、同じパラメーター数では、GEGLUのフィードフォワードレイヤーは検証データの対数パープレキシティ1.633を達成しました。GELUは1.679、ReLUは1.677でした。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう