ガウス誤差線形単位(GELU)活性化関数を詳しく見ていきましょう。その滑らかで確率的な非線形性が、Transformers、BERT、そして現代のAIをどのように支えているのかを学びます。
ガウス誤差線形単位(GELU)は、 現代の人工知能(AI)システム、 特にトランスフォーマーアーキテクチャに基づくシステムの性能において 極めて重要な役割を果たす高度な活性化関数である。 ニューロン入力に硬直的で決定論的な閾値を適用する従来の関数とは異なり、 GELUはガウス分布の特性に着想を得た確率的側面を導入する。 単純なゲート処理ではなく入力の大きさに応じて重み付けを行うことで、GELUはより滑らかな非線形性を提供し、深層学習(DL)モデルの最適化を支援する。この特異な特性により、ネットワークは複雑なデータパターンをより効果的にモデル化でき、大規模な基盤モデルの成功に大きく貢献している。
あらゆるニューラルネットワークの中核において、活性化関数は入力信号に基づいてニューロンが「発火」するかどうかを決定する。整流線形関数(ReLU)のような古い関数はスイッチのように動作し、負の入力にはゼロを出力し、正の値には入力値そのものを出力する。効率的ではあるが、この急峻なカットオフは学習ダイナミクスを阻害する可能性がある。
GELUは、ガウス分布の累積分布関数で入力をスケーリングすることでこれを改善する。 直感的には、入力値が減少するにつれてニューロンが脱落する確率が高まるが、 その変化は急激ではなく漸進的に起こることを意味する。この曲率により、 全点で微分可能な滑らかで非単調な関数が生成される。この滑らかさは 勾配のバックプロパゲーションを促進し、深層ネットワークの学習を停滞させる 可能性のある消失勾配問題などの課題の緩和に寄与する。
GELUが提供するより滑らかな最適化環境は、機械学習(ML)分野における最先端アプリケーションのデフォルト選択肢となっています。
GELUを理解するには、Ultralytics にある他の一般的な活性化関数との区別が必要となることが多い。
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などの最適化された活性化関数を利用する)のようなアーキテクチャを用いたモデルトレーニング、 そしてクラウドやエッジデバイスへの効率的なデプロイを可能にする統一インターフェースを提供します。