[AI] 역전파(Backpropagation)

[AI] 역전파(Backpropagation)

태그
AI
math
algorithm
생성 일시
Apr 22, 2024 04:02 AM
최종 편집 일시
Last updated April 24, 2024
Date

서론

인공신경망의 핵심 학습 방법 중 하나인 역전파(Backpropagation)는 딥러닝에서 매우 중요한 알고리즘 이다. 복잡한 신경망에서도 효과적으로 가중치를 조정하여 예측 정확도를 높이는 이 기법을 자세히 알아본다.

기본 원리

역전파는 신경망의 출력값과 실제값 사이의 오차를 최소화하기 위해 가중치를 조정하는 방법이다. 이 알고리즘은 출력층에서 입력층으로 오차를 거슬러 올라가면서 각 노드의 가중치를 조정하며, 간략한 과정은 다음과 같다.
  1. 순전파(Propagation) 본 게시글은 순전파에 대해 이해하고 있음을 가정함
      • 각 층의 노드는 이전 층의 출력과 해당 노드의 가중치를 사용하여 활성화 함수를 통과한 결과를 다음 층으로 전달함. → 순전파로 예측된 결과를 바탕으로 오류를 계산함
  1. 오차 계산:
      • 신경망의 최종 출력값과 실제 목표값 사이의 오차를 계산한다. → 여기선 평균 제곱 오차(MSE)를 사용
  1. 그래디언트 계산:
      • 오차를 가중치에 대한 함수로 보고, 각 가중치에 대해 오차의 편미분을 계산하고, 이를 그래디언트 라고 한다.
  1. 가중치 업데이트(경사 하강법, gradient descent):
      • 계산된 그래디언트를 사용하여 가중치를 업데이트한다. 일반적으로 학습률(Learning Rate)을 곱한 후 기존 가중치에서 빼주는 방식으로 조정한다.

세부 원리

순전파와 경사하강법, 활성화 함수에 대한 설명은 생략되어 있습니다.

오차 계산

평균 제곱 오차(Mean Squared Error, MSE)

오차를 계산하는 대표적인 손실 함수(loss fuction)으로는 MSE가 있다.
: 실제 값(정답) : 모델의 예측 값
이 함수는 예측 값과 실제 값 간의 오차의 제곱에 대한 평균을 계산한다. 이 지표는 예측의 정확성을 평가하는 데 사용되며, 값이 낮을수록 모델의 성능이 높다고 평가 된다.
이외에도 아래와 같이 다양한 종류의 손실 함수가 존재한다.
여러가지 손실 함수들
  • 평균 절대 오차 (Mean Absolute Error, MAE)
    • 회귀 문제에서 사용되며, 모든 오차에 동일한 가중치를 부여해 이상치에 덜 민감함. 미분이 불가한 지점이 있다.
  • 교차 엔트로피 손실 (Cross-Entropy Loss)
    • 분류 문제에서 사용되며, 두 확률 분포 사이의 차이를 측정.
  • 로그 손실 (Log Loss)
    • 이진 분류 문제에 사용되며, 교차 엔트로피 손실의 특수한 형태.
  • 허브 손실 (Huber Loss)
    • 회귀 문제에서 MSE와 MAE의 조합으로 이상치에 덜 민감(robust)하며 미분 가능한 장점을 가진다.
    • δ : 민감도를 조절하는 매개변수
       

그래디언트() 계산

서론

그래디언트 계산은 신경망의 핵심적인 부분으로, 이 단계에서 가중치에 대한 오차의 편미분을 계산한다. 이 편미분은 기울기(gradient)를 나타내며, 이 기울기의 반대 방향으로 가중치를 조정함으로써 오차를 줄이는 방향으로 가중치를 업데이트한다.
: 가중치 : 학습률(hyperparameter)

계산 (출력층)

