Softmax / Cross Entropy를 이용한 역 전파


40

역 전파가 softmax / cross-entropy 출력 레이어에서 어떻게 작동하는지 이해하려고합니다.

교차 엔트로피 오류 함수는

E(t,o)=jtjlogoj

출력 뉴런의 목표 출력으로서 J 각각. 합계는 출력 레이어의 각 뉴런 위에 있습니다. o를 J 자체 softmax를 함수의 결과이다 :tojoj

oj=softmax(zj)=ezjjezj

다시, 합은 출력 레이어의 각 뉴런 위에 있으며 는 뉴런 j에 대한 입력입니다 .zjj

zj=iwijoi+b

즉, 자신의 대응하는 출력과 이전 계층의 모든 신경 세포를 통해 합 무게 w I J 신경 향해 J 플러스 바이어스 B .oiwijjb

이제, 가중치 갱신에 뉴런 연결 J를 뉴런으로 출력 층 I 이전 층을, I는 사슬 규칙을 이용한 오차 함수의 편미분을 계산해야wijji

Ewij=Eojojzjzjwij

뉴런의 입력으로 J .zjj

마지막 용어는 매우 간단합니다. j 사이에 하나의 가중치 만 있기 때문에 미분 값은 다음과 같습니다.ij

zjwij=oi

첫 번째 항은 출력 대한 오류 함수의 도출입니다 .oj

Eoj=tjoj

중간 용어는 입력 대한 softmax 함수의 도출 이 더 어렵다는 것입니다.zj

ojzj=zjezjjezj

하자 우리 클래스에 대응하는 3 개 개의 출력 뉴런이 있다고 , B , C를 다음 O를 B = S O F t m X ( B를 ) 이다 :a,b,cob=softmax(b)

ob=ezbez=ezbeza+ezb+ezc

그리고 몫 규칙을 사용한 파생 :

=softmax(b)softmax2(b)=obo 2 b =ob(1ob) 중간 항으로 돌아 가기 역 전파의 경우 이는 다음을 의미합니다. oj

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

모두 모아서

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

즉,이 클래스의 대상이 인 경우 가중치를 업데이트하지 않습니다. 그건 옳지 않아tj=0

이것에 대해 조사한 결과, softmax 파생에 대한 두 가지 변형이 있는데, 하나는 이고 다른 하나는 여기 또는 여기 와 같이 i j 입니다.i=jij

그러나 나는 이것을 이해할 수 없다. 또한 이것이 내 오류의 원인인지 확실하지 않으므로 모든 계산을 게시합니다. 누군가가 내가 놓친 부분이나 잘못 된 부분을 명확히 할 수 있기를 바랍니다.


당신이 제공 한 링크는 입력에 대한 미분을 계산하는 동안 가중치에 대한 미분을 계산합니다.
Jenkar

답변:


35

참고 : 저는 backprop에 대한 전문가가 아니지만 지금 조금 읽었습니다. 다음 경고가 적절하다고 생각합니다. 논문 또는 읽을 때 신경망에 파생 상품 표준의 혼합 사용하여 작성하는 것은 드물지 않다 요약 / 지수 표기법 , 행렬 표기법다중 지표를 (텐서-텐서 파생 상품에 대해 마지막 두의 하이브리드 포함 ). 일반적으로 의도는 이것이 "컨텍스트에서 이해되어야"하므로주의해야합니다.

나는 당신의 파생에서 몇 가지 불일치가 발견되었습니다. 신경망을 실제로 사용하지 않으므로 다음이 잘못되었을 수 있습니다. 그러나 여기에 내가 어떻게 문제를 해결할 것입니다.

EEkz

E=jtjlogojEzk=jtjlogojzk

oj

oj=1Ωezj,Ω=iezilogoj=zjlogΩ
logojzk=δjk1ΩΩzk
δjk
Ωzk=ieziδik=ezk
logojzk=δjkok
ojzk=oj(δjkok)
zkzδjk=1k=j

Ez

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

잘하면 이것이 도움이됩니다. 이 결과가 더 일관성있게 보입니까?

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

"Backprop / AutoDiff"커뮤니티가 이러한 문제를 어떻게 처리하는지 확실하지 않지만, 바로 가기를 시도 할 때마다 오류가 발생합니다. 그래서 나는 여기서와 같이 끝내서 완전한 첨자를 사용하여 요약으로 모든 것을 작성하고 모든 파생물에 대해 항상 새로운 첨자를 소개합니다. ( 여기서 내 대답과 비슷합니다 . 적어도 결국에는 올바른 결과를 제공하기를 바랍니다!)
GeoMatt22

개인적으로 당신이 모든 것을 적어두면 훨씬 쉽게 따라갈 수 있습니다. 결과가 나에게 맞습니다.
Jenkar

나는 여전히 당신의 각 단계를 완전히 이해하려고 노력하고 있지만, 전반적인 그림에 도움이되는 귀중한 통찰력을 얻었습니다. 파생 및 합계 주제를 자세히 읽어야한다고 생각합니다. 그러나 E의 요약을 고려하기 위해 귀하의 조언을 받아, 나는 이것을 생각해 냈습니다.
micha

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

그러나 내가 가지고있는 추가 질문은 : 대신
Ewij=Eojojzjzjwij
Ewij=Ezjzjwij
oj

12

@ GeoMatt22의 대답은 정확하지만 개인적으로 문제를 장난감 예제로 줄이고 그림을 그리는 것이 매우 유용하다는 것을 알았습니다.

그래픽 모델.

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

반전 된 경로가 강조 표시된 그래픽 모델.

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


이것이 마침내 나를 위해 이것을 정리 한 것입니다! 훌륭하고 우아한 설명 !!!!
SantoshGupta7

2
내 게시물을 읽음으로써 즐거움과 혜택을 누리게되어 기쁩니다! 또한 그것을 작성하고 설명하는 것도 도움이되었습니다.
Vivek Subramanian

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

당신이 맞아요-오타였습니다! 변경하겠습니다.
Vivek Subramanian

내가 여기서 이해하지 못하는 것은 일부 뉴런에 로짓 (비 스케일 점수)을 할당한다는 것입니다. (o는 소프트 맥스 로짓 (예측)이고 y는 로짓입니다). 그러나 이것은 정상적인 경우가 아닙니다. 이 그림을 보십시오 (o_out1은 예측이고 o_in1은 로짓입니다).이 경우 어떻게 y1에 대해 o2의 부분 미분을 찾을 수 있습니까?
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

다음은 제가 웹에서 발견 한 " 깨끗한 엔트로피 손실 함수를 가진 역 전파 알고리즘에서 파생물의 계산"에 대해 설명 하는 가장 깨끗하고 잘 작성된 메모 중 하나입니다 .


주어진 PDF에서 방정식 22는 어떻게 방정식 23이 되었습니까? Summation (k! = i)은 어떻게 음수 부호를 얻었습니까? 긍정적 인 신호를받지 않아야합니까? Summation(Fn)(For All K) = Fn(k=i) + Summation(Fn)(k!=i)내 이해에 따라 일어나야 합니다.
faizan

1

다음 은 softmax와 그 파생어를 설명 하는 링크 입니다.

i = j 및 i! = j를 사용하는 이유를 설명합니다.


나중에 링크가 끊어 질 경우 최소한의 독립형 답변을 제공하는 것이 좋습니다. 그렇지 않으면 앞으로 다른 사용자에게 더 이상 도움이되지 않을 수 있습니다.
luchonacho

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.