Dalam softmax classifier, mengapa menggunakan fungsi exp untuk melakukan normalisasi?

30

Mengapa menggunakan softmax sebagai lawan dari normalisasi standar? Di area komentar dari jawaban teratas dari pertanyaan ini, @Kilian Batzner mengajukan 2 pertanyaan yang juga membingungkan saya. Sepertinya tidak ada yang memberi penjelasan kecuali manfaat numerik.

Saya mendapatkan alasan untuk menggunakan Cross-Entropy Loss, tetapi bagaimana hubungannya dengan softmax? Anda mengatakan "fungsi softmax dapat dilihat sebagai upaya untuk meminimalkan entropi silang antara prediksi dan kebenaran". Misalkan, saya akan menggunakan normalisasi standar / linear, tetapi masih menggunakan Cross-Entropy Loss. Maka saya juga akan mencoba untuk meminimalkan Cross-Entropy. Jadi bagaimana softmax terkait dengan Cross-Entropy kecuali untuk manfaat numerik?

Adapun pandangan probabilistik: apa motivasi untuk melihat probabilitas log? Alasannya agak seperti "Kami menggunakan e ^ x dalam softmax, karena kami menafsirkan x sebagai log-probabilties". Dengan alasan yang sama dengan yang dapat kami katakan, kami menggunakan e ^ e ^ e ^ x dalam softmax, karena kami menafsirkan x sebagai log-log-log-probabilitas (Membesar-besarkan di sini, tentu saja). Saya mendapatkan manfaat numerik dari softmax, tetapi apa motivasi teoretis untuk menggunakannya?

Hans
sumber
Dapat dibedakan, mengarah ke hasil non-negatif (seperti yang diperlukan untuk probabilitas sehingga cross-entropy dapat dihitung), dan berperilaku seperti fungsi maks, yang sesuai dalam pengaturan klasifikasi. Selamat datang di situs ini!
Emre
@ Terima kasih! Tapi apa artinya "berperilaku seperti fungsi maks"? Selain itu, jika saya memiliki fungsi lain yang juga dapat dibedakan, monoton meningkat dan mengarah ke hasil yang tidak negatif, dapatkah saya menggunakannya untuk menggantikan fungsi exp dalam rumus?
Hans
Ketika Anda menormalkan menggunakan max , argumen terbesar akan dipetakan ke 1 sementara sisanya dipetakan ke nol, karena pertumbuhan fungsi eksponensial.
Emre

Jawaban:

37

Ini lebih dari sekedar angka. Pengingat cepat dari softmax:

P(y=j|x)=exjk=1Kexk

Di mana adalah vektor input dengan panjang sama dengan jumlah kelas . Fungsi softmax memiliki 3 sifat yang sangat bagus: 1. menormalkan data Anda (menghasilkan distribusi probabilitas yang tepat), 2. dapat dibedakan, dan 3. menggunakan exp yang Anda sebutkan. Beberapa poin penting:K.xK

  1. Fungsi kerugian tidak secara langsung terkait dengan softmax. Anda dapat menggunakan normalisasi standar dan masih menggunakan lintas-entropi.

  2. Fungsi "hardmax" (yaitu argmax) tidak dapat dibedakan. Softmax memberikan setidaknya probabilitas minimal untuk semua elemen dalam vektor output, dan dengan demikian dapat dibedakan dengan baik, maka istilah "lunak" dalam softmax.

  3. Sekarang saya menjawab pertanyaan Anda. The di Softmax adalah fungsi eksponensial alami. Sebelum kita menormalkan, kita mentransformasikan seperti pada grafik :x e xexex

fungsi eksponensial alami

Jika adalah 0 maka , jika adalah 1, maka , dan jika adalah 2, sekarang ! Langkah besar! Inilah yang disebut transformasi non-linear dari skor log kami yang tidak dinormalisasi. Sifat yang menarik dari fungsi eksponensial yang dikombinasikan dengan normalisasi dalam softmax adalah bahwa skor tinggi dalam menjadi lebih mungkin daripada skor rendah.y = 1 x y = 2.7 x y = 7 xxy=1xy=2.7xy=7x

