Softmax / Çapraz Entropi ile geri yayılım


40

Geri yayılımın softmax / çapraz entropi çıkış katmanı için nasıl çalıştığını anlamaya çalışıyorum.

Çapraz entropi hata fonksiyonu:

E(t,o)=jtjlogoj

sırasıyla nöron j'de hedef ve çıktı olarak t ve ile . Toplam, çıktı katmanındaki her nöronun üzerindedir. o j , softmax işlevinin bir sonucudur:ojoj

oj=softmax(zj)=ezjjezj

Yine, toplam, çıktı katmanındaki her bir nöronun üzerindedir ve zj , nöron girdidir j:

zj=iwijoi+b

Bu, onların karşılık gelen çıkış bir önceki tabakanın tüm nöronlar üzerinde toplamı oi ve ağırlık wij nöron doğru j artı bir çapraz b .

Şimdi, bir ağırlık güncelleştirmek için wij , bir nöron bağlayan j bir nöronun çıkış tabakasında i önceki tabakadaki, Zincir kuralı kullanarak hata fonksiyonu kısmi türevi hesaplamak gerekir:

Ewij=Eojojzjzjwij

nöron j'ye giriş olarak ile .zjj

Son terim oldukça basittir. i ve arasında yalnızca bir ağırlık jolduğundan, türev:

zjwij=oi

İlk terim, hata fonksiyonunun çıktısına göre türetilmesidir oj:

Eoj=tjoj

Orta terimi, giriş ile ilgili SoftMax fonksiyonun türetme zj zor:

ojzj=zjezjjezj

Diyelim ki sınıflarına karşılık gelen üç çıkış nöronumuz var o zaman o b = s o f t m a x ( b ) :a,b,cob=softmax(b)

ob=ezbez=ezbeza+ezb+ezc

ve bölüm kuralı kullanarak türetilmesi:

=sOfTmbirX(b)-sOfTmbirx2(b)=O, b-o 2 b =O, b(1-O, b) Geri orta vadede Bu araçlar geri yayılım için oj

obzb=ezbez(ezb)2(jez)2=ezbez(ezb)2(ez)2
=softmax(b)softmax2(b)=obob2=ob(1ob)
ojzj=oj(1oj)

Hepsini bir araya koyarak anladım

Ewij=tjojoj(1oj)oi=tj(1oj)oi

bu, eğer bu sınıfın hedefi , bunun için ağırlıkları güncellemeyeceğim anlamına gelir . Bu doğru gelmiyor.tj=0

Bunu araştırırken, burada veya burada olduğu gibi , softmax türevi için biri, diğeri i j için iki değişkene sahip olduklarını gördüm .i=jij

Ama bundan bir anlam çıkaramıyorum. Ayrıca benim hatamın nedeni olup olmadığından bile emin değilim, bu yüzden tüm hesaplamalarımı gönderiyorum. Umarım birileri nerede bir şeyleri özlediğimi veya yanlış olduğumu netleştirebilir.


Verdiğiniz bağlantılar, ağırlıklara göre türevi hesaplarken girişe göre türevi hesaplıyor.
Jenkar

Yanıtlar:


35

Not: Backprop konusunda uzman değilim, ancak şimdi biraz okumaya başladığımda, aşağıdaki uyarının uygun olduğunu düşünüyorum. Sinir ağları üzerine kağıt ya da kitap okurken , türevlerin standart toplama / indeks notasyonu , matris notasyonu ve çok endeks notasyonunun bir karışımı kullanılarak yazılması nadir değildir (tensör-tensör türevleri için son ikisinin bir hibridini içerir) ). Genellikle amaç, bunun "bağlamdan anlaşılması" olması gerektiğidir, bu yüzden dikkatli olmalısınız!

Sizin türevinizde birkaç tutarsızlık olduğunu fark ettim. Gerçekten sinir ağları yapmıyorum, bu nedenle aşağıdaki yanlış olabilir. Ancak, işte sorun hakkında nasıl gideceğim.

Öncelikle, toplamı hesaba katmanız gerekir ve her bir terimin yalnızca bir ağırlığa bağlı olduğunu varsayamazsınız. Böylece gradyeni alarak E bileşeni ile ilgili olarak k ve z , var e = - Σ j t j log o jEEkz

E=jtjlogojEzk=jtjlogojzk

Ardından, o j = 1 olarak ifade etmekoj biz var log o j

oj=1Ωezj,Ω=iezilogoj=zjlogΩ
buradaδjk,Kronecker deltasıdır. O zaman softmax paydasının gradyanı Ω
logojzk=δjk1ΩΩzk
δjk verir logoj
Ωzk=ieziδik=ezk
ya da günlük genişleyen oj
logojzk=δjkok
türevi ile ilgili olan Not buzk, birrasgelebileşenizverir,δjkterimi (=1, yalnızcak=j).
ojzk=oj(δjkok)
zkzδjk=1k=j

Gradyanı yüzden ile ilgili olarak z daha sonra DEz

Ezk=jtj(okδjk)=ok(jtj)tkEzk=okτtk
τ=jtjt

tkoktτ=1

ozo

y

zk=iwikyi+bkzkwpq=iyiwikwpq=iyiδipδkq=δkqyp

Ew

