신경망의 Softmax 레이어


43

역 전파로 훈련 된 신경망에 softmax 레이어를 추가하려고하는데, 그래디언트를 계산하려고합니다.

softmax 출력은 여기서 는 출력 뉴런 수입니다. jhj=ezjezij

내가 파생하면 얻을

hjzj=hj(1hj)

로지스틱 회귀와 유사합니다. 그러나 숫자 그라디언트 검사가 실패하기 때문에 이것은 잘못되었습니다.

내가 무엇을 잘못하고 있지? 교차 도함수 (예 : )도 계산해야한다고 생각 했지만이 작업을 수행하고 그래디언트의 차원을 유지하는 방법을 잘 모르겠습니다 다시 전파 과정에 적합합니다.hjzk


3
그라디언트 검사가 실패하는 방법에 대한 질문이 있으므로 NN에 일반 softmax 레이어를 추가하는 것에 대해 언급하지 않으므로 질문의 제목을 개선해야합니다. 제목을 "신경망에 softmax 레이어를 추가 할 때 역 전파가 올바르게 작동하지 않는 이유"로 변경하는 것이 좋습니다.
Charlie Parker

답변:


43

Jacobian 을 벡터로 줄이는 방법에 대한 마지막 직관을 제외하고는 amoeba와 juampa에 의해 잘 포착되어 있기 때문에 이것에 대한 내 자신의 대답을 제공하는 것에 대해 약간 나쁘게 느낍니다 .

야곱 행렬의 대각선 기울기를 올바르게 도출했습니다.

hizj=hi(1hj):i=j

아메바가 언급했듯이 야곱의 대각선 입구를 가져와야합니다.

hizj=hihj:ij

이 두 개념 정의는 Kronecker Delta 라는 구성을 사용하여 편리하게 결합 할 수 있으므로 그래디언트의 정의는

hizj=hi(δijhj)

자 코비안은 정사각 행렬입니다.[J]ij=hi(δijhj)

이 시점까지의 모든 정보는 이미 amoeba와 juampa로 덮여 있습니다. 물론 문제는 이미 계산 된 출력 오류에서 입력 오류를 가져와야한다는 것입니다. 출력 오류 의 기울기는 모든 입력에 의존하기 때문에 입력 의 기울기 는hixi

[x]k=i=1hi,k

위에서 정의한 Jacobian 행렬을 감안할 때 이것은 행렬의 곱과 출력 오류 벡터로 간단하게 구현됩니다.

σl=Jσl+1

softmax 레이어가 출력 레이어 인 경우,이를 엔트로피 비용 모델과 결합하면 계산이 간단 해집니다.

σl=ht

여기서 는 레이블의 벡터이고 는 softmax 함수의 출력입니다. 단순화 된 형태는 편리 할뿐만 아니라 수치 적 안정성 측면에서도 매우 유용합니다.th


함께 이다 ? (이 경우 '그라데이션'이 무엇인지 이해하려고 σl=(σl,1,σl,2,...,σl,k)σl,j=Czj
Alexandre Holden Daly

네 맞습니다.
Mranz

누군가 크로네 커 델타의 소문자 델타 용어와 그 계산 방법을 설명해 주시겠습니까?
danijar

나는이 문제에 잠시 갇혀있다. 명확히하기 위해. 벡터 (pre softmax)가 있고 softmax를 계산합니다. softmax의 값은 모든 입력 값에 의존하기 때문에 실제 자 코비안 행렬이 필요합니다. 그런 다음 jacobian 행렬을 취하고 합을 사용하여 행을 줄여 단일 행 벡터를 얻습니다. 평소와 같이 그라데이션 하강에 사용합니다. 이 모든 것이 100 % 맞습니까?
harveyslash

14

파생 상품이 잘못되었습니다. 그것은해야한다,

hjzk=hjδkjhjhk

계산을 다시 확인하십시오. 또한, 크로스 엔트로피에 대한 아메바의 표현은 전적으로 정확하지 않습니다. 다른 클래스 에서 가져온 일련의 데이터 샘플에 대해서는 다음 과 같이 읽습니다.C

nk=1Ctknlnyk(xn)

수퍼 가 샘플 세트에서 실행되는 경우 은 n 번째 샘플에 대한 대상의 k 번째 성분 값입니다. 여기에서는 1-C 코딩 방법, 즉 사용한다고 가정합니다 . 이 경우 해당 클래스를 나타내는 구성 요소를 제외한 모든 t는 0입니다 (1).tkntkn

t는 일정하다. 따라서이 기능을 최소화하는 것은 최소화하는 것과 같습니다.

nk=1Ctknlnyk(xn)+nk=1Ctknlntkn=nk=1Ctknlnyk(xn)tkn

자 코비안이 매우 편리한 형태, 즉

Ezj=hjtj

패턴 인식을위한 주교의 신경망 사본을받는 것이 좋습니다 . IMHO는 여전히 신경망에 관한 최고의 책입니다.


14

softmax의 각 출력은 모든 입력에 따라 달라 지므로 그래디언트는 전체 야 코비 행렬입니다. 올바르게 계산 했지만 경우 도 필요합니다 . 첫 번째 표현을 도출 할 수 있다면 두 번째 표현도 쉽게 도출 할 수있을 것 같아요.jhj=hjzj=hj(1hj)khj=hjhkjk

역 전파에 어떤 문제가 있는지 잘 모르겠습니다. softmax 레이어에는 출력과 입력이 있으므로 각 출력의 오류가 각 입력으로 전파되어야하므로 정확히 전체 Jacobian이 필요합니다. 반면에 일반적으로 softmax 출력과 관련된 비용 함수가 있습니다 (예 : 여기서 는 원하는 출력입니다 (분류를 수행 할 때 종종 그 중 하나가 1 임) , 기타는 0). 실제로 에 관심이 있는데, 이는 연쇄 규칙으로 계산하여 깔끔한 표현이 가능하며 실제로 벡터 (행렬 아님)입니다.jj

C=jtjloghj,
tjCzj

1
이 튜토리얼 ufldl.stanford.edu/wiki/index.php/Backpropagation_Algorithm 에 따르면 내 문제를 더 잘 설명하려고 노력 합니다. 가중치와 델타에 도함수를 요소별로 곱해야합니다 (단계 3). 따라서 전체 자코비 행렬이 있으면 치수가 맞지 않습니다. 감사.
Ran

소프트 맥스가 아닌 일반적인 숨겨진 레이어 인 경우 진행 방법을 알고 있습니까? 이 계층의 각 단위가 이전 계층의 모든 단위 (즉,이 계층이 "완전히 연결되어 있음")에서 입력을받는다고 상상해보십시오. 그런 다음이 레이어를 통해 오류를 다시 전파해야하며 미분도 자 코비안 행렬을 형성합니다. 사용 방법에 대해 혼란 스러우면 혼란은 softmax와 관련이 없습니다.
amoeba는 Reinstate Monica가

1
미분은 벡터이기 때문에 선형 및 시그 모이 드 레이어에 성공적으로 구현되었으므로 치수에 문제가 없었습니다.

죄송합니다. Ran, 어리석은 것일 수도 있지만, 이전 레이어에 완전히 연결된 sigmoid 레이어가있는 경우 각 장치 의 출력 (또는 입력) 은 각 장치 들어오는 연결과 관련하여 파생 됩니다. 이전 계층, 즉 모든 파생물은 2 차원 매트릭스, n'est-ce pas? 나는ji
amoeba는 Reinstate Monica가
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.