티스토리 뷰
2. Neural Networks / L1. Introduction to Neural Networks - Backpropagation
chrisysl 2018. 7. 3. 22:18Backpropagation
- 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의 미분이다.