굴러가는 분석가의 일상

딥러닝의 학습 #1 (Backpropagation) 본문

Deep Learning 이해

딥러닝의 학습 #1 (Backpropagation)

G3LU 2023. 12. 5. 17:04

 

 

※ 앞선 포스팅에서 딥러닝의 구조에 대해 소개하였습니다. 숨긴 글 참조 부탁드리겠습니다! 

 

더보기

 

신경망 학습 요약

 

1. 순전파 (Foward Propagation)

  • 뉴럴 네트워크 모델의 입력층부터 출력층까지 정방향으로 변수의 매개변수 (가중합 및 활성화 함수)에 대한 계산을 진행하는 것. 

 

2. 손실 함수 (Loss Function)

  • 실제 결과와 모델의 예측 결과 간의 차이를 계산하는 것 
  • 이 값을 최소화하도록 모델을 학습 시키는 것이 목표 

※ 손실 함수 내용이 궁금하시다면 이전 포스트를 참조해주세요.

 

 

3. 역전파 (Backward Propagation)

  • 손실 함수의 Gradient (기울기)를 계산하여, 출력층부터 입력층까지 역방향으로 전파 
  • 각 가중치와 편향에 대한 손실 함수의 편미분 값 계산
  • Gradient(기울기) 값은 손실을 줄이기 위해 각 가중치를 얼마나 조정해야하는지 나타냄 

 

 

4. 가중치 업데이트

  • 경사 하강법 또는 변종을 사용하여 가중치 업데이트 진행
  • 학습률(learning rate)를 사용하여 가중치 업데이트의 크기(보폭) 설정 
  • 역전파된 기울기의 반대 방향으로 가중치를 업데이트하면서 손실(error) 최소화 하고자 하는 것.

※ 경사하강법 내용이 궁금하시다면 이전 포스트를 참조해주세요.

 


NOTE:

Backpropagation is simply a method for calculating the partial derivative of the cost function with respect to all of the parameters. The actual optimization of parameters (training) is done by gradient descent or another more advanced optimization technique.


 

순전파 (Forward Propagation) 개념

 

 

순전파 (Forward Propagation)는 뉴럴 네트워크 모델의 입력층부터 출력층까지 정방향으로 변수들에 대해 계산하고 저장하는 것을 의미합니다. 즉, 모든 뉴런이 이전 층의 뉴런에서 수신한 정보에 변환 (가중합 및 활성화 함수)을 적용하여 다음 층(은닉층)의 뉴런으로 전송하는 방식입니다. 

 


순전파 원리

아래의 예시를 통해, 단계별로 어떻게 계산되는지 알아보도록 하겠습니다.  

 

 

 

입력 값(x)와 가중치(W)의 곱에 모두 더한 값에 편향 (Bias)를 더한 값을 의미합니다. 이는 가중합 (z)으로 표현할 수 있습니다. 

 

 

가중합을 계산하였다면, 활성화 함수를 적용합니다. 

 

 

 

이후, 동일한 방법을 사용하여 가중합과 활성화 함수가 적용된 값을 도출 해냅니다. 

 

 

최종적으로 손실함수(Loss Function)를 통해 네트워크의 예측 값과 실제 값의 차이를 파악합니다. 

 

 

예시를 통해 알아보았던 Forward Propagation (순전파)에는 고전적인 문제점이 존재합니다. 가중치를 랜덤하게 설정하는 순전파 네트워크로 인하여 오차가 생기는 구조를 가지고 있습니다. 이에 정확한 목표 값을 도출하는데에 한계가 있습니다. 

 


역전파 (Backward Propagation) 개념

 

이미지 출처: Analytics Vidhya

 

역전파는 신경망의 각 노드가 가지고 있는 매개변수(가중치/편향)를 학습시켜, 모델의 예측결과와 목표의 값에 대한 오차를 "0"에 수렴하게 결정하는 것 입니다. 여기에서 말하는 오차는 Loss Function (손실함수)의 함수 값이라고 할 수 있습니다. 

 

A라는 변수의 확률이 20%일 때, B가 일어날 확률이 100% 정확하게 예측할 수 있다면 머신러닝이 굳이 필요하지 않습니다. 그러나 현실에서는 A와 B라는 확률 간의 정확한 상관관계를 알지 못합니다. 따라서 이러한 상관성을 근사하는 함수를 개발하고 점진적으로 오차를 줄여나가는 것이 모델링의 목적입니다. 

 

하지만, 결과에 영향을 미치는 변수는 상당히 많습니다. 우리는 각 변수가 결과에 미치는 영향력을 알 수 있다면, 그만큼 정교하고 강력한 다변수함수를 근사할 수 있을 것 입니다.

 

즉, 우리는 각 변수에 따른 오차의 변화율을 계산하면 각 변수의 영향력에 대한 정보를 얻을 수 있습니다. 여기에서 말하는 오차의 변화율이란, 손실함수의 기울기(Gradient) 입니다. 따라서 손실함수는 미분이 가능해야 합니다. 

 

▶ 그냥 미분으로 풀면 안되는걸까??? 

 

 

물론 가능합니다. 하지만 784 x 100 x 10 구조에서 모든 파라미터의 weight/bias를 수치미분 하게된다면 총 123시간이 소요됩니다. 이를 해결하기 위해 고완된 것이 역전파입니다.


역전파 (Backward Propagation)  원리

 

 

위와 같은 그림에서 계산해야 하는 각 변수의 영향력은 r1 ,r2, r3 이고 손실함수는 L(x) = z 입니다.  이와 같은 사실을 통해 식을 도출해낼 수 있습니다. 

 

 

순전파 계산은 매우 간단하였는데, 역전파 (기울기 계산)은 생각보다 복잡합니다. 변수의 개수가 조금만 더 많아진다면, 위와 같은 그림처럼 식을 도출해는 것은 거의 불가능할 것 입니다. 따라서, 이러한 문제점을 해결하고자 연쇄법칙 (Chain Rule) 사용할 것 입니다. 

 

 

빠르게 연쇄법칙에 대해 알아보고 넘어가도록 하겠습니다. 숨긴 글을 참고해주세요! 

더보기

합성함수 : 여러 함수가 하나의 함수로 구성된 것을 뜻함.

예를 들어, z = (x + y)^2 라는 함수는 아래와 같이 두 개의 식으로 됩니다.

 

 

연쇄법칙 :  합성 함수의 미분을 구성하는 각 함수의 미분의 곱으로 표현할 수 있음. 

예를 들어, x에 대한 z의 미분t에 대한 z의미분과 x에 대한 t의 미분의 곱으로 표현 가능함.  

 

 그렇다면, 연쇄법칙을 사용하여 x에 대한 z의 미분을 구해보도록 하겠습니다. 

 

이러한 성질을 사용하여, 역전파의 기울기를 계산하게 됩니다. 

 

개별 연산을 각각의 함수로 취급하게 된다면, 손실함수도 하나의 합성함수로 표현할 수 있게 됩니다. 이에 합성함수의 미분 (편미분)을 사용하여 복잡했던 미분 계산을 아래와 같이 표현할 수 있습니다.