Softmax (Softmax Fonksiyonu)

Ham sinir ağı logitlerini toplamı 1 olan olasılık dağılımına dönüştüren, çok sınıflı sınıflandırmanın temel çıkış fonksiyonu.

Softmax fonksiyonu, yapay sinir ağlarında çok sınıflı sınıflandırma görevlerinde kullanılan temel matematiksel dönüşümdür. Ham model çıktıları olan logit vektörünü alır ve tüm elemanları (0, 1) aralığında, toplamı tam olarak 1'e eşit olan bir olasılık dağılımına dönüştürür. Matematiksel formülü σ(zᵢ) = exp(zᵢ) / Σⱼ exp(zⱼ) şeklindedir; her bileşen üstel fonksiyondan geçirilip normalize edilir. Fonksiyon, üstel doğası gereği büyük değerleri daha da büyütür, küçük değerleri bastırır. Bu sayede model en olası sınıfı ön plana çıkarır; sonuçlar doğrudan sınıf üyeliği olasılığı olarak yorumlanır. İkili sınıflandırma için kullanılan sigmoid fonksiyonunun her çıktıyı bağımsız olarak 0-1 aralığına sıkıştırmasından farklı olarak softmax, vektör düzeyinde çalışır ve sınıflar arasında rekabetçi normalizasyon yapar; toplamın daima 1 olması garantilendiğinden çıktılar doğru olasılık semantiği taşır. Sayısal kararlılık kritik bir konudur. Büyük logit değerlerinde exp(zᵢ) kayan nokta taşmasına yol açabilir. Standart çözüm, tüm bileşenlerden maksimum değeri çıkarmaktır: σ(zᵢ) = exp(zᵢ − max(z)) / Σⱼ exp(zⱼ − max(z)). Bu form matematiksel olarak özdeştir ama üstel değerleri kontrol altında tutar. PyTorch, TensorFlow ve NumPy bu optimizasyonu dahili olarak uygular. Sıcaklık ölçeklendirmesi (temperature scaling), fonksiyonun davranışını ayarlamak için kullanılır: Softmax(z / T). T = 1 standart çıktı, T büyüdükçe daha yayvan ve belirsiz bir dağılım, T küçüldükçe ise daha keskin ve kararlı bir dağılım ortaya çıkar. Bilgisinin damıtımı (knowledge distillation) tekniğinde yüksek sıcaklık kullanılarak öğretmen modelin logitleri yumuşatılır; öğrenci model sert etiketler yerine bu yumuşak hedefleri öğrenerek daha iyi genelleme yapar. Transformers mimarisindeki dikkat mekanizmasında da softmax merkezi bir rol üstlenir. Sorgu (Q) ve anahtar (K) matrislerinin nokta çarpımı hesaplanır; boyut ölçeklendirmesiyle √d_k'ya bölünür, ardından softmax uygulanarak her sorgu pozisyonu için dikkat ağırlıkları elde edilir: Attention(Q, K, V) = softmax(QK⊤ / √d_k) · V. Burada softmax iki işlevi bir arada yerine getirir: ağırlıkların toplamını 1'e normalize eder ve modelin seçici odaklanmasını destekler.

Tanım ve Matematiksel Temel

Softmax, bir k-boyutlu girişi olasılık simpleksine yansıtan matematiksel fonksiyondur. Her bileşen üstel fonksiyona sokulur (negatif değerleri de pozitife taşır) ve elde edilen değerler kendi toplamlarına bölünür. Sonuçta her bileşen (0, 1) aralığında olur ve tüm bileşenler toplamı 1 verir. Bu yapı çıktıyı doğrudan olasılık yorumuyla uyumlu kılar: model çıkışı 'sınıf 3'e ait olma olasılığı 0.78'dir' şeklinde okunabilir. Pratikte çıktı katmanındaki ham nöron değerleri (logitler) softmax'e girilir; eğitim sırasında gradyanların geri akışı da softmax üzerinden gerçekleşir.

Sigmoid Fonksiyonundan Farkı

Sigmoid her nöronu bağımsız biçimde 0 ile 1 arasına sıkıştırır; çıktıların toplamının 1 olması garanti değildir. Bu özellik ikili sınıflandırma veya çok etiketli görevler (bir örnek birden fazla sınıfa ait olabilir) için uygundur. Softmax ise vektör düzeyinde çalışır: bir sınıfın olasılığını artırmak diğerlerinin olasılığını azaltır. Bu rekabetçi normalizasyon, sınıfların birbirini dışladığı çok sınıflı görevler için doğru matematiksel modeldir. Transformer mimarilerinde attention ağırlıkları için kullanılırken, eğitim sırasında sayısal kararlılık açısından log-softmax ve negative log-likelihood kaybı birlikte tercih edilir.

Sayısal Kararlılık ve Implementasyon

Büyük logit değerlerinde exp(zᵢ) IEEE 754 çift duyarlıklı kayan noktanın temsil edemeyeceği değerlere ulaşabilir (overflow). Düzeltilmiş formül: σ(zᵢ) = exp(zᵢ − max(z)) / Σⱼ exp(zⱼ − max(z)). Payda ve paydanın aynı sabiti içermesi nedeniyle matematiksel sonuç özdeştir; ancak üstel argümanlar artık ≤ 0 olduğundan taşma riski ortadan kalkar. PyTorch'ta torch.nn.Softmax(dim=-1) bu dönüşümü dahili olarak güvenli biçimde uygular. Eğitim döngüsünde doğrudan softmax + NLLLoss yerine torch.nn.CrossEntropyLoss kullanmak önerilir; bu sınıf log-softmax hesaplamasını kayıp fonksiyonuyla birleştirerek hem sayısal kararlılığı artırır hem de gereksiz intermediate tensör oluşturmanın önüne geçer.

Sıcaklık Ölçeklendirmesi

Logitler softmax'e verilmeden önce bir sıcaklık sabiti T'ye bölünür: σ(zᵢ / T). T = 1 standart davranış, T büyüdükçe tüm olasılıklar birbirine yaklaşır (düzgün dağılıma yakınsama), T küçüldükçe ise maksimum logite karşılık gelen sınıfın olasılığı 1'e yaklaşır (one-hot'a yakınsama). Bilgisinin damıtımı tekniğinde öğretmen modelin logitleri yüksek T ile yumuşatılır; öğrenci model sert etiketler yerine bu yumuşak hedefleri öğrenerek daha iyi genelleme yapar. Dil modellerinde üretim sırasında T = 0.7 daha tutarlı ve deterministik metin, T = 1.2-1.5 daha yaratıcı ama bazen tutarsız metin üretmek için ayarlanır.

Dikkat Mekanizmasındaki Rolü

Transformer mimarisinin her dikkat katmanında softmax merkezi bir görev üstlenir. Sorgu (Q) ve anahtar (K) matrislerinin nokta çarpımı hesaplanır; boyut ölçeklendirmesiyle √d_k'ya bölünür, ardından softmax uygulanarak her sorgu pozisyonu için dikkat ağırlıkları elde edilir: Attention(Q, K, V) = softmax(QK⊤ / √d_k) · V. Burada softmax iki işlevi birden yerine getirir: ağırlıkların toplamını 1'e normalize eder ve modelin seçici odaklanmasını (sparse attention) destekler. Masked attention varyantlarında gelecek token'larına karşılık gelen konumlar softmax'ten önce −∞ ile maskelenir; bu sayede o pozisyonlara sıfır ağırlık verilir.

Sık Sorulan Sorular

  • check_circle :
  • check_circle :
  • check_circle :
  • check_circle :
  • check_circle :