Çapraz entropi kaybı açıklaması


35

Diyelim ki sınıflandırma için bir NN yapıyorum. Son katman, softmax aktivasyonuna sahip bir Yoğun katmandır. Sınıflandırmam gereken beş farklı sınıfım var. Tek bir eğitim örneğin varsayalım, true labelolduğu [1 0 0 0 0]tahminlerin olmak iken [0.1 0.5 0.1 0.1 0.2]. Bu örnek için çapraz entropi kaybını nasıl hesaplardım?

Yanıtlar:


50

Çapraz entropi formülü iki dağılımları, alır , doğru dağılım ve kesikli değişken üzerinden tanımlanan, tahmin edilen dağılımı, ve verilirp(x)q(x)x

H(p,q)=xp(x)log(q(x))

Bir sinir ağı için, hesaplama aşağıdakilerden bağımsızdır:

  • Ne tür bir katman kullanıldı.

  • Ne tür bir aktivasyon kullanıldı - birçok aktivasyon hesaplamaya uygun olmayacak olmasına rağmen, çıktıları olasılık olarak yorumlanamaz (yani, çıktıları negatif, 1'den büyük veya 1'e eşit değil). Softmax, genellikle çok sınıflı sınıflandırma için kullanılır, çünkü iyi işlenmiş bir olasılık dağılım fonksiyonunu garanti eder.

Bir sinir ağı için, genellikle 'nin temel doğruluk vektörü ve (veya son katman çıktısından doğrudan alınan başka bir değerin) olduğu bir formda yazılmış olan denklemi göreceksiniz. tahmin. Tek bir örnek için, şuna benzer:yyy^

L=ylog(y^)

Burada , vektör nokta ürünüdür.

Örnek temel gerçeğiniz tüm olasılıkları ilk değere verir ve diğer değerler sıfırdır, bu yüzden onları görmezden gelebiliriz ve tahminlerinizden eşleşen terimi kullanabiliriz:yyy^

L=(1×log(0.1)+0×log(0.5)+...)

L=log(0.1)2.303

Yorumlardan önemli bir nokta

Demek ki, kayıp olursa olsun tahmin ise aynı olacaktır ya da ?[0.1,0.5,0.1,0.1,0.2][0.1,0.6,0.1,0.1,0.1]

Evet, bu çok sınıflı logloss'un temel bir özelliğidir, sadece doğru sınıfların olasılıklarını ödüllendirir / cezalandırır. Değer, kalan olasılığın yanlış sınıflar arasında nasıl bölündüğünden bağımsızdır.

Bu denklemi, tüm örneklerde ortalama olarak bir maliyet işlevi olarak göreceksiniz . Açıklamalara her zaman kesinlikle uyulmamaktadır, ancak genellikle bir kayıp fonksiyonu daha düşük seviyedir ve tek bir vakanın veya bileşenin bir hata değerini nasıl belirlediğini açıklarken, bir maliyet fonksiyonu daha yüksek seviyededir ve eksiksiz bir sistemin optimizasyon için nasıl değerlendirildiğini açıklar. boyutunda veri kümesi için çok sınıflı günlük kaybına dayanan bir maliyet işlevi şöyle görünebilir:N

J=1N(i=1Nyilog(y^i))

Birçok uygulama temel gerçek değerlerinin tek bir sıcak kodlanmış olmasını gerektirir (tek bir gerçek sınıfla), çünkü bu bazı ekstra optimizasyonlara izin verir. Bununla birlikte, prensip olarak, çapraz entropi kaybı, bu olmadığı durumlarda hesaplanabilir ve optimize edilebilir.


1
Tamam. Bu, tahminlerin [0.1 0.5 0.1 0.1 0.2] veya [0.1 0.6 0.1 0.1 0.1] olması durumunda farketmez;
Nain,

@Nain: Bu, örneğiniz için doğru. Çapraz entropi kaybı, yanlış sınıf olasılıklarının değerlerinin ne olduğuna bağlı değildir.
Neil Slater,

8

Neil'in cevabı doğrudur. Ancak ise işaret etmek onun önemli düşünmek kaybı yanlış sınıfları (doğru sınıf ve geri kalanı arasında sadece dağıtım) arasında dağılım bağlı değildir, gradyan bu kayıp fonksiyonunun farklı nasıl bağlı etkinleşir yanlış sınıfları yapar yanlışlar. Bu nedenle, makine öğreniminde cross-ent kullandığınızda [0.1 0.5 0.1 0.1 0.2] ve [0.1 0.6 0.1 0.1 0.1] için ağırlıkları farklı şekilde değiştireceksiniz. Bunun nedeni, doğru sınıfın puanının bir olasılık haline dönüşmesi için diğer tüm sınıfların puanları tarafından normalleştirilmesidir.


