Saya telah bertanya pada diri sendiri pertanyaan ini selama berbulan-bulan. Jawaban pada CrossValidated dan Quora semuanya daftar sifat yang bagus dari fungsi sigmoid logistik, tetapi semuanya sepertinya kita dengan cerdik menebak fungsi ini. Apa yang saya lewatkan adalah pembenaran untuk memilihnya. Saya akhirnya menemukan satu di bagian 6.2.2.2 dari buku "Deep Learning" karya Bengio (2016) . Dengan kata-kata saya sendiri:
Singkatnya, kami ingin logaritma output model sesuai untuk optimasi berbasis gradien dari log-kemungkinan data pelatihan.
Motivasi
- Kami menginginkan model linier, tetapi kami tidak dapat menggunakan z= wTx + b secara langsung sebagai z∈ ( - ∞ , + ∞ ) .
- Untuk klasifikasi, masuk akal untuk mengasumsikan distribusi Bernoulli dan memodelkan parameternya θ dalam P( Y=1)=θ .
- Jadi, kita perlu memetakan z dari (−∞,+∞) ke [0,1] untuk melakukan klasifikasi.
Mengapa fungsi sigmoid logistik?
Memotong z dengan P(Y=1|z) =max{0,min{1,z}} menghasilkan gradien nol untuk z luar [0,1] . Kita memerlukan gradien yang kuat setiap kali prediksi model salah, karena kita menyelesaikan regresi logistik dengan gradient descent. Untuk regresi logistik, tidak ada solusi bentuk tertutup.
Fungsi logistik memiliki properti bagus asymptot gradien konstan ketika prediksi model salah, mengingat bahwa kami menggunakan Estimasi Kemungkinan Maksimum agar sesuai dengan model. Ini ditunjukkan di bawah ini:
Untuk manfaat numerik, Estimasi Kemungkinan Maksimum dapat dilakukan dengan meminimalkan log-kemungkinan negatif dari data pelatihan. Jadi, fungsi biaya kami adalah:
J(w,b)=1m∑i=1m−logP(Y=yi|xi;w,b)=1m∑i=1m-(yilogP(Y=1|z)+(yi−1)logP(Y= 0|z) )
Karena P( Y= 0 | z) = 1 - P( Y= 1 | z) , kita dapat fokus pada kasus Y= 1 . Jadi, pertanyaannya adalah bagaimana memodelkan P( Y= 1 | z) mengingat kita memiliki z= wTx + b .
Persyaratan yang jelas untuk fungsi f pemetaan z ke P( Y= 1 | z) adalah:
- ∀ z∈ R : f( z) ∈ [ 0 , 1 ]
- f( 0 ) = 0,5
- f harus wrt simetris rotasi( 0 , 0,5 ) , yaituf( - x ) = 1 - f( x ) , sehingga membalik tanda-tanda kelas tidak berpengaruh pada fungsi biaya.
- f harus non-menurun, terus menerus dan dapat dibedakan.
f( z) = 11 + e- zf( z) = 0,5 + 0,5 z1 + | z|f( z) = 11 + e- z
Y= 1
P( Y= 1 | z) = 11 + e- zY= 1m = 1
J( z)= - log( P( Y= 1 | z) )= - log( 11 + e- z)= - log( ez1 + ez)= - z+ log( 1 + ez)
Kita dapat melihat bahwa ada komponen linier - z . Sekarang, kita dapat melihat dua kasus:
- zY= 1log( 1 + ez)zz- z
- z| z|Y= 1log( 1 + ez)0z- zz- 1z, tidak ada saturasi yang terjadi, yang akan menyebabkan gradien hilang.
Y= 0
Y= 1Y= 0
J( z)Y= 1
Y= 0
Alternatif
z1 + | z|[ 0 , 1 ]P( Y= 1 | z) = 0,5 + 0,5 z1 + | z|
Y= 1
J( z) = - log( 0,5 + 0,5 z1 + | z|)
yang terlihat seperti ini:
z→ - ∞