GELU (Gaussian Error Linear Unit)
GELU (Gauss hata doğrusal birimi), her girdiyi normal dağılımın kümülatif dağılım işleviyle ölçeklendirir; BERT, GPT-2 ve görsel transformer'larda kullanılan düzgün bir etkinleştirme işlevidir. Kod içerir.
Gauss hata doğrusal birimi (GELU) bir aktivasyon fonksiyonu olup GELU(x) = x · Φ(x) olarak tanımlanır; burada Φ, standart normal dağılımın kümülatif dağılım fonksiyonudur. Her girdiyi, standart normal bir değişkenin bu girdiden küçük değer alma olasılığına göre ağırlıklandırır; böylece büyük pozitif girdiler neredeyse değişmeden geçer, büyük negatif girdiler neredeyse sıfıra iner ve sıfıra yakın girdiler yaklaşık yarısı kadar ölçeklenir. Dan Hendrycks ve Kevin Gimpel, GELU'yu 2016 tarihli Gauss Hata Doğrusal Birimleri (GELUs) makalesinde tanıttılar. GELU, Transformer modellerinde—BERT, GPT-2, GPT-3 ve görsel Transformer (ViT) gibi—standart aktivasyon hâline geldi; Transformer modellerinin her ileri beslemeli bloğunda iki doğrusal katman arasında yer alır.
GELU Nasıl Çalışır#
Hendrycks ve Gimpel, GELU'yu stokastik düzenlileştirmeden türetti. Her x girdisini, onu Φ(x) olasılıkla koruyan ve aksi durumda sıfırlayan rastgele bir maskeyle çarptığını düşün; bu, girdiye bağlı olarak artan koruma olasılığına sahip bir dropout gibidir. GELU bu işlemin beklenen değeridir: Φ(x) · x. Böylece girdileri değerlerine göre yumuşak biçimde kapılarken, ReLU girdileri işaretlerine göre keskin biçimde kapılar.
Ortaya çıkan eğri, eğitim açısından önemli üç özelliğe sahiptir:
- Her yerde türevlenebilir: GELU ve türevi süreklidir; sıfırda keskin bir köşe bulunmaz. Bu nedenle geri yayılım sırasında ağırlıklardaki küçük değişiklikler, çıktılarda da küçük değişiklikler oluşturur.
- Monotonik değildir: Negatif girdilerde çıktı önce düşer, ardından sıfıra doğru yükselir ve x ≈ −0,75'te yaklaşık −0,17'lik minimum değere ulaşır.
- Negatif girdiler için gradyan: Orta derecede negatif girdilere sahip birimler yine de gradyan alır; böylece ReLU birimlerinin öğrenmeyi durduracağı yerlerde öğrenmeye devam eder.
Φ, hata fonksiyonunu içerdiğinden iki yaklaşım yaygın olarak kullanılır. tanh biçimi, 0.5x(1 + tanh(√(2/π)(x + 0.044715x³))), tam GELU'dan yaklaşık 0,0005'ten daha az farklıdır ve GPT-2'de kullanılmıştır. Sigmoid biçimi, x · σ(1.702x), yaklaşık 0,02'lik farkla QuickGELU'ya karşılık gelir ve OpenAI'nin CLIP modelinde kullanılır. PyTorch nn.GELU, varsayılan olarak tam biçimi, approximate="tanh" ile ise tanh biçimini hesaplar:
import torch
from torch import nn
x = torch.tensor([-3.0, -1.0, -0.75, 0.0, 1.0, 3.0])
# Exact GELU: x * Phi(x), where Phi is the standard normal CDF
exact = nn.GELU()(x)
# Tanh approximation, as used in GPT-2
approx = nn.GELU(approximate="tanh")(x)
print(f"GELU exact: {[round(v, 4) for v in exact.tolist()]}")
print(f"GELU tanh: {[round(v, 4) for v in approx.tolist()]}")
print(f"ReLU: {nn.ReLU()(x).tolist()}")Tam GELU [-0.004, -0.1587, -0.17, 0.0, 0.8413, 2.996] değerini, tanh biçimi [-0.0036, -0.1588, -0.17, 0.0, 0.8412, 2.9964] değerini ve ReLU [0.0, 0.0, 0.0, 0.0, 1.0, 3.0] değerini yazdırır. GELU, −0,75 civarındaki minimumunda −0,17 değerini verir; Φ(1) = 0,8413 olduğundan 1'i 0,8413'e eşler ve ±3 değerlerinde ReLU'ya neredeyse eşit olur. İki GELU biçimi yalnızca ondalık kısmın dördüncü basamağında farklıdır.
GELU Nerelerde Kullanılır#
- GPT modelleri: OpenAI'nin ilk GPT modeli 2018'de GELU kullandı; GPT-2 ve GPT-3 de GELU kullanmaya devam etti.
- BERT: Google'ın BERT modeli, GPT'nin ardından ReLU yerine GELU'yu seçti ve BERT tarzı kodlayıcıların çoğu hâlâ GELU kullanıyor.
- Görsel Transformer'lar: ViT, her kodlayıcı bloğunun MLP katmanında GELU kullanır. ResNet'i modernleştirirken ReLU yerine GELU kullanan ConvNeXt dâhil pek çok görsel omurga da bu yaklaşımı benimsedi.
- Algılama Transformer modelleri: Ultralytics paketinde, Baidu'nun gerçek zamanlı algılama Transformer modeli olan RT-DETR içindeki AIFI Transformer kodlayıcısı, iki ileri beslemeli katmanı arasında GELU uygular.
Son dönemdeki birçok büyük dil modeli (LLMs), standart GELU'dan kapılı ileri beslemeli katmanlara geçti. Google'ın Gemma'sı, GELU etkinleştirmeli bir izdüşümü ikinci bir doğrusal izdüşümle çarpan GEGLU'yu kullanır; Llama, PaLM ve Qwen ise SiLU tabanlı SwiGLU kullanır.
GELU ve İlgili Aktivasyonlar#
- ReLU: max(0, x) daha düşük maliyetlidir, tam sıfırlar üretir ve sıfırda keskin bir köşesi vardır. GELU makalesinde, test edilen her bilgisayarlı görü, doğal dil işleme ve konuşma görevinde ReLU ile ELU'ya kıyasla kazanımlar bildirildi.
- SiLU (Swish): x · σ(x), genel olarak benzer bir şekle ancak yaklaşık −0,28 olan daha derin bir minimuma sahiptir. Transformer'larda genellikle GELU, evrişimli algılayıcılarda ise SiLU tercih edilir.
- Leaky ReLU: Negatif girdiler için sabit ve doğrusal bir eğim kullanır; GELU'nun negatif tarafındaki eğri ise yeniden sıfıra döner.
- GEGLU: Kapılı çeşidi, öğrenilen ikinci bir izdüşüm ekler. Noam Shazeer'in 2020'de T5 üzerinde yaptığı karşılaştırmada, aynı parametre sayısında GEGLU ileri beslemeli katmanlarının test dışında tutulan log-perplexity değeri 1,633'e ulaşırken GELU için 1,679, ReLU için 1,677 oldu.










