티스토리 뷰

Backpropagation

 - Neural network를 학습시키기 위해 backpropagation 이라는 방법을 사용할 것인데, 다음과 같이 작동한다.


Backpropagation procedure

 - feedforward 연산 수행

 - 모델의 출력 결과와 바람직한 결과(desired output)를 비교

 - 오류를 계산

 - 오류를 각각의 weights로 분산시키기위해 feedforward 연산을 역방향으로 수행(backpropagation)

 - 이 결과값을 이용하여 weights를 업데이트하고 더 나은 모델을 얻는다.

 - 최선의 모델을 얻을 때 까지 위 과정을 반복.


 - feedforward부터 recap해보자.

 - 우리는 하나의 파랑 점(y = 1)을 input으로 집어넣을 경우 그 좌표를 X1, X2라 할 때

 - 주어지는 경계는 weights(W1, W2)와 bias(B)가 적용된 W1*X1 + W2*X2 + B라는 선형모듈이고,

 - 퍼셉트론은 input인 (X1, X2)에 대해 점을 찍고 선형모듈에 의해 이분된 영역을 고려하여

 - 그 점이 파랑점일 확률을 리턴한다.

 - 이 경우엔 값이 작게 나올 것이다. 왜냐면 빨강영역에 해당 점이 위치하고있기 때문.

 - 따라서 이 퍼셉트론은 bad perceptron이다 왜냐면 실제로 해당 점은 파란색이지만

 - 빨간색일 영역에 위치해 있으므로 빨간색일 확률을 예측하기 때문.


 - 그 다음 gradient descent 알고리즘에서 배웠던것 중 Backpropagation이란것을 수행했는데,

 - 그 점에게 "모델이 너에게 어떻게 다가가야하는지?" 라고 물어보는것과 같다.

 - 그럼 그 점은 "분류가 잘못되었으니 모델이 나한테 더 가까이 와야한다" 라고 말해준다.

 - 이렇게 되면, weights를 업데이트하여 모델이 그 점 쪽으로 더 가까이 다가가게 된다.

 - 예를들어 W1이 더 낮아지도록, W2가 더 높아지도록 업데이트했다 가정하면,

 - W1', W2'과 같이 새로운 모델을 얻게되고, 그 점에 더 가까워지게 된다.


 - 이 과정은 Gradient Descent때 error function이 수행한 것과 동일하다.

 - 어느 방향으로 가야 에러가 최소화 될지 그래디언트를 통해 방향을 설정하였었다.

 - 음의 그래디언트방향으로 에러를 줄여 새로운 지점에 도달하면 E(W')라는 전보다 더 작은 에러를 얻게되고,

 - 이는 새로운 모델이 그 점에게 더 가까이 갔다는 의미가 된다.

 - 우리는 이 과정을 에러를 최소화하는 방향으로 지속적으로 수행하였다.

 - 여기까지가 하나의 퍼셉트론에 대해 수행한 개념이 됨






 - 그럼 이번엔 multi-layer perceptron의 경우엔 어떤식으로 새로운 모델을 얻어 갈 것인지에대해 알아보자.

 - 마찬가지로 error function을 계산하고, 그것의 그래디언트를 계산한다.

 - 동일하게 앞서 구한 그래디언트의 음의방향으로 에러를 줄여서 더 낮은 새로운 에러 E(W')를 얻고

 - 더 나은 prediction을 얻어나간다. 위의 과정을 반복하며 에러를 최소화 해 나가면 된다.



 - 다중 레이어 퍼셉트론의 경우, 특정 점에 대해 hidden layer에서 점을 찍고, 연산을 수행하여

 - 비선형 모델을 얻는다. 그 다음 y = 1이기 때문에 그 점이 위치한 영역에서의 파랑일 확률을 리턴한다.



 - 그 다음, 에러를 체크한다. 

 - 도출해낸 모델은 해당 점을 잘못 분류하고 있으므로(실제 점은 파랑인데, 빨강영역에 있으므로 빨강점일것이라 예측)

 - 모델이 그 점에게 "너가 더 정확하게 분류되려면 어떻게 해야될지?" 를 물어본다.

 - 그러면 점은 "파랑 영역이 나에게 더 가까이 와야된다" 고 점이 알려주게되고,

 - 이때, 파랑 영역이 그 점에게 더 가까이 간다는것에 대해 생각해보면

 - hidden layer에서 두 모델중 아래 모델이 그 점을 더 정확하게 분류하고 있기 때문에, 

 - 위 모델에서의 weight을 감소시키고, 아래 모델에서의 weight을 증가시킨다.

 - 그렇게되면 최종 모델은 hidden layer의 아래 모델을 더 따르게 되고, 위 모델에 대해서는 덜 따르게 된다.



 - 그 다음 hidden layer상의 선형모델에게 가서

 - 위와같은 동일한 과정을 거친다. 즉, 해당 점에게 모델이 더 가까이 가야할지 멀어져도 될지를 물어보고

 - 각 모델들은 그 대답을 반영한 새로운 모델로 변화한다.



 - 이러한 모델의 변화는 weights를 갱신하게 되고, 이렇게 되면

 - 우리는 모든 weights를 업데이트 하게 되므로, 

 - hidden layer상의 prediction 또한 더 나은 prediction 값을 리턴하게되고, 

 - 최종 output layer 상의 prediction 또한 더 나은 값을 리턴하게 된다.



 - 위와같이 최종 모델까지 변화하게 된다.

 - 이 예시에서는 bias에 대해 언급하지 않았는데 실제 계산에는 bias가 반드시 들어가야한다.






Backpropagation Math

 · 단일 퍼셉트론

 - yHat인 prediction 값은 input의 linear function 값에 대한 sigmoid function을 수행한 결과이며,

 - Error는 모든 점에서의 에러의 평균을 나타내고

 - 그 에러를 최소화 하기위해선 gradient를 계산해야한다.

 - 그래디언트는 error function의 모든 편미분값을 통해 얻어낸 벡터이다.



 · 다중 퍼셉트론

 - 마찬가지로 yHat인 prediction값은 행렬곱에 대한 sigmoid function을 수행한 결과이며,

 - Error function은 동일하다. 

 - 그래디언트의 경우 동일하지만 매우 긴 벡터가 되겠다.

 - 각각의 weight와 에러에 대해 편미분한 값을 나타낸다.



 - 이를 좀 더 단순화 하면 위와같이 나타낼 수 있다.






Chain Rule






# Feedforward 알고리즘



# Backpropagation 알고리즘



# 두번째 레이어만 떼서 본 연산과정.

 - 주목할만한점은 sigmoid function의 미분이다.




댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
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
글 보관함