티스토리 뷰

아마 딥러닝을 공부할 때 가장 먼저 접하게 되는 것이 신경망(Perceptron)일 것이다. 

 

가장 기초가 되는 부분이지만, 대부분의 서적이나 자료를 찾아보면 복잡한 수식과 기호들로 이해하기가 힘든 경우가 많다.  

 

아래는 한개의 은닉층과 각 층마다 3개의 노드를 가진 예시로 델타규칙(Delta rule을 통한 역전파의 원리를 설명한다.

하지만 미분에 대해선 미분 전의 식과 후의 결과만을 표시하였으므로, 미분에 대한 사전 지식이 필요할 것이다.


본격적으로 역전파를 통한 가중치 갱신을 해보기 전에 몇 가지 정해야 할 사항들이 있다.

아래에 사항들의 대해서 자세한 설명은 이 포스트에서는 생략한다.

 

첫 째로는 활성함수(Activation Function) 인 데, 최근에는 ReLu 등 다른 활성함수를 많이 사용하는 추세지만, 여기서는 Sigmoid 함수를 가정한다. 시그모이드 함수의 장점 중의 하나는 미분이 간단하기 때문에 계산이 쉽다는 점이다. 

 

두 번째는 Cost Function 또는 Loss Function이다. 우리말로는 비용 함수 또는 손실 함수라고 불리는 데, 우리는 이 값이 작아지는 방향으로 학습한다. 그러나 손실이 0인 것이 무조건 좋은 것은 아니다. 여기서는 MSE (Mean Squared Error)를 사용할 것인데, 1/2은 후에 미분 시 계산을 편리하게 하기위하여 사용한다.

 

세 번째는 최적화(Optimization) 알고리즘인 데, 우리는 위의 손실이 적어지는 방향으로 학습을 할 것인 데, 어떤 방식으로 손실을 줄어들게 할 지에 대한 선택사항이다. 여기서는 가장 간단한 경사하강법(Gradient descent algorithm) 을 이용할 것이다. 이 방법은 현재 손실함수의 기울기를 계산하여 손실이 낮아지는 방향으로 가중치를 갱신한다.  

 

추가로 아래의 그림에서 동일한 방법으로 계산되는 경우는 생략하였다.


입력 데이터와 그에 따른 출력 값은 우리가 이미 가지고 있는 데이터다. 이런 식으로 이미 데이터를 가지고 있고 이 데이터들을 활용해서 신경망을 학습하는 방식을 지도학습(Supervised Learning)이라고 한다.

 

편향(Bias)는 일단 여기서는 고려하지 않는다. 

 

 

 

 

초기 가중치들을 이용하여 왼쪽 부터 오른쪽 순으로 계산하는 과정을 순방향 전파(Forward Propagation) 이라고 한다.

 

 

 

 

 

경사 하강법 알고리즘은 특정 가중치에 대한 오차의 변화율 (그래디언트) 를 통해 가중치를 갱신한다.

 

 

 

학습률은 0.01~0.001 정도의 작은 크기로 설정하여, 가중치가 갱신되는 폭을 결정한다. 즉 한번 학습할 때마다 어느정도 가중치의 변화가 일어나게 할 것인지를 결정한다.

 

계산또는 이해를 쉽게 하기 위해서 델타 기호를 이용하여 표기하여 역전파를 계산하는 데, 이것을 델타 룰(Delta Rule)이라고 불린다. 즉 순방향 전파에서 좌에서 우로 이동하는 것과 마찬가지로 역전파에서는 우에서 좌로 델타가 이동한다고 보는 것이다.

 

또한 -e1에 의해 발생한 부호의 변화에도 유의하길 바란다.

 

 


 

위의 수식이 복잡해보이지만, 미분에 대한 기본지식이 있다면 천천히 읽어보면 이해가 충분히 될 것이라고 믿는다.

중요한 점은 새 가중치는 기존 가중치에 대한 손실의 변화율에 기반한다는 점이다. 

 


위의 이미지는 델타가 전파되는 것을 보여준다.  활성함수의 미분 값이 곱해져야 한다는 것에만 유의한 다면, 순방향 전파와 동일한 원리로 전파된다.

 

 

간단하게 하나의 은닉노드(h1)에 대해서 가중치의 갱신과정을 보여준다. 

댓글
반응형
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함