Fungsi Softmax vs Sigmoid di Logistic classifier?


63

Apa yang menentukan pilihan fungsi (Softmax vs Sigmoid) dalam pengklasifikasi Logistik?

Misalkan ada 4 kelas output. Masing-masing fungsi di atas memberikan probabilitas masing-masing kelas menjadi hasil yang benar. Jadi mana yang harus diambil untuk classifier?


16
Fungsi softmax tidak lain adalah generalisasi dari sigmoid, jadi tidak sepenuhnya jelas apa yang Anda maksud dengan "softmax vs sigmoid."
dsaxton

2
Ini adalah kasus dengan sigmoid. Ketika kita menggunakan sigmoid satu kelas memiliki probabilitas exp(βTx)/(exp(βTx)+1) dan yang lain memiliki probabilitas 1/(exp(βTx)+1) .
dsaxton

3
Poster reddit membuat perbedaan yang menurut saya salah atau setidaknya tidak relevan. Apakah salah satu kelas memiliki bobot satu atau tidak, hanya masalah menggeser nilai, yang tidak berpengaruh pada probabilitas.
dsaxton


3
"Tidak sepenuhnya jelas apa yang Anda maksud dengan" softmax vs sigmoid. "" tepat di bawah judul, ada tubuh pertanyaan - sangat mudah untuk dilewatkan, saya tahu. Plus, itu adalah judul yang bagus untuk mengarahkan pertanyaan google agar datang ke sini untuk menjawab apa yang diminta.
michael

Jawaban:


77

Fungsi sigmoid digunakan untuk regresi logistik dua kelas, sedangkan fungsi softmax digunakan untuk regresi logistik multiklass (alias MaxEnt, regresi logistik multinomial, Regresi softmax, Maximum Entropy Classifier).


Dalam regresi logistik dua kelas, probabilitas yang diprediksi adalah sebagai berikut, menggunakan fungsi sigmoid:

Pr(Yi=0)=eβXi1+eβ0XiPr(Yi=1)=1Pr(Yi=0)=11+eβXi

Dalam regresi logistik multiklass, dengan kelas , probabilitas yang diprediksi adalah sebagai berikut, menggunakan fungsi softmax:K

Pr(Yi=k)=eβkXi 0cKeβcXi

Seseorang dapat mengamati bahwa fungsi softmax adalah perpanjangan dari fungsi sigmoid ke kasing multiclass, seperti yang dijelaskan di bawah ini. Mari kita lihat regresi logistik multikelas, dengan kelas:K=2

Pr(Yi=0)=eβ0Xi 0cKeβcXi=eβ0Xieβ0Xi+eβ1Xi=e(β0β1)Xie(β0β1)Xi+1=eβXi1+eβXiPr(Yi=1)=eβ1Xi 0cKeβcXi=eβ1Xieβ0Xi+eβ1Xi=1e(β0β1)Xi+1=11+eβXi

dengan . Kami melihat bahwa kami memperoleh probabilitas yang sama seperti dalam regresi logistik dua kelas menggunakan fungsi sigmoid. Wikipedia mengembangkan sedikit lebih banyak tentang itu.β=(β0β1)


1
Saya naif dalam hal ini, Tapi saya melihat ini banyak waktu β = - (β0 − β1) Apa penjelasan yang mungkin untuk itu? Sejauh yang saya tahu di Sigmoids β akan menjadi vektor. Dan mereka biasanya satu untuk dijalankan. Lalu bagaimana β0 dan β1 muncul dalam gambar?
Ishan Bhatt

1
@IshanBhatt komentar ini dapat membantu.
Tom Hale

anehnya, saya masih bisa mundur ke multiclasses hanya menggunakan sigmoid :)
datdinhquoc

15

Mereka, pada kenyataannya, setara, dalam arti bahwa satu dapat diubah menjadi yang lain.

Misalkan data Anda diwakili oleh vektor , dari dimensi arbitrer, dan Anda membuat classifier biner untuk itu, menggunakan transformasi affine diikuti oleh softmax:x

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i{0,1}.

