2016-10-29 5 views
1

신경 네트워크를 작성하고 있지만 backpropagation을 사용하여 교육하는 데 어려움이 있으므로 어딘가에서 버그/수학적 실수가 의심됩니다. 내 코드에서. 우리는 역 전파의 방정식이 어떻게 보이는지에 대한 다른 문헌을 읽는 데 보냈지 만, 다른 책들이 다른 것을 말하거나 적어도 혼란스럽고 모순 된 표기법을 사용하기 때문에 다소 혼란 스럽습니다. 그래서, 어떻게 작동하는지 100 % 확실하게 알고있는 누군가가 나를 위해 그것을 지울 수 있기를 바랬습니다.표기법 (a 및 z)과 신경 네트워크에서 사용되는 백 프로 퍼 게이트 방정식 사용법에 혼란 스럽습니다.

backpropagation에는 두 가지 단계가있어서 혼란 스럽습니다. 단순함을 위해 3 레이어 피드 포워드 네트 만 가지고 있다고 가정 해 봅시다. 따라서 입력 숨김 출력과 숨겨진 출력을 연결합니다. I는 노드 Z과 동일한 값에 도달하는 가중치 합을 호출하지만 노드 의 활성화 기능을 통과 한 후.

은 분명히 내 질문의 우려 그래서 이런 식으로 연결해야합니다 방정식과 이미지를 포함 할 수 없습니다 해요 : https://i.stack.imgur.com/CvyyK.gif

을 지금. 역 전파 (backpropagation) 동안, 출력 계층의 노드에서 오류를 계산할 때 다음과 같습니다.

[ 1] Delta_output = (출력 대상) * 활성화 함수

의 유도체 a_output 통해 또는 그것을

[식이다. 2 Delta_output = (출력 대상) * 활성화 함수

의 유도체 통해 은닉층, 똑같은의 노드의 오차를 계산하는 동안 z_output 그것은이다

[식. 3] = Delta_hidden a_h 활성화 함수 * 합계의 유도체 (* w_h Delta_output)

또는 그것을

[식이다 내지. 4] Delta_hidden = z_h 활성화 함수의 미분을 통해 * sum (w_h * Delta_output)

그래서 기본적으로 질문입니다; 역 전파 동안 활성화 함수의 도함수 버전을 통해 노드의 값을 실행하는 경우는 활성화 함수 (Z는 또는 )를 통과하기 전 또는 후에이되면서 값으로 표현되어야 하는가?

이미지의 첫 번째 또는 두 번째 수식이 정확하고 이미지의 세 번째 또는 네 번째 수식이 똑같습니까?

감사합니다.

+0

back-prop를 구현 한 기존의 작업 라이브러리의 소스 코드를보고 어떻게 사용했는지 살펴 보셨습니까? – Justas

답변

0

활성화 함수를 통과하기 전에 값으로 유도 값을 계산해야합니다. 그래서 대답은 "z"입니다.

일부 활성화 기능

tanh 같은 파생 상품의 계산을 단순화 :

a = sin(z) 
derivative on z of sin(z) = cos(z) 
:

a = tanh(z) 

derivative on z of tanh(z) = 1.0 - tanh(z) * tanh(z) = 1.0 - a * a 
이 단순화는 여기에 대해 이야기하지만, 한 혼란으로 이어질 수

가 혼동없이 다른 활성화 기능입니다

위키 백과에서 활성화 기능 및 그 파생물 목록을 찾을 수 있습니다 : activation function.

일부 네트워크에는 출력 노드에 활성화 기능이 없으므로 중량 변경을 추가하거나 뺄 때마다 미분 값이 1.0delta_output = output - target 또는 delta_output = target - output이됩니다.

출력 노드에서 활성화 기능을 사용하는 경우 tanh(z)의 [-1,1]과 같은 활성화 기능 범위에있는 대상을 지정해야합니다.