Apa itu entropi silang?

96

Saya tahu ada banyak penjelasan tentang apa itu cross-entropy, tapi saya masih bingung.

Apakah ini hanya metode untuk menggambarkan fungsi kerugian? Bisakah kita menggunakan algoritma penurunan gradien untuk mencari nilai minimum menggunakan fungsi kerugian?

teateist
sumber
11
Tidak cocok untuk SO. Berikut pertanyaan serupa di situs saudara ilmu data
Metropolis

Jawaban:

235

Entropi silang biasanya digunakan untuk mengukur perbedaan antara dua distribusi probabilitas. Biasanya distribusi "benar" (yang coba dicocokkan oleh algoritme pembelajaran mesin Anda) dinyatakan dalam istilah distribusi one-hot.

Misalnya, untuk contoh pelatihan tertentu, label sebenarnya adalah B (dari kemungkinan label A, B, dan C). Distribusi one-hot untuk contoh pelatihan ini adalah:

Pr(Class A)  Pr(Class B)  Pr(Class C)
        0.0          1.0          0.0

Anda dapat menafsirkan distribusi benar di atas sebagai berarti bahwa instance pelatihan memiliki probabilitas 0% untuk menjadi kelas A, 100% kemungkinan menjadi kelas B, dan 0% kemungkinan menjadi kelas C.

Sekarang, misalkan algoritme pembelajaran mesin Anda memprediksi distribusi probabilitas berikut:

Pr(Class A)  Pr(Class B)  Pr(Class C)
      0.228        0.619        0.153

Seberapa dekat distribusi prediksi dengan distribusi sebenarnya? Itulah yang ditentukan oleh kerugian cross-entropy. Gunakan rumus ini:

Rumus kerugian entropi silang

Di mana p(x)distribusi probabilitas sebenarnya, dan q(x)distribusi probabilitas yang diprediksi. Jumlahnya melebihi tiga kelas A, B, dan C. Dalam hal ini kerugiannya adalah 0,479 :

H = - (0.0*ln(0.228) + 1.0*ln(0.619) + 0.0*ln(0.153)) = 0.479

Jadi, seberapa "salah" atau "jauh" prediksi Anda dari distribusi sebenarnya.

Entropi silang adalah salah satu dari banyak kemungkinan fungsi kerugian (yang populer lainnya adalah kerugian engsel SVM). Fungsi kerugian ini biasanya ditulis sebagai J (theta) dan dapat digunakan dalam penurunan gradien, yang merupakan algoritme berulang untuk memindahkan parameter (atau koefisien) ke nilai optimal. Pada persamaan di bawah ini, Anda akan mengganti J(theta)dengan H(p, q). Tetapi perhatikan bahwa Anda perlu menghitung turunan dari H(p, q)sehubungan dengan parameter terlebih dahulu.

penurunan gradien

Jadi untuk menjawab pertanyaan asli Anda secara langsung:

Apakah ini hanya metode untuk menggambarkan fungsi kerugian?

Benar, cross-entropy menjelaskan kerugian antara dua distribusi probabilitas. Ini adalah salah satu dari banyak kemungkinan fungsi kerugian.

Kemudian kita dapat menggunakan, misalnya, algoritma penurunan gradien untuk mencari nilai minimum.

Ya, fungsi kerugian cross-entropy dapat digunakan sebagai bagian dari penurunan gradien.

Bacaan lebih lanjut: salah satu jawaban saya yang lain terkait dengan TensorFlow.

stackoverflowuser2010
sumber
jadi, cross-entropy menggambarkan kerugian dengan jumlah probabilitas untuk setiap contoh X.
teateist
Jadi, dapatkah kita alih-alih menggambarkan kesalahan sebagai cross-entropy, menggambarkan kesalahan sebagai sudut antara dua vektor (kesamaan kosinus / jarak sudut) dan mencoba meminimalkan sudut?
teateis
1
tampaknya ini bukan solusi terbaik, tapi saya hanya ingin tahu, secara teori, jika kita bisa menggunakan cosine (dis)similarityuntuk menggambarkan kesalahan melalui sudut dan kemudian mencoba meminimalkan sudut tersebut.
teateis
2
@ Stephen: Jika Anda melihat contoh yang saya berikan, p(x)akan menjadi daftar probabilitas kebenaran dasar untuk setiap kelas, yang akan menjadi [0.0, 1.0, 0.0. Demikian juga, q(x)adalah daftar probabilitas yang diprediksi untuk masing-masing kelas [0.228, 0.619, 0.153],. H(p, q)kemudian - (0 * log(2.28) + 1.0 * log(0.619) + 0 * log(0.153)), menjadi 0,479. Perhatikan bahwa itu umum untuk menggunakan np.log()fungsi Python , yang sebenarnya adalah log natural; tidak masalah.
stackoverflowuser2010
1
@HAr: Untuk pengkodean one-hot label yang benar, hanya ada satu kelas bukan-nol yang kami pedulikan. Namun, cross-entropy dapat membandingkan dua distribusi probabilitas; tidak perlu salah satunya memiliki probabilitas one-hot.
stackoverflowuser2010
3

Singkatnya, cross-entropy (CE) adalah ukuran seberapa jauh nilai prediksi Anda dari label sebenarnya.

Persilangan di sini mengacu pada penghitungan entropi antara dua atau lebih fitur / label sebenarnya (seperti 0, 1).

Dan istilah entropi itu sendiri mengacu pada keacakan, begitu besar nilainya berarti prediksi Anda jauh dari label sebenarnya.

Jadi bobot diubah untuk mengurangi CE dan akhirnya menyebabkan berkurangnya perbedaan antara prediksi dan label sebenarnya dan dengan demikian akurasi lebih baik.

Harsh Malra
sumber
1

Menambahkan ke posting di atas, bentuk paling sederhana dari kehilangan lintas-entropi dikenal sebagai biner-lintas-entropi (digunakan sebagai fungsi kerugian untuk klasifikasi biner, misalnya, dengan regresi logistik), sedangkan versi umum adalah kategorikal-lintas-entropi (digunakan sebagai fungsi kerugian untuk masalah klasifikasi kelas jamak, misalnya, dengan jaringan saraf).

Idenya tetap sama:

  1. ketika probabilitas kelas model-computed (softmax) menjadi mendekati 1 untuk label target untuk contoh pelatihan (diwakili dengan one-hot-encoding, misalnya,), kerugian CCE yang sesuai berkurang menjadi nol

  2. jika tidak, itu meningkat karena probabilitas yang diprediksi sesuai dengan kelas target menjadi lebih kecil.

Gambar berikut menunjukkan konsepnya (perhatikan dari gambar bahwa BCE menjadi rendah ketika y dan p keduanya tinggi atau keduanya rendah secara bersamaan, yaitu ada kesepakatan):

masukkan deskripsi gambar di sini

Cross-entropy berkaitan erat dengan relative entropy atau KL-divergence yang menghitung jarak antara dua distribusi probabilitas. Misalnya, di antara dua pmf diskrit, hubungan di antara keduanya ditunjukkan pada gambar berikut:

masukkan deskripsi gambar di sini

Sandipan Dey
sumber