Tanım ve Matematiksel Formül
ReLU (Rectified Linear Unit), f(x) = max(0, x) formülüyle tanımlanır. Girdi pozitifse olduğu gibi iletilir; sıfır veya negatifse çıktı sıfırdır. Türevi x > 0 için 1, x ≤ 0 için 0'dır. x = 0 noktasında türev teknik olarak tanımsız olmakla birlikte uygulamada bu değer genellikle 0 kabul edilir. Adı İngilizcede 'doğrultucu doğrusal birim' anlamına gelir ve bu isim fonksiyonun negatif değerleri sıfıra 'doğrultma' davranışını yansıtır.
Sigmoid ve Tanh ile Karşılaştırma
Sigmoid fonksiyonu çıktıyı 0-1 aralığına, tanh ise -1 ile 1 arasına sıkıştırır. Bu sıkıştırma işlemi, büyük girdi değerlerinde gradyanları neredeyse sıfıra düşürür. ReLU pozitif bölgede doğrusal davrandığından gradyan kaybolmaz. Hesaplaması da bir karşılaştırma işlemiyle sınırlı olduğundan sigmoid ve tanh'a göre belirgin biçimde hızlıdır; bu fark GPU'larda büyük ölçekte ciddi avantaja dönüşür.
Kaybolan Gradyan Problemi ve ReLU'nun Çözümü
Geri yayılım sırasında gradyanlar katman katman çarpılır. Sigmoid/tanh gibi doyuran fonksiyonlarda bu çarpımlar her katmanda küçülür; derin ağlarda ilk katmanlara ulaşan gradyan pratikte sıfır olur. Ağırlıklar güncellenemez, ağ öğrenemez. ReLU'nun pozitif bölgedeki gradyanı sabit 1 olduğundan bu çarpım zinciri değeri küçültmez ve 10-20 katmanlı derin ağlar bile etkili biçimde eğitilebilir hale gelir.
Ölü ReLU Problemi
Bir nöron negatif net girdi aldığında ReLU çıktısı sıfır olur ve gradyan da sıfır olur. Bu nöron bir daha güncelleme almaz ve 'ölü' hale gelir. Yüksek öğrenme hızı veya kötü ağırlık başlatma bu durumu tetikler. Ağdaki nöronların önemli bir kısmı ölü kalırsa model kapasitesi ciddi ölçüde düşer. He başlatma ve uygun öğrenme hızı seçimi bu riski önemli ölçüde azaltır.
ReLU Varyantları
- check_circle Leaky ReLU: Negatif girdiler için küçük sabit bir eğim (α ≈ 0,01) kullanır: f(x) = x (x>0), αx (x≤0). Ölü nöron sorununu büyük ölçüde azaltır.
- check_circle PReLU (Parametric ReLU): Leaky ReLU'nun negatif eğimini öğrenilebilir bir parametre haline getirir. Eğitim sırasında bu eğim veri tarafından optimize edilir.
- check_circle ELU (Exponential Linear Unit): Negatif bölgede üstel bir eğri kullanarak ortalama aktivasyonu sıfıra yaklaştırır; bu durum eğitimi kararlı kılar ve yakınsama hızını artırır.
- check_circle GELU (Gaussian Error Linear Unit): Girdiyi Gaussian kümülatif dağılım fonksiyonuyla ağırlıklandırır; hem türevli bir geçiş sağlar hem de negatif değerleri tamamen bastırmaz. BERT ve GPT başta olmak üzere modern dil modellerinde standart tercih haline gelmiştir.
Kullanım Alanları
ReLU, evrişimli sinir ağlarında (CNN) tüm gizli katmanlar için varsayılan aktivasyon fonksiyonudur. ResNet, VGG, Inception gibi görüntü modelleri ReLU ile eğitilir. Tam bağlantılı derin ağlarda da gizli katmanlar için standart seçimdir. Çıkış katmanında kullanılmaz; çıkış genellikle sigmoid (ikili sınıflandırma), softmax (çok sınıflı) veya doğrusal (regresyon) fonksiyona bırakılır. Dil modellerinin transformer bloklarında ise büyük ölçüde GELU tercih edilir.
Sık Sorulan Sorular
- check_circle ReLU neden sigmoid'dan daha iyi?: Sigmoid derin ağlarda gradyan kaybına yol açar; ReLU pozitif bölgede gradyanı 1 tutarak bu sorunu ortadan kaldırır. Ayrıca hesaplaması çok daha hızlıdır.
- check_circle Ölü ReLU nasıl önlenir?: Leaky ReLU veya ELU gibi varyantlar kullanılabilir. Öğrenme hızını düşürmek ve He başlatma gibi iyi ağırlık başlatma yöntemleri de ölü nöron oranını azaltır.
- check_circle ReLU çıkış katmanında kullanılır mı?: Hayır. Çıkış katmanı göreve göre sigmoid, softmax veya doğrusal aktivasyon kullanır; ReLU negatif değerlere izin vermediğinden çıkışta uygunsuz olur.
- check_circle GELU ile ReLU arasındaki fark nedir?: GELU girdiyi Gaussian olasılık ağırlığıyla çarpar; hem türevli bir geçiş sağlar hem de negatif değerleri tamamen bastırmaz. Modern dil modellerinde (BERT, GPT) GELU tercih edilir.