이때, 를 바로 구할수 없으므로 다음과 같은 식을 이용한다.
: 활성화 함수를 통과하기 전에 계산된 값(순입력)
: 활성화 함수를 통해 계산된 값
: 손실 함수
위 과정을 아래와 같은 그림으로 나타낼 수 있다.
notion image
① 손실 함수 의 출력 에 대한 편미분 :
② 출력 의 순입력 에 대한 편미분 :
③ 순입력 의 가중치 에 대한 편미분 :

① : 계산

딥러닝은 feature간의 대략적인 비율을 판별하는 것이 목적이기 때문에 미분의 편의를 위해 MSE의 계수를 로 둘 수 있다.

② : 계산

활성화 함수를 라 한다면 아래와 같이 정리된다.

③ : 계산

: 출력층 노드 직전에 있는 레이어의 노드 수

결론

✔️
 

계산 (은닉층)

은닉층에서도 동일한 식을 이용하려 한다면, 한 가지 문제가 생긴다. 를 모르기 때문에 를 계산할 수가 없다는 점이다.
notion image
이 또한, 아래와 같이 편미분 식을 만든다면, 구할 수 있게 된다.
이 식은 위 이미지의 상황을 본떠 만든 것인데, 왼쪽 노드는 은닉층의 노드 를, 오른쪽 여러 개의 작은 노드는 각각 출력층 노드 를 의미한다.
이때, 이므로
: 이전 레이어(여기서는 출력층)의 집합
로 정리가 가능하다. 는 이전에 출력층에서 계산된 값()이기 때문에 계산이 가능해 진다.
남은 는 이전과 같으므로 이를 정리 한다면,

결론

✔️

다음 은닉층을 생각해 보자.

다음 은닉층을 생각한다면, 신기한 특징을 발견하게 된다. 똑같이 를 모르기 때문에 를 계산하기 위해서 편미분 식을 세우게 되는데, 아래 그림과 같은 상황이 반복되게 되는것이다!
notion image
이번에는 오른쪽 작은 노드들을 은닉층 노드 k로 생각하면 된다.
위 식을 또 사용하게 된다면 는 이전 은닉층에서 계산된 값 를 사용하게 될것이고,
: 노드기준 노드가 바라보는 이전에 계산한 레이어 집합의 원소(노드)
⚠️
다음 은닉층에서… (펼칠 수 있습니다.)
위 식을 또 사용하게 된다면 는 이전 은닉층에서 계산된 값 를 사용하게 될것이고,
또 다음 은닉층에서…
위 식을 또 사용하게 된다면 는 이전 은닉층에서 계산된 값 를 사용하게 될것이고,
또또 다음 은닉층에서
위 식을 또 사용하게 된다면 는 이전 은닉층에서 계산된 값 를 사용하게 될것이고,
또또또 다음 은닉층에서…
위 식을 또 사용하게 된다면 는 이전 은닉층에서 계산된 값 를 사용하게 될것이고,
아무튼
귀납적임 (출력층에 도달하면 사용)
가 끊임없이 사용된다는 것을 알 수 있다. 이 식을 많은 문헌에서 로 표현한다.

딥러닝의

위 말을 정리하면 델타는 다음과 같다.
를 이용해서 역전파(Backpropagation)의 그래디언트를 일반화 할 수 있다.
: 현재 노드 : 앞에 있는(역전파 기준으로는 다음에 계산될) 노드

결론

이제 위에서 계산된 그래디언트를 아래 식에 적용하면, 가장 기본적인 딥러닝 학습법이 완성된다!
변수 정리(펼치기)
: 현재 노드 : 앞에 있는(역전파 기준으로는 다음에 계산될) 노드 : 뒤에 있는 (역전파 기준으로는 이전에 계산된) 노드 : 의 가중치 : 학습률(hyperparameter) : 손실 함수 : 활성화 함수를 통과하기 전에 계산된 값(순입력)
: 활성화 함수를 통해 계산된 값 : 번째 노드의 실제 값(정답)
저 단순한 식이 기초가 되어, 오늘날 우리가 상상조차 못 했던 문제들을 해결하고 있다는 것이 신기하지 않은가?
참고문헌
천인국. (2021). 딥러닝 EXPRESS. 생능출판사. pp. 214-224.