Lensa ML

Cara Kerja Softmax

Langkah 1 dari 6: Logit Mentah

Sebelum softmax

z₁2.0
z₂1.0
z₃-1.0
02.0z₁1.0z₂-1.0z₃5−5nilai logit

z₁

2.0

z₂

1.0

z₃

-1.0

z₁ adalah logit terbesar, jadi model condong ke kelas 1. Logit mentah belum berupa probabilitas.

Geser z₁, z₂, dan z₃ ke mana saja dari −5 sampai 5. Logit adalah output mentah dari layer terakhir network, satu per kelas, dan tanda maupun skalanya tidak dibatasi. Istilah ini berasal dari statistika: logit dari probabilitas p adalah log-odds ln(p / (1 − p)). Softmax tidak pernah mengubah urutan, jadi kelas dengan logit terbesar selalu mendapat probabilitas terbesar. Model bahasa seperti GPT-2 menghasilkan 50.257 logit di setiap posisi, satu per token dalam kosakatanya.

Langkah 2 dari 6: Fungsi Softmax

eᶻ / Σeᶻ

z₁2.0
z₂1.0
z₃-1.0
Logit Mentah02.0z₁1.0z₂-1.0z₃→eᶻ / ΣeᶻProbabilitas70.5%P₁25.9%P₂3.5%P₃

exp(z₁)

7.389

+

exp(z₂)

2.718

+

exp(z₃)

0.368

=

Σeᶻ

10.475

Probabilitas tersebar di semua kelas. Jumlahnya tetap 1,0, seperti output softmax mana pun.

Geser ketiga logit dan perhatikan batang di sebelah kanan. Rumusnya P(i) = e^(zᵢ) / Σⱼ e^(zⱼ). Untuk logit awal 2, 1, dan −1, hasilnya 0,705, 0,259, dan 0,035. Yang berpengaruh hanya selisih antar-logit: menambahkan konstanta yang sama ke ketiganya tidak mengubah output, dan selisih 1 membuat satu probabilitas menjadi e ≈ 2.72 kali probabilitas lain. Nilai exp dimulai dari 7,389, 2,718, dan 0,368, yang berjumlah 10,475. Membagi masing-masing dengan jumlah itu menghasilkan probabilitasnya.

Langkah 3 dari 6: Temperature

Menajamkan dan menghaluskan

z₁2.0
z₂1.0
z₃-0.5
Temperature (T)1.00
Logit Mentah02.0z₁1.0z₂-0.5z₃→eᶻᐟᵀ / ΣeᶻᐟᵀProbabilitas69.0%P₁25.4%P₂5.7%P₃T=1.00: standar

Temperature

1.00

P maks

69.0%

Entropi

1.106

T = 1 adalah softmax standar, tanpa temperature scaling.

Geser Temperature (T) dari 0,1 sampai 5. Temperature membagi setiap logit sebelum softmax: P(i) = e^(zᵢ/T) / Σⱼ e^(zⱼ/T). Untuk logit ini, kelas teratas mendapat 69,0% pada T = 1, 87,6% pada T = 0.5, dan 41,2% pada T = 5. Nilai entropy dinyatakan dalam bit. Dengan tiga kelas, nilai maksimumnya log₂ 3 ≈ 1.585, yang tercapai saat semua kelas sama besar. Knowledge distillation memakai T tinggi untuk memperlihatkan preferensi halus teacher model, dan temperature scaling memakai T hasil penyesuaian untuk mengalibrasi tingkat keyakinan model klasifikasi.

Langkah 4 dari 6: Stabilitas Numerik

Max trick

z₁100
Max trick:kurangi dengan max(z) sebelum exp untuk mencegah overflow
zᵢzᵢ − maxexp(·)P
z₁100→0.0→1.000→70.5%
z₂99→-1.0→0.368→25.9%
z₃97→-3.0→0.050→3.5%
exp(zᵢ) naif70.5%P₁25.9%P₂3.5%P₃max trick→exp(zᵢ−max(z)) stabil70.5%P₁25.9%P₂3.5%P₃

max(z)

100

exp(z₁) naif

2.7e+43

exp(z₁−max) stabil

1.000

exp(100) = 2.7e+43, sudah sangat besar. Menggeser logit sampai yang terbesar bernilai 0 menjaga setiap nilai exp di rentang aman, dan hasilnya tetap sama.

Geser z₁ dari 0 sampai 1000. Dua logit lainnya tetap 1 dan 3 di bawahnya. Pada float 64-bit, exp mengalami overflow begitu input-nya melewati sekitar 709,8, jadi versi naif gagal di 710. Pada float 32-bit, kegagalan terjadi di atas sekitar 88,7, dan pada float 16-bit di atas sekitar 11,1, angka yang mudah dicapai logit sungguhan. Trik ini tepat secara matematis: e^(zᵢ − m) / Σⱼ e^(zⱼ − m) mengalikan pembilang dan penyebut dengan e^(−m) yang sama. Framework melangkah lebih jauh dengan menyatukan softmax dan log di dalam cross-entropy, sehingga log-softmax dihitung lewat trik log-sum-exp.

Langkah 5 dari 6: Softmax vs Sigmoid

Multikelas vs biner

Sigmoid (biner)
σ(z) = 1 / (1 + e⁻ᶻ)
Softmax (multikelas)
P(i) = eᶻⁱ / Σeᶻʲ
z1.5
0.51.081.8%Ya18.2%TidakSigmoid: P(Ya) vs P(Tidak) = 1 − σ(z)σ(z)0.51.076.6%C₁17.1%C₂6.3%C₃Softmax: probabilitas terbagi ke 3 kelasP(C₁)P(C₂)P(C₃)