Mari kita ubah menjadi classifier biner setara yang menggunakan sigmoid, bukan softmax. Pertama-tama, kita harus memutuskan probabilitas mana yang kita inginkan dari sigmoid untuk output (yang bisa untuk kelas atau ). Pilihan ini benar-benar arbitrer dan jadi saya memilih kelas . Kemudian, classifier saya akan berbentuk:C0C1C0

z=wTx+b,
P(C0|x)=σ(z)=11+ez,
P(C1|x)=1σ(z).

Pengklasifikasi sama jika probabilitasnya sama, jadi kita harus memaksakan:

σ(z)=softmax(z0)

Mengganti , dan dengan ekspresi mereka dalam bentuk dan dan melakukan beberapa hal langsung manipulasi aljabar, Anda dapat memverifikasi bahwa kesetaraan di atas berlaku jika dan hanya jika dan diberikan oleh:z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.

@null Oke, saya jika Anda bertanya, maka Anda tidak mengerti penjelasan saya. Biarkan saya mengatasi masalah spesifik Anda: jika Anda memberi tahu saya bahwa Anda memberi makan data Anda ke sigmoid, maka itu harus berupa angka satu dimensi, . Saat mengumpankannya ke sigmoid, Anda mendapatkan probabilitas berada di salah satu dari dua kelas Anda, misalnya : . Kemudian, probabilitas berada di adalah: . Sekarang mari kita ganti sigmoid Anda dengan softmax. (Bersambung). xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
D ...

(Kelanjutan). Untuk menerapkan softmax ke masalah klasifikasi dengan dua kelas, Anda perlu data satu dimensi Anda untuk ditransformasikan menjadi vektor dua dimensi. Karena itu, kita perlu mendefinisikan dan . Mari kita pilih . Karena harus memenuhi , kami memiliki , jadi . Sekarang, kita memiliki dan . Dengan menggunakan ini, Anda dapat segera memverifikasi bahwa . w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
D ...

Selain itu, kombinasi dan apa yang memenuhi (yaitu, ) akan menghasilkan hasil yang sama persis. Ini menunjukkan bahwa softmax memiliki satu parameter redundan. Walaupun ini mungkin tampak bodoh, sebenarnya ini adalah properti yang menarik, karena memungkinkan normalisasi parameter , yang mempromosikan stabilitas numerik dari algoritma dan inferensi pembelajaran. Tapi ini hanya komentar tambahan, tidak penting untuk menjawab pertanyaan Anda :)w0w1w=w0w11=w1w0wi
D ...

Terima kasih banyak. Saya mendapatkannya. Dalam komentar pertama Anda probabilitas mungkin harus . Saya sekarang mengerti apa ide di balik transformasi. P(C1|x)1σ(x)
null

Senang Anda memahaminya;) Ya, itu salah ketik, itu jelas harus . Terima kasih telah menunjukkannya! P(C1|x)=1σ(x)
D ...

8

Saya perhatikan orang sering diarahkan ke pertanyaan ini ketika mencari apakah akan menggunakan sigmoid vs softmax di jaringan saraf. Jika Anda salah satu dari orang-orang yang membangun pengklasifikasi jaringan saraf, berikut adalah cara memutuskan apakah akan menerapkan sigmoid atau softmax ke nilai output mentah dari jaringan Anda:

  • Jika Anda memiliki masalah klasifikasi multi-label = ada lebih dari satu "jawaban benar" = output TIDAK saling eksklusif, maka gunakan fungsi sigmoid pada setiap output mentah secara independen. Sigmoid akan memungkinkan Anda untuk memiliki probabilitas tinggi untuk semua kelas Anda, beberapa dari mereka, atau tidak ada satu pun dari mereka. Contoh: mengklasifikasikan penyakit dalam gambar rontgen dada. Gambar mungkin mengandung pneumonia, emfisema, dan / atau kanker, atau tidak ada temuan itu.
  • Jika Anda memiliki masalah klasifikasi multi-kelas = hanya ada satu "jawaban yang benar" = outputnya saling eksklusif, maka gunakan fungsi softmax. Softmax akan menegakkan bahwa jumlah probabilitas kelas output Anda sama dengan satu, jadi untuk meningkatkan probabilitas kelas tertentu, model Anda harus mengurangi kemungkinan setidaknya satu kelas lainnya dari kelas yang sama. Contoh: mengklasifikasikan gambar dari set data tulisan tangan MNIST. Satu gambar digit hanya memiliki satu identitas sejati - gambar tidak boleh berupa angka 7 dan 8 pada saat yang bersamaan.

