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
- Loss Function · Cara network mengukur kesalahannya
- Klasifikasi vs Regresi · Dua jenis prediksi dan kapan memakai masing-masing
- Logaritma dan Eksponensial · Matematika di balik cross-entropy, softmax, dan teori informasi
- Cara Kerja Self-Attention · Query, key, dan value, inti dari self-attention
- Entropy dan Cross-Entropy · Mengukur kejutan, ketidakpastian, dan kualitas prediksi
- Neural Network · Cara neuron dan layer mengenali gambar
Referensi
- Goodfellow, Bengio & Courville (2016), "Deep Learning", section 6.2.2.3: Softmax Units for Multinoulli Output Distributions
- Zhang et al., "Dive into Deep Learning", Softmax Regression
- Hinton, Vinyals & Dean (2015), "Distilling the Knowledge in a Neural Network"
- Guo et al. (2017), "On Calibration of Modern Neural Networks"
Terakhir diperbarui