基本定義
GELU(Gaussian Error Linear Unit)は、入力値xに対して、標準正規分布の累積分布関数(CDF)Φ(x)を掛け合わせた形で定義される活性化関数である。数式で表すと、GELU(x) = x * Φ(x)となる。ここで、Φ(x) = P(X ≤ x)であり、Xは標準正規分布N(0,1)に従う確率変数である。この定義により、入力値が正であればほぼ線形に、負であれば非線形に抑制される特性を持つ。
誤差関数を用いた近似
累積分布関数Φ(x)は誤差関数erfを用いて、Φ(x) = (1/2) * (1 + erf(x / √2))と表せる。したがって、GELUはGELU(x) = (x/2) * (1 + erf(x / √2))と書き換えられる。誤差関数は初等関数ではないため、数値計算では近似式が用いられる。一般的な近似には、erf(x) ≈ tanh(√(2/π) * (x + 0.044715 * x^3))や、シグモイド関数を用いた近似が使われる。
数値的実装
実際の深層学習フレームワークでは、GELUの実装に誤差関数の近似が採用される。例えば、PyTorchではtorch.erfを用いた厳密な計算と、高速な近似実装の両方が提供される。近似計算の例として、GELU(x) ≈ 0.5 * x * (1 + tanh(√(2/π) * (x + 0.044715 * x^3)))がよく使われる。この近似は数値的安定性が高く、計算効率に優れる。
単調性と微分可能性
GELUは全区間で単調増加関数であり、微分可能である。その導関数はxの値に応じて連続的に変化し、ReLUのような不連続点を持たない。単調性により、学習中の勾配の方向が安定し、最適化が容易になる。
勾配の振る舞い
正領域と負領域
xが正の大きな値では、GELUの勾配はほぼ1に近づき、線形ユニットと同様の振る舞いを示す。一方、xが負の大きな値では、勾配は0に漸近するが、完全に0にはならない。これにより、負の領域でも微小ながら勾配が保持され、ニューロンの死滅(dying neuron problem)を緩和する。
ゼロ付近での挙動
x=0付近では、GELUの勾配は約0.5となる。これはReLU(x=0で不連続)やLeaky ReLU(固定の傾き)と異なり、滑らかに変化する。この特性により、ゼロクロス時の学習が安定し、パラメータ更新がスムーズに行われる。
確率的解釈
GELUの定義は、確率的なゲーティング機構として解釈できる。入力xに対して、その値をそのまま通過させるか否かを、標準正規分布に従う確率変数との比較で決定する。具体的には、GELU(x) = E[ max(0, x + ε) ]、ただしε ~ N(0,1)と見なせる。この解釈により、各ニューロンが確率的に活性化する効果を期待値として取り込んでいる。
ReLU
ReLU(Rectified Linear Unit)は、x>0で線形、x≤0で0を出力する。GELUはReLUの非線形性を滑らかにし、負の領域で微小な出力を与える点で異なる。ReLUは勾配消失を防ぐが、負の勾配が完全に失われる問題がある。GELUはこの問題を軽減する。
Swish
Swishはf(x)= x * σ(x)(σはシグモイド関数)で定義される。GELUとSwishは形状が非常に似ており、実際にGELUの近似としてSwishが用いられることもある。両者はx=0付近で凹形状を持ち、負の領域で負の値をとる点で共通する。SwishはGoogleが提案したが、GELUが先に存在した。
ELU
ELU(Exponential Linear Unit)は、x>0で線形、x≤0でα(e^x -1)という指数関数を用いる。ELUも負の領域で滑らかだが、GELUは確率的解釈に基づく点で異なる。GELUは負の領域でより緩やかな曲線を描く。
SiLU
SiLU(Sigmoid Linear Unit)はSwishと同じ関数であり、シグモイド関数を用いる。GELUとSiLUは数学的に異なるが、数値的に近い値をとる。近年ではGELUがTransformerモデルで標準的に採用される一方、SiLUは軽量モデルで使われることがある。
自然言語処理
BERT
BERT(Bidirectional Encoder Representations from Transformers)では、Transformerエンコーダの全結合層においてGELUが標準活性化関数として採用されている。これにより、BERTは深層のネットワークで安定した学習を実現し、文脈理解の精度向上に寄与した。
GPTシリーズ
GPT(Generative Pre-trained Transformer)シリーズでも、GPT-2以降のモデルでGELUが使用されている。特にGPT-3やGPT-4では、数十億パラメータ規模の学習においてGELUの滑らかな勾配が勾配爆発や消失を防ぎ、大規模学習の成功に貢献している。
コンピュータビジョン
Vision Transformer(ViT)やその派生モデルでは、自然言語処理と同様のTransformerアーキテクチャが用いられ、GELUが標準活性化関数として採用されている。畳み込みニューラルネットワーク(CNN)の分野では、EfficientNetなどの一部のモデルでもGELUが使用される例がある。
音声認識
Wav2Vec 2.0やHuBERTなどの音声認識モデルでは、Transformerベースのエンコーダが用いられ、GELUが活性化関数として採用されている。音声データの時系列処理において、GELUの滑らかな非線形性が特徴抽出に有効であることが示されている。
長所
滑らかな非線形性
GELUは全区間で微分可能であり、滑らかな非線形性を提供する。これにより、勾配ベースの最適化が安定し、学習の収束が速くなる。特に深層ネットワークでは、活性化関数の不連続性が原因で起こる振動が抑制される。
学習の安定性
負の領域で完全に0にならず、微小な勾配を保持するため、ニューロンが学習中に活性化を失う「dying ReLU」問題が発生しにくい。また、確率的解釈に基づく適応的なゲーティングにより、過学習を抑制する効果も報告されている。
性能向上
多くのベンチマーク(画像分類、自然言語理解、音声認識)において、ReLUやELUと比較して高い精度が達成される。特にTransformerモデルでは、GELUの採用が標準となり、SOTA(State-of-the-art)性能の実現に寄与している。
短所
計算コスト
GELUは誤差関数や近似計算を含むため、ReLUに比べて計算コストが高い。特に大規模モデルやリアルタイム推論では、この差が顕著になる。ハードウェアアクセラレーションが進む現代でも、単純な活性化関数に比べてレイテンシが増加する。
近似誤差
GELUの数値実装には近似式が用いられるため、厳密なGELUとの間に誤差が生じる。特にx=0付近や大きな絶対値での誤差は無視できるが、極端な条件下では学習に影響を与える可能性がある。ただし、実用上は問題となるケースは稀である。
提案の背景
GELUは2016年にDan HendrycksとKevin Gimpelによって提案された。当時、ReLUが主流であったが、その非微分可能性や負領域での勾配消失問題が指摘されていた。著者らは確率的解釈に基づく新しい活性化関数としてGELUを導入し、特に画像分類タスクでReLUを上回る性能を示した。
関連研究
GELUの提案後、Swish(2017年)やMish(2019年)などの類似の滑らかな活性化関数が登場した。しかし、GELUはTransformerアーキテクチャへの組み込みが進み、BERT(2018年)での採用を皮切りに、自然言語処理分野でのデファクトスタンダードとなった。その後、Vision Transformerなど他分野へも展開され、現在も広く使われている。