개요
역전파 알고리즘(Backpropagation)은 다층(multilayer)이고, feedforward 신경망에서 사용되는 학습 알고리즘이며, 학습의 방법은 지도 학습(supervised learning)이다. 즉, 학습을 하기 위해서는 입력 데이터와 원하는 출력(o) 데이터가 있어야 한다. 간단히 학습의 개념을 살펴보면,
먼저, 입력이 신경망의 가중치(weights)와 곱하고 더하는 과정을 몇 번 반복하면 입력의 결과값인 출력(y)이 나온다. 이 때 출력(y)은 학습 데이터에서 주어진 원하는 출력(o)와 다르다. 결국, 신경망에서는 (y - o)만큼의 오차(e = y - o)가 발생하며, 오차에 비례하여 출력층의 가중치를 갱신하고, 그 다음 은닉층의 가중치를 갱신한다. 가중치를 갱신하는 방향이 신경망의 처리 방향과는 반대 방향이다. 이런 이유로 역! 전파 알고리즘이라고 한다. 다시 말해, 신경망의 처리는 입력층 → 은닉층 → 출력층의 방향으로 진행되며, 가중치 갱신의 학습방향은 출력층 → 은닉층으로 진행된다.
그림. BPN의 계산과 학습 방향
역전파 알고리즘의 단계를 간단히 정리하면 아래와 같다.
1. 신경망에 입력 데이터를 입력 노드에 적용하고, 입력에 따른 출력을 계산한다.
2. 입력에 따른 출력과 원하는 출력간의 오차를 계산한다.
3. 오차를 줄이기 위해 가중치의 증감 여부를 결정한다.
4. 각각의 가중치를 얼마나 변화시킬 것인가를 결정한다.
5. 4 단계에서 결정된 값으로 가중치를 갱신(변화)한다.
6. 모든 학습 데이터에 대해 오차가 적정 수준으로 감소하기까지 1단계에서 5단계를 반복한다.
Generalized Delta Rule(GDR)
단층이고 출력 함수(activation function)가 일차 함수인 경우, 신경망의 가중치 갱신은 아래 식으로 구성된다. 오차ε와 학습률μ, 그리고 입력값에 비례하여 가중치값을 갱신한다.
. . . (1)
그럼 다층 신경망이면서, 출력함수도 일차 함수가 아닐 경우는 가중치 갱신이 어떤 방법으로 될까? 먼저 가중치를 갱신하는 식은 그냥 느낌(?)으로 쓴 식이 아니고, Gradient-descent method라는 방법을 이용하여 식을 전개한 결과이다. 어떤 식으로부터 어떻게 전개했을까?를 전부 설명할 수도 없고, 그러고 싶지도 않다. 별 의미가 없기 때문이다. 여기서는 개념적인 설명만 하겠으니, 자세한 사항을 알고 싶은 분은 신경망책을 참고하기 바란다. 여기서 아래 첨자들은 신경쓰지 않아도 된다. 단지 개념적으로 설명드리면,
,
단층, 일차함수의 출력 함수와 비슷한 논리 전개를 한다. 우선 오차를 위의 식으로 설정하고, 오차에 대해 가중치로 편미분한다. 그러면 오차에 대한 가중치의 Gradient값을 구할 수 있다. 다시 말하면, 오차를 가장 많이 없앨 수 있는 가중치의 변화 방향을 알 수 있다.
결과부터 알아보자. 출력층의 가중치 변화식은
,
단, 여기서
위의 (1) 식과 가중치의 갱신량(?)을 비교해보자. δ가 (1)식의 ε대신 포함되서 비슷한 역할을 하고 있다. 다시 말해, 다층이면서 노드 함수가 일차 함수가 아닐 경우에는 (1)식의 ε역할을 δ가 하고 있다. 다음은 은닉층의 가중치 변화식을 알아보자.
단, 여기서
은닉층의 δ는 조금 복잡하다. 은닉층의 δ를 잘 살펴보면 출력층 δ의 가중치합이 속해 있다. 즉, 신경망의 계산방향과는 반대이고, 은닉층의 오차는 출력층의 오차의 가중치합으로 표현한다라고 설명드릴 수 있다.
그러니까 출력층의 δ와 은닉층의 δ만 구하면 가중치를 갱신할 수 있고, 결과적으로 다층이면서, 미분 가능한 노드 함수를 가진 신경망을 학습시킬 수 있게 되는 것이다.
'일 > Data Mining' 카테고리의 다른 글
[SAS tip] sas datetime value를 yyyymmddhhmmss 형식으로 변형하기. (0) | 2008.01.22 |
---|---|
좋은 모델을 만드는 법. (0) | 2007.12.16 |
'Data Mining' Talk을 듣고. (0) | 2007.05.11 |
Co-Training : Semi-Supervised Learning (0) | 2007.05.05 |
[퍼옴] 벡터의 내적과 외적 (0) | 2007.04.05 |