Referensi: untuk penjelasan lebih rinci tentang kapan menggunakan sigmoid vs softmax dalam desain jaringan saraf, termasuk contoh perhitungan, silakan lihat artikel ini: "Klasifikasi: Sigmoid vs. Softmax."


-1

Menambah semua jawaban sebelumnya - Saya ingin menyebutkan fakta bahwa masalah klasifikasi multi-kelas dapat direduksi menjadi beberapa masalah klasifikasi biner menggunakan metode "satu-vs-semua", yaitu memiliki C sigmoids (ketika C adalah jumlah dari kelas) dan menafsirkan setiap sigmoid menjadi probabilitas berada di kelas tertentu atau tidak, dan mengambil probabilitas maks.

Jadi misalnya, dalam contoh digit MNIST, Anda bisa menggunakan softmax, atau sepuluh sigmoids. Sebenarnya inilah yang dilakukan Andrew Ng dalam kursus Coursera ML-nya. Anda dapat memeriksa di sini bagaimana Andrew Ng digunakan 10 sigmoids untuk klasifikasi multiclass (diadaptasi dari Matlab untuk python oleh saya), dan di sini adalah adaptasi Softmax saya di python.

Juga, perlu dicatat bahwa sementara fungsinya setara (untuk tujuan klasifikasi multikelas) mereka sedikit berbeda dalam implementasinya (terutama yang berkaitan dengan turunannya , dan bagaimana cara mewakili y).

Keuntungan besar menggunakan beberapa klasifikasi biner (yaitu Sigmoids) di atas klasifikasi multikelas tunggal (yaitu Softmax) - adalah bahwa jika softmax Anda terlalu besar (misalnya jika Anda menggunakan satu kata panas yang disematkan dengan ukuran kamus 10K atau lebih ) - bisa jadi tidak efisien untuk melatihnya. Yang bisa Anda lakukan adalah mengambil sebagian kecil dari set latihan Anda dan menggunakannya untuk melatih hanya sebagian kecil dari sigmoids Anda. Ini adalah ide utama di balik Sampling Negatif .


Fungsi tidak setara karena jaringan softmax dibatasi untuk menghasilkan distribusi probabilitas atas kelas sebagai output: vektor adalah non-negatif dan jumlah ke 1. Unit sigmoid non-negatif, tetapi mereka dapat menjumlahkan ke nomor berapa pun antara 0 dan ; ini bukan distribusi probabilitas yang valid. Perbedaan ini sangat penting untuk menandai bagaimana kedua fungsi berbeda. CC
Pasang kembali Monica

Apa definisi Anda tentang yang setara? Milik saya adalah: Anda dapat menggunakan klasifikasi multikelas tanpa masalah. Juga - setiap klasifikasi multikelas yang menggunakan softmax dapat ditransformasikan ke klasifikasi biner satu-vs-semua yang menggunakan sigmoids. Mengapa saya harus peduli dengan distribusi hasil penjumlahan ke 1?
David Refaeli

Argumen Anda tentang klasifikasi multi-label menunjukkan mengapa sigmoid dan softmax tidak setara. Ketika menggunakan softmax, meningkatkan probabilitas satu kelas mengurangi probabilitas total semua kelas lain (karena jumlah-ke-1). Menggunakan sigmoid, meningkatkan probabilitas satu kelas tidak mengubah probabilitas total kelas lain. Pengamatan ini adalah alasan bahwa sigmoid masuk akal untuk klasifikasi multi-label: contoh tunggal dapat menjadi kelasSum-to-1 juga merupakan alasan softmax tidak cocok untuk klasifikasi multi-label. 0,1,2,,C
Pasang kembali Monica

Aku kehilanganmu. Untuk semua tujuan praktis yang saya ketahui, multiple sigmoids = 1 softmax. Saya bahkan menambahkan kasus pengambilan sampel negatif, di mana beberapa sigmoids sebenarnya memiliki keunggulan dibandingkan dengan softmax.
David Refaeli
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.