3
Bunu uygun bir örnekle açıklayabilir misiniz?
Nain

@Lucas Adams, lütfen bir örnek verebilir misiniz?
koryakinp

EACH y_i türevi (softmax çıkışı), EACH logit z (veya w parametresinin kendisi), HER YYi'ye bağlıdır. medium.com/@aerinykim/…
Aaron

2

Zararın gradyanının nasıl davrandığını görelim ... Bizde verilen bir kayıp fonksiyonu olarak çapraz entropiye sahibiz.

H(p,q)=i=1np(xi)log(q(xi))=(p(x1)log(q(x1))++p(xn)log(q(xn))

xi

xiH(p,q)=xip(xi)log(q(xi)).
xiH(p,q)=p(xi)1q(xi)q(xi)xi.

p(xi)

Yazılım paketlerinin tahmini değeri 0 ile nasıl anlaşıldığını merak ediyorum, gerçek değer sıfırdan büyükse ... Bu durumda sıfıra böldüğümüz için.


Sanırım istediğin, wrt x_i değil, wrt parametresinin türevini almak.
Aaron,

1

Bilgi teorisindeki entropiyi anlamakla başlayalım: "aaaaaaaa" harfli bir dizi iletmek istediğinizi varsayalım. Bunu 8 * "a" olarak kolayca yapabilirsiniz. Şimdi başka bir dizge "jteikfqa" alın. Bu dizgiyi iletmenin sıkıştırılmış bir yolu var mı? Orada yok. 2. dizenin entropisinin, onu iletmek için daha fazla "bit" bilgisine ihtiyacımız olduğunu söyleyebiliriz.

log2(n)log2(1/8)

i=1818log2(18)=3

"Cross" -entropy'de, adından da anlaşılacağı gibi, iki farklı olasılık dağılımındaki farkı açıklamak için gereken bit sayısına odaklanıyoruz. En iyi durum senaryosu, her iki dağılımın da aynı olmasıdır, bu durumda en az miktarda bit gereklidir, yani basit entropi. Matematiksel olarak

H(y,y^)=iyiloge(y^i)

y^y

Alt satır: Layman terimlerinde, çapraz entropi, o mesafeyi açıklamak için gereken bilgi miktarı (bit) açısından iki olasılık dağılımı arasındaki mesafe olarak düşünülebilir. Olasılık vektörleri birbirine yaklaşırken aşağıya doğru giden bir kaybı tanımlamanın zarif bir yoludur.


0

Lucas'a katılmıyorum. Yukarıdaki değerler zaten olasılıktır. Orijinal gönderinin, değerlerin softmax aktivasyonu olduğunu gösterdiğini unutmayın.

Hata sadece "sıcak" sınıfa geri gönderilir ve diğer sınıflardaki olasılıklar birbirleri arasında değiştiğinde Q (i) olasılığı değişmez.


2
Lucas haklı. OP tarafından açıklanan mimariyle, daha sonra tüm logitelerde gradyan (çıkışların aksine) sıfır değildir, çünkü softmax fonksiyonu hepsini birbirine bağlar. Bu nedenle, "sıcak" sınıftaki [hatanın derecesi] tüm çıkış nöronlarına yayılır.
Neil Slater

Neil ve Lucas için +1
Aaron,

-1

Sorun, olasılıkların, diğer çıktıları verilen değere dahil eden 'karmaşık' bir fonksiyondan gelmesidir. Sonuçlar birbiriyle bağlantılıdır, bu şekilde gerçek sonuç ile ilgili değil, her bir sonuç için son etkinleştirme işlevinin (softmax) tüm girdileriyle.

piyi

Gombru.github.io/2018/05/23/cross_entropy_loss adresindeki diğer temiz açıklama .

Son aktivasyon katmanı olarak basit bir sigmoid kullanmanın onaylanan cevaba yol açacağını düşünüyorum, ancak softmax kullanmanın farklı cevapları gösterdiğini düşünüyorum.


1
Stack Exchange'e hoş geldiniz. Ancak yazdıklarınız, OP'nin çapraz entropi kaybını hesaplama konusundaki sorusunun cevabı gibi görünmüyor.
user12075
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.