Apakah saya tetap bisa menggunakan fungsi cross entropy loss dengan label lunak?

10

Saya memiliki masalah klasifikasi di mana piksel akan dilabeli dengan label lunak (yang menunjukkan probabilitas) daripada label 0,1 yang sulit. Sebelumnya dengan 0,1 pixel pelabelan keras fungsi kehilangan entropi silang (sigmoidCross entropyLossLayer dari Caffe) memberikan hasil yang layak. Apakah saya tetap menggunakan lapisan sigmoid cross entropy loss (dari Caffe) untuk masalah klasifikasi lunak ini?

saikat
sumber
Saya mencari fungsi lintas entropi yang dapat menangani label bernilai riil. Tolong beri tahu saya jika Anda tahu jawabannya di sini
Amir

Jawaban:

27

Jawabannya adalah ya, tetapi Anda harus mendefinisikannya dengan cara yang benar.

Cross entropy didefinisikan pada distribusi probabilitas, bukan pada nilai tunggal. Untuk distribusi diskrithal dan q, ini:

H(hal,q)=-yhal(y)catatanq(y)

Ketika cross entropy loss digunakan dengan label kelas 'keras', apa yang sebenarnya berarti ini adalah memperlakukan halsebagai distribusi empiris bersyarat atas label kelas. Ini adalah distribusi di mana probabilitasnya adalah 1 untuk label kelas yang diamati dan 0 untuk semua yang lain.qadalah distribusi kondisional (probabilitas label kelas, input yang diberikan) yang dipelajari oleh classifier. Untuk satu titik data yang diamati dengan inputx0 dan kelas y0, kita dapat melihat bahwa ekspresi di atas berkurang menjadi hilangnya log standar (yang akan dirata-rata pada semua titik data):

-ysaya{y=y0}catatanq(yx0)=-catatanq(y0x0)

Sini, saya{}adalah fungsi indikator, yaitu 1 ketika argumennya benar atau 0 sebaliknya (inilah yang dilakukan distribusi empiris). Jumlahnya diambil dari set label kelas yang mungkin.

Dalam kasus label 'lunak' seperti yang Anda sebutkan, label itu bukan lagi identitas kelas itu sendiri, tetapi probabilitas atas dua kelas yang mungkin. Karena itu, Anda tidak dapat menggunakan ekspresi standar untuk kehilangan log. Namun, konsep cross entropy masih berlaku. Bahkan, tampaknya lebih alami dalam hal ini.

Mari kita panggil kelas y, yang bisa 0 atau 1. Dan, katakanlah label lunak s(x) memberikan probabilitas bahwa kelasnya 1 (diberi input yang sesuai x). Jadi, label lunak mendefinisikan distribusi probabilitas:

hal(yx)={s(x)Jika y=11-s(x)Jika y=0

Pengklasifikasi juga memberikan distribusi pada kelas, diberi input:

q(yx)={c(x)Jika y=11-c(x)Jika y=0

Sini, c(x) adalah probabilitas estimasi classifier bahwa kelasnya adalah 1, diberikan input x.

Tugasnya sekarang adalah untuk menentukan seberapa berbedanya kedua distribusi ini, menggunakan cross entropy. Masukkan ungkapan-ungkapan ini untukhal dan qke dalam definisi entropi silang, di atas. Jumlahnya diambil dari sekumpulan kelas yang memungkinkan{0,1}:

H(hal,q)=-hal(y=0x)catatanq(y=0x)-hal(y=1x)catatanq(y=1x)=-(1-s(x))catatan(1-c(x))-s(x)catatanc(x)

Itulah ungkapan untuk titik data tunggal yang diamati. Fungsi kerugian akan menjadi rata-rata di semua titik data. Tentu saja, ini dapat digeneralisasikan ke klasifikasi multikelas juga.

pengguna20160
sumber
3
Saya terus kembali ke kejernihan jawaban ini.
auro