Ewpq=kEzkzkwpq=k(okτtk)δkqyp=yp(oqτtq)
tτ=1
Ewij=yi(ojtj)
y

oizyzo

Umarım bu yardımcı olur. Bu sonuç daha tutarlı görünüyor mu?

Ewpq=iEoioiwpq
oiwpq=koizkzkwpq
Ewpq=i[Eoi(koizkzkwpq)]
δab

"Backprop / AutoDiff" topluluğunun bu sorunları nasıl yaptığından emin değilim, ancak ne zaman kısayollar almaya çalıştığımı bulurum, hata yapabilirim. Bu yüzden burada yaptığım gibi işlerim, her şeyi tam abonelikle özetlemek için yazmak ve her türev için daima yeni abonelikler sunmak. ( Buradaki
cevabımdaki gibi

Şahsen, herşeyi yazdığınızı takip etmeyi çok daha kolaylaştırır buluyorum. Sonuçlar bana doğru görünüyor.
Jenkar

Her bir adımınızı hala tam olarak anlamaya çalışmama rağmen, genel resimle ilgili bana yardımcı olacak bazı değerli görüşler edindim. Sanırım türev ve toplamlar konusunu daha fazla okumam gerekiyor. Fakat E'deki toplamı hesaba katmanızı tavsiye ederek, şunu gördüm:
micha

oj1=ezj1Ωoj1=ezj1Ω
Ω=ezj1+ezj2
E=(t1logoj1+t2logoj2)=(t1(zj1log(Ω))+t2(zj2log(Ω)))
E(zj1=(t1t1ezj1Ωt2ezj2Ω)=t1+oj1(t1+t2)

Fakat başka bir sorum daha var: yerine
Ewij=Eojojzjzjwij
Ewij=Ezjzjwij
oj

12

@ GeoMatt22'nin cevabı doğruysa da, sorunu şahsen bir oyuncak örneğine indirmeyi ve resim çizmeyi kişisel olarak çok yararlı buldum:

Grafik model

hwt

L=t1logo1t2logo2
o1=exp(y1)exp(y1)+exp(y2)
o2=exp(y2)exp(y1)+exp(y2)
y1=w11h1+w21h2+w31h3
y2=w12h1+w22h2+w32h3

w21w

Vurgulanan geriye doğru yolu olan grafiksel model.

y1w21

Lo1=t1o1
Lo2=t2o2
o1y1=exp(y1)exp(y1)+exp(y2)(exp(y1)exp(y1)+exp(y2))2=o1(1o1)
o2y1=exp(y2)exp(y1)(exp(y1)+exp(y2))2=o2o1
y1w21=h2

Lw21=Lo1o1y1y1w21+Lo2o2y1y1w21=t1o1[o1(1o1)]h2+t2o2(o2o1)h2=h2(t2o1t1+t1o1)=h2(o1(t1+t2)t1)=h2(o1t1)

t1+t2=1t


Bu benim için nihayet temizledi! Mükemmel ve Zarif bir açıklama !!!!
SantoshGupta7

2
Yazımı okumaktan hem zevk aldığınız hem de faydalandığınız için memnunum! Ayrıca yazmam ve açıklamamda yardımcı oldu.
Vivek Subramanian

=t1o1[o1(1o1)]h2+t2o2(o2o1)h2
yerine ?
koryakinp

Haklısın - bir yazım hatası oldu! Değişikliği yapacağım.
Vivek Subramanian

Burada anlamadığım şey, bazı nöronlara da logit (ölçeksiz puanlar) atamanız. (o softmaxed logit (tahminler) ve y sizin durumunuzdaki logit'lerdir). Ancak normalde durum böyle değil, değil mi? Bak bu resimde yani nasıl sen y1 göre o2 kısmi türev bulabilirsiniz nasıl bu durumda mümkündür (o_out1 tahmin ve o_in1 logits olduğunu)?
ARAT

6

{oi},{yi}{pi}{oi}

Yy

Y=Diag(y)
EW
z=Wp+bdz=dWpy=softmax(z)dy=(YyyT)dzE=t:log(y)dE=t:Y1dydE=t:Y1(YyyT)dz=t:(I1yT)dz=t:(I1yT)dWp=(y1TI)tpT:dW=((1Tt)ypTtpT):dWEW=(1Tt)ypTtpT

6

İşte biridir en temiz ve iyi yazılmış notlar Ben yaklaşık açıklıyor web'de geldi "çapraz entropi kaybı fonksiyonu ile geri yayılım algoritmasında türevlerinin hesaplanması" .


Verilen pdf'de denklem 22 nasıl denklem 23 oldu? Toplamada (k! = İ) negatif işaret nasıl oluştu gibi. Olumlu bir işaret almalı mı? Gibi Summation(Fn)(For All K) = Fn(k=i) + Summation(Fn)(k!=i)benim anlayışıma göre oluyor edilmelidir.
faizan

1

İşte softmax ve türevini açıklayan bir link .

İ = j ve i! = J kullanımının nedenini açıklar.


Bağlantının gelecekte kopması durumunda asgari ve bağımsız bir cevap verilmesi önerilir. Aksi takdirde, bu gelecekte diğer kullanıcılara yardımcı olmayabilir.
luchonacho

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.