Softmax
Softmax, logit vektörünü toplamı bire eşit olan olasılıklara dönüştürür. Formülü, sıcaklığı, sayısal kararlılığı, dikkat mekanizmasındaki kullanımını ve kodu ele alır.
Softmax, logits adı verilen ham puan vektörünü olasılık dağılımına dönüştüren bir fonksiyondur: Her çıktı 0 ile 1 arasındadır ve çıktıların toplamı tam olarak 1'dir. z vektörü için softmax(z)ᵢ = e^(zᵢ) / Σⱼ e^(zⱼ) hesabını yapar; her puanın üstelini alır ve tüm üstel değerlerin toplamına böler. Softmax, birçok sınıf arasından birini seçen sinir ağlarının standart çıktı katmanıdır; benzerlik puanlarını Transformer'ların dikkat mekanizması içinde ağırlıklara, bir dil modelinin söz dağarcığı puanlarını ise sonraki belirteç olasılıklarına dönüştürür. Adı, olasılığın tamamını en yüksek puana veren argmax işleminin düzgün ve türevlenebilir bir sürümü olmasını yansıtır.
Softmax Nasıl Çalışır#
Üstel fonksiyon tüm çıktıları pozitif yapar ve puanlar arasındaki farkları büyütür; bu nedenle en büyük logit, olasılığın orantısız derecede büyük bir bölümünü alır. Softmax, logitlerin sıralamasını korur; bu yüzden en yüksek puan her zaman en yüksek olasılığı alır. Yalnızca logitler arasındaki farklar önemlidir: her logite aynı sabiti eklemek çıktıyı değiştirmez. Kütüphaneler, üstel alma işleminden önce en büyük logiti çıkararak bu özelliği sayısal kararlılık için kullanır; çünkü e¹⁰⁰⁰, 32 bit kayan nokta sınırını aşar.
T sıcaklığı, dağılımın ne kadar sivri olacağını belirler: softmax(z / T). 1'den küçük T değerleri dağılımı en üst sınıfa doğru sivriltir; 1'den büyük değerler ise dağılımı düzleştirerek tekdüze hâle getirir. Aynı formül, T'nin gerçek anlamda sıcaklık olduğu istatistiksel fizikte Boltzmann dağılımı olarak karşımıza çıkar. Aşağıdaki PyTorch kod örneği her iki etkiyi de gösteriyor:
import torch
logits = torch.tensor([2.0, 1.0, 0.1])
# Divide logits by a temperature before softmax: low sharpens, high flattens
for temperature in [0.5, 1.0, 2.0]:
probs = torch.softmax(logits / temperature, dim=0)
print(f"T={temperature}: {[round(p, 3) for p in probs.tolist()]}")
# Adding a constant leaves softmax unchanged, so libraries subtract the max to avoid overflow
big = logits + 1000
naive = big.exp() / big.exp().sum()
print(f"Naive: {naive.tolist()}, torch.softmax: {[round(p, 3) for p in torch.softmax(big, dim=0).tolist()]}")T = 1 iken 2.0, 1.0 ve 0.1 logitleri [0.659, 0.242, 0.099] değerlerine dönüşür. Sıcaklığı yarıya indirmek dağılımı sivrilterek [0.864, 0.117, 0.019] sonucunu verir; iki katına çıkarmak ise dağılımı düzleştirerek [0.502, 0.304, 0.194] sonucunu verir. Her logite 1.000 eklenince saf formül sınırı aşar ve [nan, nan, nan] yazdırır; torch.softmax ise yine [0.659, 0.242, 0.099] döndürür.
Eğitimde Softmax#
Sınıflandırıcılar softmax ve çapraz entropi kaybı birlikte kullanılarak eğitilir. Kayıp, doğru y sınıfına atanan olasılığın negatif logaritması olan −log(pᵧ) değeridir; logitlere göre gradyanı ise tahmin edilen olasılıklardan one-hot etiketi çıkararak elde edilen p − y değeridir. Bu yüzden çerçeveler ikisini birleştirir: PyTorch'un CrossEntropyLoss işlevi ham logits alır ve log-softmax hesabını dahili olarak yapar; bu, ayrı ayrı hesaplanmış olasılıkların logaritmasını almaktan daha kararlıdır. Bu şekilde eğitilmiş bir model logits çıktısı verir; softmax yalnızca çıkarım sırasında olasılıklar gerektiğinde uygulanır.
Softmax Nerelerde Kullanılır#
- Görüntü sınıflandırma: Sınıflandırıcının son katmanı her sınıf için bir logit üretir ve softmax bunları kullanıcının gördüğü güven puanlarına dönüştürür.
- Dikkat: Transformer'lar, bir sorguyla her anahtar arasındaki benzerlik puanlarına softmax(QKᵀ / √dₖ) uygular; böylece her belirtecin dikkat ağırlıklarının toplamı 1 olur. √dₖ'ye bölmek, puanların boyutla birlikte büyüyüp softmax'ı doyuma ulaştırmasını engeller.
- Metin üretimi: Bir büyük dil modeli (LLM), her adımda on binlerce veya yüz binlerce belirteçten oluşan söz dağarcığına softmax uygular; örnekleme sıcaklığı da yukarıdaki T değeridir. Ardından çekirdek örnekleme, olasılıkları belirli bir eşiğe ulaşan en küçük belirteç kümesinden seçim yapar.
- Pekiştirmeli öğrenme: Eylem değerlerine uygulanan softmax, genellikle en iyi eylemi seçen ama diğerlerini de keşfetmeye devam eden bir politika sağlar; sıcaklık, keşif ile sömürü arasındaki dengeyi belirler.
YOLO26 sınıflandırma modelleri, çıkarım sırasında sınıflandırma başlıklarında softmax uygular; her sonucun probs özniteliği, 1.000 ImageNet sınıfına ait dağılımın tamamını içerir:
from ultralytics import YOLO
# Load a YOLO26 classification model trained on ImageNet
model = YOLO("yolo26n-cls.pt")
results = model("https://ultralytics.com/images/bus.jpg")
# probs holds the softmax output of the classification head
probs = results[0].probs
for index, conf in zip(probs.top5, probs.top5conf.tolist()):
print(f"{results[0].names[index]}: {conf:.3f}")
print(f"Sum over all 1,000 classes: {probs.data.sum().item():.3f}")En olası beş sınıfı olasılıklarıyla birlikte yazdırır; başlık bir softmax dağılımı döndürdüğü için 1.000 sınıfın toplamı 1.000 olarak görünür.
Softmax ve İlgili Fonksiyonlar#
- Sigmoid: Her puanı birbirinden bağımsız olarak 0 ile 1 arasına sıkıştırır; bu nedenle çıktıların toplamının 1 olması gerekmez. Sigmoid, görüntünün hem bir kişiyi hem de bir sırt çantasını içermesi gibi ikili ve çok etiketli problemlere uygundur; nesne algılayıcılar da genellikle her sınıfı bununla puanlar. İki sınıf için softmax, iki logit arasındaki farkın sigmoid işlevine tam olarak indirgenir.
- Argmax: En yüksek puanın dizinini döndürür; bu, gradyanı olmayan kesin bir karardır. Softmax aynı sıralamayı korurken türevlenebilir kalır, dolayısıyla eğitimde kullanılabilir. Softmax olasılıklarına argmax uygulamak, logitlere argmax uygulamakla aynı sonucu verir.
- Log-softmax: Kararlılık için doğrudan hesaplanan softmax logaritmasıdır ve çapraz entropi kaybı bunu kullanır.
- Sıcaklık ölçekleme: Eğitimden sonra doğrulama verileriyle tek bir sıcaklığın uyarlandığı bir kalibrasyon yöntemidir; böylece softmax olasılıkları modelin gerçekte ne sıklıkta doğru tahmin yaptığını yansıtır. Her logiti aynı pozitif T değerine bölmek sıralamayı koruduğu için tahmin edilen sınıf değişmez.