Sigmoid σ(z)

0.8176

Softmax P(C₁)

0.7662

Σ softmax

1.0000

Sigmoid memberi satu P(Ya). Softmax membagi probabilitas ke 3 kelas, jadi P(C₁) lebih rendah daripada σ(z).

Geser z dari −5 sampai 5 dan bandingkan σ(z) dengan softmax atas tiga logit [z, 0, −1]. Dengan dua kelas, softmax tepat menjadi sigmoid: softmax([z₁, z₂])₁ = σ(z₁ − z₂). Jadi, model klasifikasi biner bisa memakai satu output sigmoid atau softmax dua arah, dan keduanya menghasilkan model yang sama. Pada z = 1.5, sigmoid memberi 0,818 dan softmax tiga kelas memberi 0,766. Pakai sigmoid yang saling independen kalau beberapa label bisa benar sekaligus, misalnya tag pada foto.

Langkah 6 dari 6: Softmax dalam Praktik

Pipeline klasifikasi

feat₁0.80
feat₂-0.30
feat₃0.50
f10.8f2-0.3f30.5z11.26z2-1.19z30.80softmaxeᶻ/Σeᶻ58.2%Kucing5.0%Anjing36.8%Burung★

Logit Kucing

1.26

Logit Anjing

-1.19

Logit Burung

0.80

Prediksi

Kucing

Model condong ke Kucing, tetapi belum sepenuhnya yakin. Geser slider feature untuk melihat perubahan logit dan probabilitas.

Geser feat₁, feat₂, dan feat₃ di antara −2 dan 2. Setiap logit adalah dot product satu baris matriks weight W berukuran 3×3 dengan vector feature. Feature awal [0.8, −0.3, 0.5] menghasilkan logit 1,26 untuk Kucing, −1,19 untuk Anjing, dan 0,80 untuk Burung, atau 58%, 5%, dan 37%. Training memakai cross-entropy, −ln P(kelas benar). Kalau Kucing benar, loss-nya −ln 0.582 ≈ 0.54. Gradient-nya terhadap tiap logit cukup P(i) dikurangi target, yaitu 1 untuk kelas yang benar dan 0 untuk sisanya.

Apa itu fungsi softmax?

Fungsi softmax mengubah vector berisi skor mentah, yang disebut logit, menjadi distribusi probabilitas. Fungsi ini memangkatkan bilangan e dengan tiap skor, lalu membaginya dengan jumlah semua hasil eksponensial itu, sehingga setiap output berada di antara 0 dan 1 dan semua output berjumlah 1. Skor yang lebih besar mendapat probabilitas lebih besar, dan selisih antarskor menentukan seberapa timpang hasilnya.

Softmax adalah output layer standar untuk klasifikasi multikelas, dari pengenalan angka sampai 1.000 kelas ImageNet. Model bahasa menerapkannya pada seluruh kosakata untuk memilih token berikutnya, dan attention layer menerapkannya untuk menentukan seberapa besar perhatian tiap token kepada token lain. Saat training, softmax hampir selalu dipasangkan dengan cross-entropy loss.

Ide utama

  • Softmax memetakan vector bilangan real apa pun menjadi probabilitas yang berjumlah 1.
  • Softmax mempertahankan urutan logit, jadi logit teratas selalu menjadi kelas teratas.
  • Yang berpengaruh hanya selisih antar-logit. Menggeser semuanya dengan satu konstanta tidak mengubah apa pun.
  • Temperature di bawah 1 menajamkan distribusi, dan di atas 1 meratakannya.
  • Mengurangi dengan logit terbesar sebelum eksponensial mencegah overflow.
  • Untuk dua kelas, softmax sama dengan sigmoid dari selisih logit.

Ulasan singkat tentang topik ini

Pertanyaan umum

Kenapa disebut softmax?

Softmax adalah versi halus dari fungsi argmax yang bisa diturunkan. Argmax memberikan seluruh bobot ke skor terbesar, sedangkan softmax memberikan sebagian besar bobot ke skor itu dan sedikit ke sisanya. Saat temperature mendekati 0, softmax mendekati argmax.

Kenapa softmax memakai fungsi eksponensial?

Fungsi eksponensial bernilai positif untuk input apa pun, jadi logit negatif tetap menghasilkan probabilitas yang sah. Fungsi ini juga mengubah selisih menjadi rasio, sehingga logit berperilaku seperti log-probability yang belum dinormalisasi. Ini cocok dengan logaritma di cross-entropy loss dan menghasilkan gradient sederhana P − y.

Apakah output softmax benar-benar probabilitas?

Output itu membentuk distribusi yang sah, tetapi tidak dijamin cocok dengan seberapa sering model benar. Neural network besar sering terlalu percaya diri: output softmax 95% bisa jadi benar jauh lebih jarang daripada 95% dari waktu. Metode kalibrasi seperti temperature scaling mengoreksi hal ini setelah training.

Di mana softmax dipakai selain di output layer?

Attention layer pada transformer menerapkan softmax pada skor antara query dan setiap key, sehingga menghasilkan bobot yang berjumlah 1 di sepanjang urutan. Policy network pada reinforcement learning memakainya untuk mengubah skor aksi menjadi probabilitas mengambil tiap aksi.

Penjelasan terkait

Referensi

  1. Goodfellow, Bengio & Courville (2016), "Deep Learning", section 6.2.2.3: Softmax Units for Multinoulli Output Distributions
  2. Zhang et al., "Dive into Deep Learning", Softmax Regression
  3. Hinton, Vinyals & Dean (2015), "Distilling the Knowledge in a Neural Network"
  4. Guo et al. (2017), "On Calibration of Modern Neural Networks"

Terakhir diperbarui