GELU (Gaussian Error Linear Unit)
Gaussian Error Linear Unit(GELU)活性化関数をご確認ください。その滑らかな確率的非線形性がTransformer、BERT、最新のAIを支える仕組みを学べます。
ガウス誤差線形ユニット (GELU) は、現代の 人工知能 (AI) システム、特に Transformer アーキテクチャに基づくシステムの性能で重要な役割を果たす高度な 活性化関数 です。ニューロン入力に固定的で決定論的な閾値を適用する従来の関数とは異なり、GELU は ガウス分布 の特性に着想を得た確率的な側面を取り入れています。入力を単純にゲートするのではなく、その大きさに応じて重み付けすることで、GELU はより滑らかな非線形性を提供し、ディープラーニング (DL) モデルの最適化を支援します。この独自の特性により、ネットワークは複雑なデータパターンをより効果的にモデル化でき、巨大な 基盤モデル の成功に大きく貢献しています。
GELUの仕組み#
あらゆる ニューラルネットワーク の中核では、活性化関数が入力信号に基づいてニューロンが「発火」するかどうかを決定します。正規化線形ユニット (ReLU) のような従来の関数はスイッチのように動作し、負の入力にはゼロを、正の入力には入力値そのものを出力します。効率的である一方、この急激な切り替わりは学習ダイナミクスを妨げる可能性があります。
GELU は、ガウス分布の累積分布関数によって入力をスケーリングすることで、この問題を改善します。直感的には、入力値が小さくなるにつれてニューロンがドロップアウトする確率が高くなりますが、その変化は急激ではなく徐々に起こるということです。この曲率により、滑らかで非単調な関数が形成され、すべての点で微分可能になります。この滑らかさは勾配の バックプロパゲーション を促進し、ディープネットワークの学習を停滞させる可能性がある 勾配消失問題 などの問題の緩和に役立ちます。
実世界での利用例#
GELU が提供するより滑らかな最適化ランドスケープにより、機械学習 (ML) の最先端アプリケーションの一部では、GELU がデフォルトの選択肢になっています。
- 大規模言語モデル (LLMs): GELU は、Google の研究者による BERT (Transformerからの双方向エンコーダー表現) の導入によって注目を集めました。現在では、GPTシリーズ やその他の生成テキストモデルにおける標準的なコンポーネントです。テキスト要約 や感情分析などのタスクでは、GELU は、固定的な活性化関数では捉えにくい言語表現の微妙なニュアンスをモデルが捉えるのに役立ちます。
- ビジョントランスフォーマー (ViT): コンピュータビジョン の分野では、Transformer アーキテクチャを 画像分類 に適応したモデルが GELU に大きく依存しています。画像をパッチの系列として処理することで、これらのモデルは GELU を使用して深い層全体で豊富な特徴情報を維持し、ImageNet などのベンチマークで高い精度を実現します。
関連用語との比較#
GELU を理解するには、Ultralytics用語集 にある他の一般的な活性化関数との違いを理解することが必要です。
- GELU と ReLU の比較: ReLU は計算上より単純で、スパース性(完全なゼロ)を生み出すため、効率的に処理できます。ただし、ゼロにおける「鋭い角」は収束を遅らせる可能性があります。GELU は滑らかな近似を提供し、計算コストがわずかに高くなるものの、複雑なタスクでは通常、より高い精度を実現します。
- GELU と SiLU (Swish) の比較: シグモイド線形ユニット (SiLU) は GELU と構造的に非常によく似ており、滑らかで非単調な特性を共有しています。GELU が 自然言語処理 (NLP) で主流である一方、SiLU は、エッジハードウェア上での効率と検出タスクにおける優れた性能により、YOLO26 のような高度に最適化された物体検出器で頻繁に選択されます。
- GELU と Leaky ReLU の比較: Leaky ReLU は、負の入力に対して小さく一定の線形勾配を許容することで、標準的な ReLU の「死んだニューロン」問題の解決を試みます。これに対して GELU は負の値に対しても非線形であり、より複雑で適応的な応答を提供するため、非常に深いネットワークでより優れた表現学習につながることがよくあります。
実装例#
GELU は、PyTorch のような最新のディープラーニングライブラリを使用して簡単に実装できます。次の例では、入力データのテンソルに関数を適用する方法を示します。
import torch
import torch.nn as nn
# Initialize the GELU activation function
gelu_activation = nn.GELU()
# Create sample input data including negative and positive values
input_data = torch.tensor([-3.0, -1.0, 0.0, 1.0, 3.0])
# Apply GELU to the inputs
output = gelu_activation(input_data)
# Print results to see the smoothing effect on negative values
print(f"Input: {input_data}")
print(f"Output: {output}")これらの高度な活性化関数を独自のコンピュータビジョンプロジェクトで活用したい開発者向けに、Ultralytics Platform はワークフロー全体を簡素化します。データへのアノテーション付け、YOLO26(SiLU のような最適化された活性化関数を使用)などのアーキテクチャによるモデルのトレーニング、クラウドやエッジデバイスへの効率的なデプロイを、統一されたインターフェースで実行できます。









