Mengapa menggunakan softmax sebagai lawan dari normalisasi standar?

160

Pada lapisan output dari jaringan saraf, biasanya menggunakan fungsi softmax untuk memperkirakan distribusi probabilitas:

masukkan deskripsi gambar di sini

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?

Tom
sumber
8
Fungsi ini tidak mahal untuk dihitung karena eksponen, tetapi karena Anda harus menghitung setiap qj. Eksponasinya murah dibandingkan dengan jumlah total perhitungan yang dibutuhkan.
Seppo Enarvi
Transformasi Z macam apa yang Anda bicarakan? Makna pemrosesan sinyal dari istilah ini tidak cocok di sini, dan mengganti nilainya dengan z-score menghasilkan output negatif jika input di bawah rata-rata.
David Cian
Lihat juga: Stats.SE
Martin Thoma

Jawaban:

166

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

>>> softmax([1,2])              # blurry image of a ferret
[0.26894142,      0.73105858])  #     it is a cat perhaps !?
>>> softmax([10,20])            # crisp image of a cat
[0.0000453978687, 0.999954602]) #     it is definitely a CAT !

Dan kemudian membandingkannya dengan normalisasi standar

>>> std_norm([1,2])                      # blurry image of a ferret
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
>>> std_norm([10,20])                    # crisp image of a cat
[0.3333333333333333, 0.6666666666666666] #     it is a cat perhaps !?
Piotr Czapla
sumber
16
Jawaban ini paling menggambarkan dampak penggunaan eksponensial daripada berfokus pada dasar-dasar teoretis. (yang bagus). Itu harus dimasukkan pada awal jawaban atas. Setelah melihat bagaimana, dan sampai sejauh mana, eksponensial menyebarkan nilai-nilai, jawaban teratas membantu menjelaskan mengapa Anda menginginkannya.
Ian Danforth
@ DanDanforth saya setuju dengan Anda. harus di awal.
Hitesh
11
Tidak yakin mengapa jawaban ini yang paling banyak dipilih. Mengapa [1,2] sesuai dengan gambar buram sementara [10,20] sesuai dengan gambar yang lebih tajam? Ini hanyalah masalah penskalaan dan kedua kasus pada dasarnya sama. Jika ada, ini seharusnya mendukung normalisasi standar, yang dengan benar mempertimbangkan dua kasus yang setara.
user118967
Ketika nilai sudah dijamin dalam [0, 1], apakah masih ada keuntungan dari mengambil softmax daripada hanya membaginya dengan penjumlahan?
Martin Thoma
59

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:

  1. Jika modelnya benar, maka maks (z) akan menjadi z_i. Dengan demikian, kemungkinan log asimtot nol (yaitu kemungkinan 1) dengan perbedaan yang berkembang antara z_i dan entri lainnya di z.
  2. Jika modelnya salah, maka maks (z) akan menjadi beberapa z_j> z_i lainnya. Jadi, penambahan z_i tidak sepenuhnya membatalkan -z_j dan log-likelihood kira-kira (z_i - z_j). Ini dengan jelas memberi tahu model apa yang harus dilakukan untuk meningkatkan kemungkinan log: meningkatkan z_i dan mengurangi z_j.

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.

Kilian Batzner
sumber
Hai, bisakah Anda menjelaskan pernyataan ini dan bagaimana Anda bisa memperkirakan? ", yang untuk perbedaan besar dalam z kira-kira mendekati"
London guy
45

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 ):

  1. Teori Informasi - dari perspektif teori informasi, fungsi softmax dapat dilihat sebagai upaya untuk meminimalkan cross-entropy antara prediksi dan kebenaran.

  2. 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.

