Pada lapisan output dari jaringan saraf, biasanya menggunakan fungsi softmax untuk memperkirakan distribusi probabilitas:
Ini mahal untuk dihitung karena eksponen. Mengapa tidak hanya melakukan transformasi Z sehingga semua output positif, dan kemudian menormalkan hanya dengan membagi semua output dengan jumlah semua output?
Jawaban:
Ada satu atribut bagus dari Softmax dibandingkan dengan normalisasi standar.
Ini bereaksi terhadap stimulasi rendah (bayangkan gambar buram) dari jaringan syaraf Anda dengan distribusi yang agak seragam dan terhadap stimulasi tinggi (mis. Jumlah besar, pikirkan gambar yang tajam) dengan probabilitas mendekati 0 dan 1.
Sedangkan normalisasi standar tidak peduli asalkan proporsinya sama.
Lihat apa yang terjadi ketika soft max memiliki input 10 kali lebih besar, yaitu jaringan saraf Anda mendapatkan gambar yang tajam dan banyak neuron yang diaktifkan
Dan kemudian membandingkannya dengan normalisasi standar
sumber
Saya sudah memiliki pertanyaan ini selama berbulan-bulan. Sepertinya kita hanya dengan pintar menebak softmax sebagai fungsi output dan kemudian menafsirkan input ke softmax sebagai probabilitas log. Seperti yang Anda katakan, mengapa tidak hanya menormalisasi semua output dengan membagi dengan jumlah mereka? Saya menemukan jawabannya dalam buku Deep Learning oleh Goodfellow, Bengio dan Courville (2016) di bagian 6.2.2.
Katakanlah layer tersembunyi terakhir kita memberi kita z sebagai aktivasi. Kemudian softmax didefinisikan sebagai
Penjelasan Sangat Singkat
Exp dalam fungsi softmax secara kasar membatalkan log dalam kehilangan lintas-entropi yang menyebabkan kerugian menjadi linear di z_i. Ini mengarah ke gradien yang kira-kira konstan, ketika modelnya salah, memungkinkannya untuk memperbaiki dirinya sendiri dengan cepat. Jadi, softmax jenuh yang salah tidak menyebabkan gradien hilang.
Penjelasan Singkat
Metode yang paling populer untuk melatih jaringan saraf adalah Estimasi Kemungkinan Maksimum. Kami memperkirakan parameter theta dengan cara yang memaksimalkan kemungkinan data pelatihan (ukuran m). Karena kemungkinan seluruh dataset pelatihan adalah produk dari kemungkinan masing-masing sampel, lebih mudah untuk memaksimalkan kemungkinan log dari dataset dan dengan demikian jumlah kemungkinan log dari masing-masing sampel diindeks oleh k:
Sekarang, kita hanya fokus pada softmax di sini dengan z yang sudah diberikan, jadi kita bisa menggantinya
dengan saya menjadi kelas sampel kth yang benar. Sekarang, kita melihat bahwa ketika kita mengambil logaritma dari softmax, untuk menghitung kemungkinan log sampel, kita mendapatkan:
, yang untuk perbedaan besar dalam z kira-kira mendekati
Pertama, kita melihat komponen linear z_i di sini. Kedua, kita dapat memeriksa perilaku max (z) untuk dua kasus:
Kami melihat bahwa kemungkinan log secara keseluruhan akan didominasi oleh sampel, di mana modelnya tidak benar. Juga, bahkan jika model ini benar-benar salah, yang mengarah ke softmax jenuh, fungsi kerugian tidak jenuh. Ini kira-kira linear dalam z_j, artinya kita memiliki gradien yang konstan konstan. Ini memungkinkan model untuk memperbaiki dirinya sendiri dengan cepat. Perhatikan bahwa ini bukan kasus untuk Mean Squared Error misalnya.
Penjelasan Panjang
Jika softmax masih tampak sebagai pilihan yang sewenang-wenang bagi Anda, Anda dapat melihat pembenaran untuk menggunakan sigmoid dalam regresi logistik:
Mengapa fungsi sigmoid bukan yang lain?
Softmax adalah generalisasi dari sigmoid untuk masalah multi-kelas dibenarkan secara analog.
sumber
Saya telah menemukan penjelasan di sini sangat baik: CS231n: Jaringan Syaraf Konvolusional untuk Pengenalan Visual.
Di permukaan algoritma softmax tampaknya menjadi normalisasi non-linear sederhana (kami menyebarkan data dengan eksponensial). Namun, ada lebih dari itu.
Secara khusus ada beberapa pandangan berbeda ( tautan yang sama seperti di atas ):
Teori Informasi - dari perspektif teori informasi, fungsi softmax dapat dilihat sebagai upaya untuk meminimalkan cross-entropy antara prediksi dan kebenaran.
Pandangan Probabilistik - dari perspektif ini kita sebenarnya melihat pada probabilitas log, jadi ketika kita melakukan eksponensial kita berakhir dengan probabilitas mentah. Dalam hal ini persamaan softmax menemukan MLE (Maximum Likelihood Estimate)
Singkatnya, meskipun persamaan softmax sepertinya bisa arbitrer, itu BUKAN. Ini sebenarnya adalah cara yang agak berprinsip untuk menormalisasi klasifikasi untuk meminimalkan kemungkinan lintas-entropi / negatif antara prediksi dan kebenaran.
sumber
Nilai q_i mewakili kemungkinan log. Untuk memulihkan nilai probabilitas, Anda harus membuatnya eksponensial.
Salah satu alasan mengapa algoritma statistik sering menggunakan fungsi kerugian log-likelihood adalah bahwa mereka lebih stabil secara numerik: produk probabilitas dapat direpresentasikan menjadi angka floating point yang sangat kecil. Menggunakan fungsi kerugian log-likelihood, produk probabilitas menjadi jumlah.
Alasan lain adalah bahwa kemungkinan log terjadi secara alami ketika memperoleh estimator untuk variabel acak yang diasumsikan diambil dari distribusi Gaussian multivariat. Lihat misalnya estimator Maximum Likelihood (ML) dan cara terhubung ke kuadrat terkecil.
Sebagai seorang sidenote, saya berpikir bahwa pertanyaan ini lebih sesuai untuk Teori CS atau Ilmu Komputasi Stack Exchange.
sumber
Kami sedang melihat masalah klasifikasi multi-kelas. Artinya, variabel yang diprediksi
y
dapat mengambil salah satuk
kategori, di manak > 2
. Dalam teori probabilitas, ini biasanya dimodelkan oleh distribusi multinomial. Distribusi multinomial adalah anggota distribusi keluarga eksponensial. Kita dapat merekonstruksi probabilitasP(k=?|x)
menggunakan properti distribusi keluarga eksponensial, itu bertepatan dengan rumus softmax.Jika Anda yakin masalahnya dapat dimodelkan oleh distribusi lain, selain multinomial, maka Anda bisa mencapai kesimpulan yang berbeda dari softmax.
Untuk informasi lebih lanjut dan derivasi formal silakan lihat catatan kuliah CS229 (9.3 Softmax Regression) .
Selain itu, trik yang bermanfaat biasanya dilakukan untuk softmax adalah: softmax (x) = softmax (x + c) , softmax tidak sama dengan offset konstan pada input.
sumber
softmax
bukan fungsi aktivasi. Fungsi aktivasi adalah operasi elemen-bijaksana - memberikan elemen tensor-bijaksana melakukan operasi non-linear untuk menghasilkan tensor lain. Tetapisoftmax
adalah operasi vektor, itu menghasilkan Anda vektor dinormalisasi, ada dependensi batin antara setiap elemen.Saya pikir salah satu alasannya adalah untuk berurusan dengan angka negatif dan pembagian dengan nol, karena exp (x) akan selalu positif dan lebih besar dari nol.
Misalnya untuk
a = [-2, -1, 1, 2]
jumlah akan 0, kita dapat menggunakan softmax untuk menghindari pembagian dengan nol.sumber
[0, 1, 3, 4]
kemudian membelah.Misalkan kita mengubah fungsi softmax sehingga aktivasi keluaran diberikan oleh
di mana
c
konstanta positif. Catatan yangc=1
sesuai dengan fungsi softmax standar. Tetapi jika kita menggunakan nilai yang berbedac
kita mendapatkan fungsi yang berbeda, yang secara kualitatif agak mirip dengan softmax. Secara khusus, menunjukkan bahwa aktivasi output membentuk distribusi probabilitas, seperti halnya untuk softmax biasa. Misalkan kita membiarkanc
menjadi besar, yaituc→∞
,. Berapa nilai pembatas untuk aktivasi outputa^L_j
? Setelah menyelesaikan masalah ini, harus jelas bagi Anda mengapa kami menganggapc=1
fungsi tersebut sebagai versi "lunak" dari fungsi maksimum. Ini adalah asal dari istilah "softmax". Anda dapat mengikuti detail dari sumber ini (persamaan 83).sumber
Menambah jawaban Piotr Czapla, semakin besar nilai input, semakin besar probabilitas untuk input maksimum, untuk proporsi yang sama dan dibandingkan dengan input lainnya:
sumber
Dari " Sebuah Eksplorasi Softmax Alternatif yang Milik Keluarga Rugi Bulat " https://arxiv.org/abs/1511.05042
Para penulis mengeksplorasi beberapa fungsi lain di antaranya adalah ekspansi Taylor
exp
dan disebut softmax bola dan menemukan bahwa kadang-kadang mereka mungkin melakukan lebih baik dari biasanyasoftmax
.sumber