영넌 개발로그

인공 신경망 수식 이해 본문

코딩/ML , Deep

인공 신경망 수식 이해

영넌 2021. 1. 18. 13:42

1. 행렬곱

신경망에서 신호를 전달하는 연산은 행렬곱을 통해 그 크기에 상관없이 간결하게 표현이 가능하다. 또한 많은 컴퓨터 프로그래밍 언어는 행렬을 잘 인식하고 행렬 연산을 빠르고 효율적으로 처리 가능하다.

 

다음 층으로 넘어갈 때 입력의 합 x = input1 * W1  +  input2 * W2  +  input3 * W3 이다. 이를 행렬 식으로 나타내 보면 가중치 행렬 * input 행렬을 곱하는 것으로 간단하게 표현이 가능하다. 아래의 수식을 살펴보면 이해가 될 것이다.

W * I

위 수식에서 첫번째 행은 다음 계층 첫번째 노드의 활성화 함수에 입력 값으로 전달되고, 두번째 행은 다음 계층 두번째 노드의 활성화 함수에 입력 값으로 전달된다.

 

 

2. 역전파

최종적인 행렬곱으로 표현된 역전파 수식을 살펴보자

역전파 수식


다중 계층에서 w_11을 업데이트 하기 위해 사용되는 e_(hidden,1)에 대해 살펴보자면, 이는 연결노드 w_11과 w_12로 나뉘어 전달되는 오차의 합과 같다. 이에 대한 사진은 이전 포스팅에 넣었다.

=error(hidden,1)

* 여러 개의 출력 노드가 있는 경우에도 그저 각각의 출력 노드를 개별적으로 처리하면 된다.

w_11 을 업데이트 하기 위해 사용되는 e_1 의 일부 :

여기서 분모 부분은 일종의 정규화 인자라고 할 수 있다. 만약 이 정규화 인자를 무시한다고 해도 되돌아오는 오차의 일정 비율 정도를 잃은 것 뿐이고 크게 차이가 나지 않는다.

위의 두 수식을 행렬의 형식으로 표현해보면 아래와 같이 나온다.

이는 간단하게 가중치 행렬과 오차행렬로 표현되어 맨 처음 행렬곱처럼 나오는 것을 알 수 있다.

역전파 행렬 곱 수식

 

 

3. 가중치 업데이트

 1) 경사하강법

기울기를 이용하여 오차를 최소화 해나가는 과정이다. 이를 사용하려면 가중치에 대한 오차함수의 기울기를 구해야한다. 이때 오차함수는 제곱 오차 방식을 사용한다.

" 최저점의 방향으로 감소하기 원하는 오차함수의 기울기 " = 오차함수의 미분 이기 때문에 수식은 아래와 같다

  W는 가중치 E는 오차

 2) 오차함수

제곱오차 방식

     -1 오차함수 전개

     -2 합 기호 지우기

      n  o_n 받으므로 w_jk 연결 노드인 O_k 외의 모든 O_n        제거할 수 있다.

 

     -3 연쇄 법칙

     O_k는 노드 k의 결과 값으로 입력 신호의 가중치 합에 시그모이드 함수를 적용한 것이다.

 

 

     -4 미분

 

 

     -5 간소화

     상수 제거 : 오차함수의 기울기 방향에 대해서만 관심이 있으므로 상수는 제거해도 무방하다.

     첫번째 항 = 오차 * (목표 값 실제 값)

     두번째 항의 시그모이드 안에 있는 합 기호는 사실 최종 계층의 노드로 들어오는 입력 신호에 불과하므로 이는 활성화 함수가 적용      되기 전의 신호를 의미할 뿐이어서 제거해도 무방하다.

 

 

 

     -6 학습률 추가 후 행렬적용

최종 수식

 

 

 

reference :)

책-신경망 첫걸음

Comments