用語集

GELU(ガウス誤差リニアユニット)

GELU活性化関数がGPT-4のような変圧器モデルをどのように強化し、勾配フロー、安定性、効率を向上させるかをご覧ください。

Ultralytics HUB で
を使ってYOLO モデルをシンプルにトレーニングする。

さらに詳しく

ガウス誤差リニアユニット(GELU)は、最新のニューラルネットワーク(NN)、特に変圧器モデルで広く使われている高性能活性化関数である。Dan HendrycksとKevin Gimpelによる論文"Gaussian Error Linear Units (GELUs)"で提案されたGELUは、ReLUのような決定論的な関数とは異なり、ニューロンの活性化に確率的なアプローチを導入している。単に符号でゲーティングするのではなく、その大きさに基づいて入力を重み付けし、ドロップアウト、ゾーンアウト、ReLUの特性を効果的に組み合わせている。

GELUの仕組み

GELU は、入力値にその入力に適用される標準ガウス累積分布関数(CDF)の値を乗じる ことによってニューロンの出力を決定する。つまり、活性化は確率的で、入力値そのものに依存する。負の値を鋭くカットオフするReLUとは異なり、GELUはより滑らかな曲線を提供する。大きい入力は保存される可能性が高く、ゼロに近い入力はゼロにされる可能性が高い。この滑らかで確率的な重み付けにより、より豊かな表現が可能になり、ディープネットワークの訓練に重要なバックプロパゲーション中の勾配の流れが改善される可能性がある。

他の活性化関数との比較

GELUは、他の一般的な活性化関数と比較して明確な特徴を持つ:

  • ReLU(整流線形ユニット)ReLUは計算が単純である(出力が正の場合は入力、そうでない場合はゼロ)。GELUはより滑らかで非単調(負の値の場合、入力が増加するにつれて減少することがある)であるため、より複雑なパターンを捉えるのに役立つことがある。しかし、GELUはReLUよりも計算量が多い。
  • Sigmoidと Tanh:これらの関数は入力を一定の範囲に押し込める(Sigmoidは0から1、Tanhは-1から1)。特定の文脈(確率の出力層など)では有用だが、ディープ・ネットワークでは勾配の消失問題に悩まされることがある。GELUはReLUのように上限を持たないので、正の値の場合にこの問題が軽減される。
  • SiLU (Sigmoid Linear Unit) / スウィッシュSiLUも滑らかで非単調な活性化関数で、入力にシグモイドを掛ける。形状と性能の点でGELUと類似しており、しばしば近い代替関数とみなされる。どちらも強力な経験的結果を示している。

GELUの利点

  • 滑らかさ:滑らかな曲線は、ReLUの鋭利な点と比較して、より良い勾配降下ダイナミクスを可能にする。
  • 非単調性:より複雑な関数近似を可能にする。
  • 確率的解釈:入力の大きさを確率的に活性化の決定に組み込む。
  • 最先端のパフォーマンス:最高性能のモデル、特にトランスに頻繁に使用されている。

デメリットと留意点

  • 計算コスト:ガウシアンCDFの計算は、ReLUの単純な演算よりもコストがかかる。実際には効率的な近似がよく使われます。
  • 複雑さ:ReLUのような単純な関数に比べ、ゼロから理解し実装するのはやや複雑。

用途と意義

GELUは、その強力な経験的性能により、多くの高度な深層学習モデルでよく使われるようになっている:

この関数は、滑らかな非線形性を提供し、活性化の決定に入力の大きさを組み込む能力により、ディープネットワークの学習に効果的である。ReLUよりも若干計算量が多いものの、その性能上の利点から、以下のようなフレームワークで利用可能な大規模モデルでの利用が正当化されることが多い。 PyTorchTensorFlow.Ultralytics HUBのようなツールを使って、様々なモデルを探索し、トレーニングすることができます。

すべて読む