-->

신경망의 지도학습, 델타규칙과 경사하강법

반응형

지난 퍼셉트론 포스팅에서 퍼셉트론의 기본 개념을 알아보면서 단층 퍼셉트론의 한계와 그것을 해결하기 위해 등장한 다층 퍼셉트론까지 간단히 살펴봤다. 다층 퍼셉트론은 곧 신경망이라고 보아도 무방하기 때문에 여기서는 다층 퍼셉트론이라는 용어 대신 '신경망'이라고 표기하겠다.

 

지난 포스팅에 이어서 오늘은 신경망의 학습 규칙인 델타규칙(Delta Rule), 경사하강법(Gradient Descent), 역전파(Back Propagation)에 대해 알아볼 것이다. 이 개념들은 전부 신경망의 학습 과정 중에 나오는 개념들이다.

 

 

/* 해당 포스팅에서의 표기법은 다음과 같다 */

 

  • xi : 입력값
  • zi : 은닉층 값
  • yi : 출력층 값
  • ti : 목표값
  • E : 에러
  • α : 학습률

 

 

신경망의 계층구조

위에 링크시킨 포스팅의 다층 퍼셉트론에서도 잠깐 설명을 했지만 신경망은 입력층, 은닉층, 출력층으로 이루어져 있고 여기서 은닉층의 노드수와 층수는 설계자의 마음이다. 당연하게도 은닉층이 많아지면 많아질수록 깊은 심층 신경망이 된다.

 

신경망의 계층구조 (이미지 제작)

 

신경망의 델타규칙(Delta Rule)

주어진 입력값에 맞게 가중치를 체계적으로 업데이트해나가는 것을 신경망에서는 학습규칙이라고 하는데 대표적으로 여기서 살펴볼 '델타규칙'이 있다. 델타규칙은 요약하자면, 입력값과 출력값의 오차에 비례해 각 가중치를 조절하는 방법이다.

 

"입력값과 출력값의 오차가 최소가 되는 (혹은 허용 오차가 되는) 가중치를 학습을 통해 찾아내는 것이 목표"라는 것을 기억하면서 델타규칙을 알아보자.

 

1) 델타규칙에서의 에러 

즉, 델타규칙에서는 가중합인 출력값 yi와 목표값 ti의 차이를 에러라고 정의하고 이 에러를 계산하는 아래의 평균제곱오차(MSE) 식을 비용함수(Cost Function)이라고 부른다. 즉, 델타규칙에서의 "에러(E) = 평균제곱오차(MSE) = 비용함수(Cost Function)" 이다. 이 비용함수는 경사하강법에서 다시 등장하게 되고 참고로 시그마 앞에 곱해주는 1/2 값은 고정 값은 아니다.

 

델타규칙에서의 에러(평균제곱오차, 비용함수) (이미지 제작)

 

 

2) 가중치가 에러에 미치는 영향을 계산

델타규칙은 초기에 설정해준 혹은 이전에 업데이트한 가중치가 현재 발생한 에러에 미치는 영향을 파악하기 위해 다음과 같이 에러 E를 가중치 w에 대해 편미분한 값인 ∂E/∂w를 계산한다. 이 값은 경사하강법에서의 기울기(gradient) 값이 된다.

 

경사하강법에서의 gradient 값을 계산 (이미지 제작)

 

3) 가중치 업데이트

가중치가 에러에 미치는 영향을 위에서 계산했으니 그것을 반영해서 가중치를 업데이트 해야 한다. 그래야 허용 오차 범위내로 들어오는 최적의 가중치를 찾을 수 있기 때문이다(결국 신경망 지도학습의 학습 대상은 가중치이다). 위에서 계산한 ∂E/∂w에 학습률 α를 곱한 변화율(w_old의 변화율)을 기존 가중치 w_old에서 빼주어 w_new로 업데이트한다.

 

델타규칙에서의 가중치 업데이트 방법 (이미지 제작)

 

 

경사하강법(Gradient Descent)

사실 델타규칙에 경사하강법이 포함되어 있다. 위 델타규칙에서 살펴본 비용함수(Cost Function)을 w에 대해 정리하면 다음과 같은 형태의 2차 함수 형태가 된다. 경사하강법에서는 정해진 가중치에 대한 비용함수의 기울기 ∂f/∂x 를 계산하고 기울기 방향으로 학습률 α만큼 움직여 다음 값을 정한다(비용함수를 w에 대해 편미분한 ∂f/∂x가 비용함수에서의 접선의 기울기가 된다).

 

결국 위에서 봤던 E를 w에 대해 편미분한 값(=w_old의 변화율)이 비용함수의 기울기를 의미한다. 경사하강법에서 이렇게 변화율을 구하게 되면 델타규칙에 의해 가중치가 업데이트되게 되는 것이다. 즉, 경사하강법에서는 함수의 최소값(최소 에러)를 갖기 위한 가중치가 얼마인지 알아낼 수 있는 것이다.

 

경사하강법(Gradient Descent) (이미지 제작)

 

 

여기서 경사하강법 이름의 유래?를 알 수 있는데 학습 과정을 반복하면서 가중치 업데이트될수록 비용함수에서의 접선 경사가 점점 낮아지기 때문이다. 

 

또한, 적절한 학습률의 설정도 중요한데 움직일 정도인 학습률을 너무 크게 하면 최적의 가중치를 지나쳐버릴 수 있고 너무 적게하면 최적의 가중치를 찾기까지 너무 오래걸리기 때문이다. 실제로 학습률은 실제로 돌려보면서 어느정도가 가장 적정한지 조절해나가는 과정을 거치게 된다.

 

 

역전파(Back Propagation) 란?

역전파도 이미 델타규칙을 설명하며 살펴봤다. 에러를 계산해 역방향으로 에러를 전파하고 전파된 에러를 이용하여 가중치를 업데이트하기 때문에 이런 방식을 역전파(Back Propagation)이라고 한다. 델타규칙은 역전파와 경사하강법 둘다 포함되어 있다고 봐도 될 것 같다. 

 

 

 

에러를 역전파시켜서 각 가중치들에 그 영향을 계산해서 얼만큼 업데이트 시킬지에 대한 계산 과정들은 쉬운 예제들이 많으니 실제 계산 과정이 궁금하다면 찾아보는 것을 추천한다.

 

 

단층 퍼셉트론과 다층 퍼셉트론, 신경망을 알아봤고 신경망에서의 중요한 개념이라고 할 수 있는 학습규칙인 델타규칙과 경사하강법, 역전파에 대해 알아보았다. 다음 포스팅에서는 이 개념들을 사용해 구현된 모듈 없이 실제로 다층 퍼셉트론을 구현해 보도록 한다.

 

댓글

Designed by JB FACTORY