Brett
sumber
2
Untuk menambah komentar sebelumnya, turunan dari fungsi softmax hanya softmax (1-softmax)
Rouzbeh
11
Saya mendapatkan alasan untuk menggunakan Cross-Entropy Loss, tetapi bagaimana hubungannya dengan softmax? Anda mengatakan "fungsi softmax dapat dilihat sebagai upaya untuk meminimalkan cross-entropy 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?
Kilian Batzner
18
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?
Kilian Batzner
5
@KilianBatzner Jika output neuron adalah probabilitas log, maka penjumlahan output banyak neuron adalah kelipatan probabilitas mereka. Itu lebih bermanfaat daripada jumlah probabilitas.
alltom
1
@KilianBatzner Jika fitur Anda berasal dari berbagai klausa Gaussian (pada klaster per kelas) maka Anda dapat memperoleh penggolong sempurna (regresi logistik). Ada beberapa kondisi tambahan, tetapi pada dasarnya Anda dapat membenarkan / mendapatkan softmax dan log dengan asumsi bahwa Anda ingin memisahkan cluster Gauss.
maksimal
16

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.

Victor May
sumber
12
q_i tidak secara implisit mewakili kemungkinan log. hanya ketika kita menggunakan softmax kita secara eksplisit menganggapnya.
Tom
6

Kami sedang melihat masalah klasifikasi multi-kelas. Artinya, variabel yang diprediksi ydapat mengambil salah satu kkategori, di mana k > 2. Dalam teori probabilitas, ini biasanya dimodelkan oleh distribusi multinomial. Distribusi multinomial adalah anggota distribusi keluarga eksponensial. Kita dapat merekonstruksi probabilitas P(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.

masukkan deskripsi gambar miliknya

GabrielChu
sumber
Bagaimana cara kerjanya sebagai fungsi aktivasi, karena mengembalikan nilai yang sama untuk 'x' dan 'x + c'?
Suresh Pokharel
1
Sebenarnya, softmaxbukan fungsi aktivasi. Fungsi aktivasi adalah operasi elemen-bijaksana - memberikan elemen tensor-bijaksana melakukan operasi non-linear untuk menghasilkan tensor lain. Tetapi softmaxadalah operasi vektor, itu menghasilkan Anda vektor dinormalisasi, ada dependensi batin antara setiap elemen.
GabrielChu
5

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.

Torayeff
sumber
3
Biasanya Anda akan mengurangi minimum kemudian membaginya dengan max / sum. Dalam kasus Anda yang akan membuat [0, 1, 3, 4]kemudian membelah.
ubershmekel
1
@ubershmekel Ini menimbulkan masalah bahwa kelas dengan skor terkecil akan selalu diberi probabilitas 0.
Alessandro Power
4

Misalkan kita mengubah fungsi softmax sehingga aktivasi keluaran diberikan oleh masukkan deskripsi gambar di sini

di mana ckonstanta positif. Catatan yang c=1sesuai dengan fungsi softmax standar. Tetapi jika kita menggunakan nilai yang berbeda ckita 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 membiarkan cmenjadi besar, yaitu c→∞,. Berapa nilai pembatas untuk aktivasi output a^L_j? Setelah menyelesaikan masalah ini, harus jelas bagi Anda mengapa kami menganggap c=1fungsi tersebut sebagai versi "lunak" dari fungsi maksimum. Ini adalah asal dari istilah "softmax". Anda dapat mengikuti detail dari sumber ini (persamaan 83).

Oh Tuhan
sumber
Bagi saya, gagasan versi "lunak" dari fungsi maksimum adalah cara sederhana terbaik untuk membenarkan penggunaan softmax.
tashuhka
3

Menambah jawaban Piotr Czapla, semakin besar nilai input, semakin besar probabilitas untuk input maksimum, untuk proporsi yang sama dan dibandingkan dengan input lainnya:

masukkan deskripsi gambar di sini

negas
sumber
2

Pilihan fungsi softmax tampaknya arbitrer karena ada banyak fungsi normalisasi lainnya. Dengan demikian tidak jelas mengapa kerugian log-softmax akan berkinerja lebih baik daripada alternatif kerugian lainnya.

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 expdan disebut softmax bola dan menemukan bahwa kadang-kadang mereka mungkin melakukan lebih baik dari biasanya softmax.

Roman Kh
sumber