The lintas entropi rumus mengambil dalam dua distribusi, p(x) , distribusi yang benar, dan q(x) , perkiraan distribusi, didefinisikan melalui variabel diskrit x dan diberikan oleh
H(p,q)=−∑∀xp(x)log(q(x))
Untuk jaringan saraf, perhitungannya tidak tergantung pada hal berikut:
Jenis lapisan apa yang digunakan.
Jenis aktivasi apa yang digunakan - walaupun banyak aktivasi tidak akan kompatibel dengan perhitungan karena outputnya tidak dapat diartikan sebagai probabilitas (yaitu, outputnya negatif, lebih besar dari 1, atau tidak dijumlahkan ke 1). Softmax sering digunakan untuk klasifikasi multi-kelas karena menjamin fungsi distribusi probabilitas yang berperilaku baik.
Untuk jaringan saraf, Anda biasanya akan melihat persamaan ditulis dalam bentuk di mana y adalah vektor tanah kebenaran dan y^ beberapa nilai lain yang diambil langsung dari output lapisan terakhir) adalah perkiraan. Untuk satu contoh, akan terlihat seperti ini:
L=−y⋅log(y^)
di mana ⋅ adalah produk titik vektor.
Misalnya Anda ground truth y memberikan semua probabilitas untuk nilai pertama, dan nilai-nilai lain adalah nol, sehingga kita dapat mengabaikan mereka, dan hanya menggunakan istilah yang cocok dari perkiraan Anda yy^
L=−(1×log(0.1)+0×log(0.5)+...)
L=−log(0.1)≈2.303
Poin penting dari komentar
Itu berarti, kerugian akan sama tidak peduli jika prediksi yang [0.1,0.5,0.1,0.1,0.2] atau [0.1,0.6,0.1,0.1,0.1] ?
Ya, ini adalah fitur utama dari multiclass logloss, ini memberi hadiah / menghukum probabilitas kelas yang benar saja. Nilai tidak tergantung pada bagaimana probabilitas yang tersisa dibagi antara kelas yang salah.
Anda akan sering melihat persamaan ini dirata-rata untuk semua contoh sebagai fungsi biaya . Ini tidak selalu benar-benar dipatuhi dalam deskripsi, tetapi biasanya fungsi kerugian adalah level yang lebih rendah dan menggambarkan bagaimana satu instance atau komponen menentukan nilai kesalahan, sementara fungsi biaya adalah level yang lebih tinggi dan menggambarkan bagaimana sistem lengkap dievaluasi untuk optimasi. Fungsi biaya berdasarkan hilangnya multikelas log untuk kumpulan data ukuran N mungkin terlihat seperti ini:
J=−1N(∑i=1Nyi⋅log(y^i))
Banyak implementasi yang membutuhkan nilai kebenaran dasar Anda untuk dikodekan satu kali (dengan satu kelas benar), karena itu memungkinkan beberapa optimasi tambahan. Namun, pada prinsipnya kerugian lintas entropi dapat dihitung - dan dioptimalkan - saat ini tidak terjadi.
Jawaban dari Neil benar. Namun saya pikir ini penting untuk menunjukkan bahwa sementara kerugian tidak tergantung pada distribusi antara kelas yang salah (hanya distribusi antara kelas yang benar dan yang lainnya), gradien fungsi kerugian ini memang mempengaruhi kelas yang salah secara berbeda tergantung pada bagaimana salah mereka. Jadi ketika Anda menggunakan cross-ent dalam pembelajaran mesin, Anda akan mengubah bobot secara berbeda untuk [0,1 0,5 0,1 0,2] dan [0,1 0,6 0,1 0,1]. Ini karena skor kelas yang benar dinormalisasi oleh skor semua kelas lain untuk mengubahnya menjadi probabilitas.
sumber
Mari kita lihat bagaimana gradien loss berperilaku ... Kita memiliki cross-entropy sebagai fungsi loss, yang diberikan oleh
Saya bertanya-tanya bagaimana paket perangkat lunak menangani nilai prediksi 0, sedangkan nilai sebenarnya lebih besar dari nol ... Karena kita membaginya dengan nol dalam hal ini.
sumber
Mari kita mulai dengan memahami entropi dalam teori informasi: Misalkan Anda ingin mengomunikasikan serangkaian huruf "aaaaaaaa". Anda dapat dengan mudah melakukan itu sebagai 8 * "a". Sekarang ambil string lain "jteikfqa". Apakah ada cara terkompresi untuk mengkomunikasikan string ini? Tidak ada disana. Kita dapat mengatakan bahwa entropi string ke-2 lebih sebagai, untuk mengkomunikasikannya, kita memerlukan lebih banyak "bit" informasi.
Dalam "cross" -entropy, seperti namanya, kami fokus pada jumlah bit yang diperlukan untuk menjelaskan perbedaan dalam dua distribusi probabilitas yang berbeda. Skenario kasus terbaik adalah bahwa kedua distribusi identik, dalam hal ini jumlah bit paling sedikit diperlukan yaitu entropi sederhana. Dalam istilah matematika,
Dimanay^ adalah vektor probabilitas yang diprediksi (output Softmax), dan y adalah vektor ground-truth (mis. satu-panas). Alasan kami menggunakan log natural adalah karena mudah untuk membedakan (ref. Gradien penghitungan) dan alasan kami tidak mengambil log dari ground ground vector adalah karena mengandung banyak 0 yang menyederhanakan penjumlahan.
Intinya: Dalam istilah awam, orang bisa menganggap cross-entropy sebagai jarak antara dua distribusi probabilitas dalam hal jumlah informasi (bit) yang diperlukan untuk menjelaskan jarak itu. Ini adalah cara yang rapi untuk mendefinisikan kerugian yang turun ketika vektor probabilitas semakin dekat satu sama lain.
sumber
Saya tidak setuju dengan Lucas. Nilai-nilai di atas sudah merupakan probabilitas. Perhatikan bahwa posting asli menunjukkan bahwa nilai memiliki aktivasi softmax.
Kesalahan hanya disebarkan kembali pada kelas "panas" dan probabilitas Q (i) tidak berubah jika probabilitas dalam kelas lain bergeser satu sama lain.
sumber
Masalahnya adalah bahwa probabilitas datang dari fungsi 'rumit' yang menggabungkan output lain ke dalam nilai yang diberikan. Hasil-hasilnya saling terhubung, jadi dengan cara ini kami tidak memperoleh tentang hasil aktual, tetapi dengan semua input dari fungsi aktivasi terakhir (softmax), untuk setiap hasil.
Saya telah menemukan deskripsi yang sangat bagus di deepnotes.io/softmax-crossentropy di mana penulis menunjukkan bahwa turunan sebenarnya adalahhalsaya- ysaya .
Deskripsi rapi lainnya di gombru.github.io/2018/05/23/cross_entropy_loss .
Saya pikir menggunakan sigmoid sederhana sebagai lapisan aktivasi terakhir akan mengarah ke jawaban yang disetujui, tetapi menggunakan softmax menunjukkan jawaban yang berbeda.
sumber