Backpropagation Algorithm

역전파(Backpropagation) 알고리즘이란?

인공신경망(Artificial Neural Network)을 학습시키기 위한 가장 기본적인 알고리즘으로 오차가 본래의 진행방향과 반대방향으로 전파된다하여 붙여진 이름입니다(오류 역전파라고 불리기도 함).
일반적인 머신러닝 알고리즘은 경사 하강법(Gradient Descent)을 이용해서 목적함수최소화 하는 방향으로 업데이트합니다. 경사 하강법 알고리즘을 이용하기 위해서는 목적 함수의 미분값(Derivative)를 알아야합니다. 이때 이 미분값을 구하기 위해서 역전파 알고리즘이 사용됩니다.

 

역전파 알고리즘의 특징

역전파 알고리즘은 input과 output을 알고 있는 상태에서 신경망을 학습시키는 알고리즘입니다.

역전파 알고리즘을 적용시키기 이전에 MLP에 대해 몇가지 알아야할 것들이 있습니다.

  1. 가중치, weight 값은 랜덤으로 주어집니다.
  2. 각각의 노드를 지나칠 때마다 활성화함수(Activation function)를 적용합니다.
    활성함수를 적용하기 이전을 net, 적용 이후를 out이라 가정하면 마지막 out이 output이 됩니다.
  3. 활성화 함수는 sigmoid 함수로 사용합니다.

결과 값으로 얻기를 바라는 값을 target, 실제로 얻은 결과값을 output이라하면, 오차 E는 다음과 같습니다.

여기서 합의 의미는 모든 output에서 발생한 오차를 전부 더해주는 것입니다. 즉, 이 오차에 관한 함수 E의 함수 값을 0에 근사시키는 것입니다. 오차가 0에 가까워진다면, 신경망은 학습에 사용된 input들과 그에 유사한 input들에 대해서 우리가 원하는 output(정답)이라고 할 수 있는 값들을 산출할 것입니다.


-그래프 상에서 y=0, w1=0, w2=0일때 E가 최소가 됩니다.

오차 E를 모든 가중치 w1, … wn에 대한 방정식으로 본다면, 우리가 해야하는 것은 가중치 w를 수정해 E가 최소가 되도록 만드는 것입니다. 이를 사용하기 위해  경사 감소법(gradient descent)라는 알고리즘입니다. 기울기가 낮은 쪽으로 연속적으로 이동시켜 값이 최소가 되는점에 다다르게 하는 것입니다.

역전파 알고리즘의 단계

역전파 알고리즘은 크게 propagation, weight update 두 가지 단계로 나눌 수 가 있습니다.
propagation 단계에서는 training input pattern에서부터 에러, 혹은 각 뉴런들의 변화량을 계산합니다.
weight update 단계에서는 앞에서 계산한 값을 사용하여 weightupdate시킵니다.

단계 1 : Propagation

  1. Forward propagation: input training data로부터 output을 계산하고, output neuron의 결과로 나온 Neural Networks의 Prediction값과 실제 Target Value값과 차이인 Error를 계산합니다.
  2. Back propagation: output neuron에서 계산된 error를 각 edge들의 weight를 사용하여 바로 이전 layer의 neuron들이 얼마나 error에 영향을 미쳤는지 계산합니다.

단계 2 : Weight update

  1. Chain rule(미분의 연쇄법칙- 합성함수의 미분)을 사용하여 parameter들의 기울기를 계산합니다.

이 단계를 알고리즘 형태로 정리하면 다음과 같습니다.

  1. Forward propagation을 수행해서 Hidden Layer 1, Hidden Layer 2, … , Hidden Layer N 까지 노드들의 activation을 계산합니다.
  2. Output Layer Ni 의 각각의 노드i에 대해서 아래와 같이 에러값을 계산합니다.
  3. Output Layer를 제외한 각각의 노드 i 에 대해서 아래와 같이 에러값을 계산합니다.
  4. Neural Networks의 파라미터(W,b)에 대한 미분값(derivative)를 아래와 같이 계산합니다.

여기서 는 activation의 미분값으로 activation function이 sigmoid function의 경우 입니다. Backpropagation으로 구한 Weight의 미분값(), Bias의 미분 값()을 이용해서 최종적으로 아래와 같이 Gradient Descent를 이용해서 Weights과 Bias를 적절한 값으로 한 스텝(step) 업데이트합니다.

이렇게 Gradient Descent를 일정 횟수(iteration)만큼 반복하면, 최종적으로 Neural Networks는 목적에 적합한 Weights과 Bias 값을 갖게 됩니다.


자료 출처 : http://refopen.blogspot.kr/2014/08/blog-post_67.html, http://llnntms.tistory.com/31, http://sanghyukchun.github.io/74/, http://happycontrol.tistory.com/entry/%EC%97%AD%EC%A0%84%ED%8C%8C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98BackPropagation-%EC%88%98%EC%97%85%EB%B2%84%EC%A0%84, http://blog.naver.com/PostView.nhn?blogId=2011topcit&logNo=220549893387&parentCategoryNo=&categoryNo=12&viewDate=&isShowPopularPosts=true&from=search, http://solarisailab.com/archives/2112

댓글 남기기