Softmax fonksiyonu nedir?
Softmax fonksiyonu, K adet gerçek sayıdan oluşan bir vektörü alır ve onu bir olasılık dağılımına dönüştürür: her çıktı kesinlikle 0 ile 1 arasında yer alır ve K adet çıktının tamamı tam olarak 1'e eşittir. Sinir ağı sınıflandırıcılarının çıkış katmanında kullanılan standart aktivasyon fonksiyonudur; modelin ürettiği ham skorları (logitleri) sınıf olasılıklarına çevirir. Boyutsuz bir fonksiyon olduğu için girdiler herhangi bir birimi olmayan saf sayılardır.
Bu hesaplama aracı nasıl kullanılır?
Girdi vektörünüzü kutuya virgül, boşluk veya satır sonlarıyla ayrılmış bir sayı listesi olarak yazın (örneğin 1, 2, 3). Sayılar pozitif, negatif, sıfır veya ondalıklı olabilir. Hesapla düğmesine bastığınızda her bileşenin softmax olasılığını, çıktıların toplamını (1'e eşit olmalıdır) ve argmax değerini — yani en büyük olasılığa sahip bileşenin 1'den başlayan sıra numarasını — elde edersiniz.
Formülün açıklaması
Her j bileşeni için softmax şöyle hesaplanır: \( \sigma(z)_j = \dfrac{e^{z_j}}{\sum_k e^{z_k}} \). Üs alma işlemi her terimi pozitif yapar, toplama bölme ise bunları normalleştirerek toplamlarının 1 olmasını sağlar. Sayısal kararlılık için bu araç, üs almadan önce her elemandan en büyük değer olan m'yi çıkarır:
$$\sigma(\mathbf{x})_i = \frac{e^{\,x_i - \max(\mathbf{x})}}{\displaystyle\sum_{j=1}^{K} e^{\,x_j - \max(\mathbf{x})}}$$Ortak çarpan olan \( e^{-m} \) sadeleşir; böylece sonuç aynı kalırken büyük girdilerde taşma (overflow) önlenir.
Çözümlü örnek
z = (1, 2, 3) için: \( e^{1} = 2{,}71828 \), \( e^{2} = 7{,}38906 \), \( e^{3} = 20{,}08554 \) ve bunların toplamı 30,19287'dir. Her birini bu toplama böldüğümüzde \( \sigma = (0{,}09003,\ 0{,}24473,\ 0{,}66524) \) elde ederiz; bunlar toplandığında 1 eder. Argmax, en büyük girdi olan 3. indekstir ve olasılığı 0,66524'tür.
Sıkça sorulan sorular
Çıktıların toplamı neden her zaman 1'dir? Her üstel terim, tüm üstel terimlerin toplamına bölündüğü için bu normalleştirme toplamın 1 olmasını garanti eder.
Tüm girdiler eşitse ne olur? Sonuç, her çıktının \( 1/K \)'ya eşit olduğu düzgün (uniform) bir dağılımdır.
Her girdiye sabit bir sayı eklemek sonucu değiştirir mi? Hayır. Softmax kaydırmaya karşı değişmezdir (shift-invariant): tüm girdilere aynı c sabitini eklemek çıktıyı değiştirmez. Maksimum değeri çıkarmanın güvenli olmasının nedeni de tam olarak budur.