Yolo 深圳
深セン
今すぐ参加
用語集

GELU(Gaussian Error Linear Unit)

Learn how the Gaussian Error Linear Unit (GELU) improves deep learning. Discover its role in Transformers, BERT, and LLMs to enhance neural network performance.

ガウス誤差線形単位(GELU)は、 現代の人工知能(AI)システム、 特にトランスフォーマーアーキテクチャに基づくシステムの性能において 極めて重要な役割を果たす高度な活性化関数である。 ニューロン入力に硬直的で決定論的な閾値を適用する従来の関数とは異なり、 GELUはガウス分布の特性に着想を得た確率的側面を導入する。 単純なゲート処理ではなく入力の大きさに応じて重み付けを行うことで、GELUはより滑らかな非線形性を提供し、深層学習(DL)モデルの最適化を支援する。この特異な特性により、ネットワークは複雑なデータパターンをより効果的にモデル化でき、大規模な基盤モデルの成功に大きく貢献している。

GELUの仕組み

あらゆるニューラルネットワークの中核において、活性化関数は入力信号に基づいてニューロンが「発火」するかどうかを決定する。整流線形関数(ReLU)のような古い関数はスイッチのように動作し、負の入力にはゼロを出力し、正の値には入力値そのものを出力する。効率的ではあるが、この急峻なカットオフは学習ダイナミクスを阻害する可能性がある。

GELUは、ガウス分布の累積分布関数で入力をスケーリングすることでこれを改善する。 直感的には、入力値が減少するにつれてニューロンが脱落する確率が高まるが、 その変化は急激ではなく漸進的に起こることを意味する。この曲率により、 全点で微分可能な滑らかで非単調な関数が生成される。この滑らかさは 勾配のバックプロパゲーションを促進し、深層ネットワークの学習を停滞させる 可能性のある消失勾配問題などの課題の緩和に寄与する。

実際のアプリケーション

GELUが提供するより滑らかな最適化環境は、機械学習(ML)分野における最先端アプリケーションのデフォルト選択肢となっています。

関連用語との比較

GELUを理解するには、Ultralytics にある他の一般的な活性化関数との区別が必要となることが多い。

  • GELU対ReLUReLUは計算が単純で疎性(完全なゼロ)を生成するため効率的である。ただしゼロにおける「鋭い角」が収束を遅らせる可能性がある。GELUは滑らかな近似を提供し、計算コストがわずかに高いものの、複雑なタスクでは通常より高い精度をもたらす。
  • GELU 対SiLU (Swish): シグモイド線形ユニット (SiLU) は構造的に GELU と非常に類似しており、滑らかで非単調な特性を共有しています。 GELUが 自然言語処理(NLP)分野で主流である一方、SiLUはエッジハードウェアでの効率性と 検出タスクにおける優れた性能から、 YOLO26のような高度に最適化された物体検出器で頻繁に採用される。
  • GELU対リーキーReLUリーキーReLUは、負の入力に対して小さな定数線形勾配を許容することで、標準ReLUの「ニューロン死滅」問題を修正しようとする。これに対し、GELUは負の値に対して非線形であり、より複雑で適応的な応答を提供するため、非常に深いネットワークにおいて優れた表現学習をもたらすことが多い。

実施例

GELUの実装は、PyTorchのような現代的な深層学習ライブラリを使用すれば簡単です。 PyTorchなどの現代的な深層学習ライブラリを使用すれば、GELUの実装は簡単です。以下の例は、tensor この関数を適用する方法を示しています。

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 ワークフロー全体を簡素化します。データへのアノテーション、 YOLO26(SiLUなどの最適化された活性化関数を利用する)のようなアーキテクチャを用いたモデルトレーニング、 そしてクラウドやエッジデバイスへの効率的なデプロイを可能にする統一インターフェースを提供します。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加