Contoh . Katakan , dan skor log Anda adalah vektor . Output fungsi argmax sederhana:x [ 2 , 4 , 2 , 1 ]K=4x[2,4,2,1]

[0,1,0,0]

Argmax adalah tujuannya, tetapi tidak dapat dibedakan dan kami tidak dapat melatih model kami dengannya :( Normalisasi sederhana, yang dapat dibedakan, menghasilkan probabilitas berikut:

[0.2222,0.4444,0.2222,0.1111]

Itu benar-benar jauh dari argmax! :( Sedangkan output softmax:

[0.1025,0.7573,0.1025,0.0377]

Itu jauh lebih dekat dengan argmax! Karena kami menggunakan eksponensial alami, kami sangat meningkatkan probabilitas skor terbesar dan mengurangi probabilitas skor lebih rendah bila dibandingkan dengan normalisasi standar. Oleh karena itu "maks" dalam softmax.

vega
sumber
3
Info bagus Namun, alih-alih menggunakan e, bagaimana dengan menggunakan konstanta katakan 3, atau 4? Apakah hasilnya akan sama?
Cheok Yan Cheng
7
@ ChokYanCheng, ya. Tetapi ememiliki turunan yang lebih baik;)
vega
Saya telah melihat bahwa hasil softmax biasanya digunakan sebagai probabilitas milik masing-masing kelas. Jika pilihan 'e' bukan konstanta lainnya arbitrer, tidak masuk akal untuk melihatnya dalam hal probabilitas, bukan?
javierdvalle
@vega Maaf, tapi saya masih tidak melihat bagaimana itu menjawab pertanyaan: mengapa tidak menggunakan e ^ e ^ e ^ e ^ e ^ x karena alasan yang sama? Tolong jelaskan
Gulzar
@jvalle bukan eyang membuatnya dapat ditafsirkan sebagai suatu probabilitas, itu adalah fakta bahwa setiap elemen dari output softmax dibatasi dalam [0,1] dan seluruh jumlah menjadi 1.
vega
2

Selain penjelasan vega,

mari kita tentukan softmax generik: mana adalah konstanta> = 1

P(y=j|x)=ψxjk=1Kψxk
ψ

jika , maka Anda cukup jauh dari argmax seperti yang disebutkan @vega.ψ=1

Sekarang mari kita asumsikan , sekarang Anda cukup dekat dengan argmax tetapi Anda juga memiliki angka yang sangat kecil untuk nilai negatif dan angka besar untuk positif. Nomor ini overflows yang titik mengambang batas aritmatika dengan mudah (untuk batas contoh maksimum float64 numpy adalah ). Selain itu, bahkan jika pilihannya adalah yang jauh lebih kecil dari , kerangka kerja harus menerapkan versi softmax yang lebih stabil (mengalikan pembilang dan penyebut dengan konstanta ) karena hasilnya menjadi kecil untuk dapat mengekspresikan dengan presisi seperti itu.ψ=10010 308 ψ = e 100 C10308ψ=e100C

Jadi, Anda ingin memilih konstanta yang cukup besar untuk memperkirakan argmax dengan baik, dan juga cukup kecil untuk mengekspresikan angka besar dan kecil ini dalam perhitungan.

Dan tentu saja, juga memiliki turunan yang cukup bagus.e

komunistbakkal
sumber
2

Pertanyaan ini sangat menarik. Saya tidak tahu alasan pastinya, tetapi saya pikir alasan berikut dapat digunakan untuk menjelaskan penggunaan fungsi eksponensial. Posting ini terinspirasi oleh mekanika statistik dan prinsip entropi maksimum.

Saya akan menjelaskan ini dengan menggunakan contoh dengan gambar , yang merupakan gambar dari kelas , gambar dari kelas , ..., dan gambar dari kelas . Kemudian kami mengasumsikan bahwa jaringan saraf kami dapat menerapkan transformasi nonlinier pada gambar kami, sehingga kami dapat menetapkan 'level energi' untuk semua kelas. Kami berasumsi bahwa energi ini berada pada skala nonlinear yang memungkinkan kami untuk memisahkan gambar secara linear.Nn1C1n2C2nKCKEk

Energi rata-rata terkait dengan energi lain oleh hubungan berikut E¯Ek

NE¯=k=1KnkEk.()

Pada saat yang sama, kita melihat bahwa jumlah total gambar dapat dihitung sebagai jumlah berikut

N=k=1Knk.()

Gagasan utama dari prinsip entropi maksimum adalah bahwa jumlah gambar dalam kelas yang sesuai didistribusikan sedemikian rupa sehingga jumlah kombinasi yang mungkin untuk distribusi energi yang diberikan dimaksimalkan. Sederhananya sistem tidak akan terlalu likeli masuk ke keadaan di mana kita hanya memiliki kelas itu juga tidak akan masuk ke keadaan di mana kita memiliki jumlah gambar yang sama di setiap kelas. Tetapi mengapa demikian? Jika semua gambar berada dalam satu kelas sistem akan memiliki entropi yang sangat rendah. Kasus kedua juga akan menjadi situasi yang sangat tidak wajar. Sangat mungkin bahwa kita akan memiliki lebih banyak gambar dengan energi sedang dan lebih sedikit gambar dengan energi sangat tinggi dan sangat rendah.n1

Entropi meningkat dengan jumlah kombinasi di mana kita dapat membagi gambar menjadi kelas gambar , , ..., dengan energi yang sesuai. Jumlah kombinasi ini diberikan oleh koefisien multinomialNn1n2nK

(N!n1!,n2!,,nK!)=N!k=1Knk!.

Kami akan mencoba untuk memaksimalkan angka ini dengan asumsi bahwa kami memiliki banyak gambar tanpa batas . Namun maksimasinya juga memiliki kendala kesetaraan dan . Jenis optimasi ini disebut optimasi terbatas. Kita dapat memecahkan masalah ini secara analitis dengan menggunakan metode pengganda Lagrange. Kami memperkenalkan pengganda Lagrange dan untuk kendala kesetaraan dan kami memperkenalkan Lagrange Funktion .N()()βαL(n1,n2,,nk;α,β)

L(n1,n2,,nk;α,β)=N!k=1Knk!+β[k=1KnkEkNE¯]+α[Nk=1Knk]

Seperti yang kita asumsikan kita juga dapat mengasumsikan dan menggunakan perkiraan Stirling untuk faktorialNnk

lnn!=nlnnn+O(lnn).

Perhatikan bahwa perkiraan ini (dua istilah pertama) hanya asimtotik, itu tidak berarti bahwa perkiraan ini akan konvergen keuntuk .lnn!n

Turunan parsial dari fungsi Lagrange dengan hormat akan menghasilkannk~

Lnk~=lnnk~1α+βEk~.

Jika kita menetapkan turunan parsial ini ke nol, kita dapat menemukannya

nk~=exp(βEk~)exp(1+α).()

Jika kita mengembalikan ini ke kita bisa mendapatkan()

exp(1+α)=1Nk=1Kexp(βEk).

Jika kita mengembalikan ini ke kita mendapatkan sesuatu yang seharusnya mengingatkan kita pada fungsi softmax()

nk~=exp(βEk~)1Nk=1Kexp(βEk).

Jika kita mendefinisikan sebagai probabilitas kelas oleh kita akan mendapatkan sesuatu yang benar-benar mirip dengan fungsi softmaxnk~/NCk~pk~

pk~=exp(βEk~)k=1Kexp(βEk).

Oleh karena itu, ini menunjukkan kepada kita bahwa fungsi softmax adalah fungsi yang memaksimalkan entropi dalam distribusi gambar. Dari titik ini, masuk akal untuk menggunakan ini sebagai distribusi gambar. Jika kita mengatur kita secara tepat mendapatkan definisi fungsi softmax untuk output .βEk~=wkTxkth

MachineLearner
sumber