
역전파(Backpropagation) 설명: 신경망이 실제로 학습하는 방법
요약
신경망이 예측 오차를 바탕으로 가중치를 조정하며 학습하는 핵심 원리인 역전파(Backpropagation)를 설명합니다. 손실 함수를 통해 오차를 측정하고, 편미분을 이용해 각 가중치를 업데이트하는 과정을 다룹니다.
핵심 포인트
- 손실 함수를 통해 예측값과 실제값 사이의 오차를 수치화함
- 역전파는 손실 함수의 편미분을 계산하여 가중치 조정 방향을 결정함
- 가중치 업데이트를 통해 다음 예측의 정확도를 점진적으로 향상시킴
저의 "AI/ML 노트 재검토" 시리즈의 5번째 글입니다. 지금까지 이 시리즈에서는 ANN 구조, 순전파(forward propagation), 활성화 함수를 다루었으며, 이는 네트워크가 예측을 생성하기 위한 모든 장치들입니다. 이번 포스트는 나머지 절반, 즉 네트워크가 틀리는 것에서 실제로 어떻게 학습하는지를 다룹니다.
순전파가 해결하지 못하는 문제
순전파는 예측값을 제공합니다. 그 자체로는 이 예측값이 기본적으로 임의적인 추측일 뿐입니다. 가중치(weights)들은 본질적으로 임의적이기 때문입니다. 역전파(Backpropagation)는 이 예측값에 포함된 오차를 가져와 네트워크의 모든 개별 가중치를 조정하는 데 사용하며, 이를 통해 다음 예측값이 조금 더 좋아지도록 만듭니다.
1단계: 예측이 얼마나 틀렸는지 측정하기
이것이 바로 **손실 함수(loss function)**입니다. 간단하고 흔한 예로는 제곱 오차(squared error)가 있습니다:
Loss = (y - y_hat)^2
여기서 y는 실제/참값이고, y_hat은 네트워크의 예측값입니다. 차이를 제곱하는 이유는 두 가지입니다. 첫째, 예측값이 너무 높든 낮든 손실이 항상 양수가 되게 하고, 둘째, 더 큰 오차에 대해 작은 오차보다 불균형적으로 더 많은 페널티를 부과하기 위함입니다.
n개의 예시로 구성된 전체 데이터셋에 걸쳐 총 손실은 이 값을 모든 예시에 걸쳐 합산한 것입니다:
Loss = sum over i=1 to n of (y_i - y_hat_i)^2
노트에서 가져온 실습 예제
모델이 Play(2시간), Study(4시간), Sleep(8시간)에 투자된 시간을 기반으로 시험 합격 여부(1 = 합격)를 예측한다고 가정해 봅시다. 참값은 y = 1이지만, 네트워크의 현재 (미훈련된) 예측값은 y_hat = 0입니다.
노트에서 가져온 실습 예제
모델이 Play(2시간), Study(4시간), Sleep(8시간)에 투자된 시간을 기반으로 시험 합격 여부(1 = 합격)를 예측한다고 가정해 봅시다. 참값은 y = 1이지만, 네트워크의 현재 (미훈련된) 예측값은 y_hat = 0입니다.
Loss = (1 - 0)^2 = 1
여기서 손실이 1이라는 것은 이 특정 설정에서 발생할 수 있는 최악의 경우에 가깝습니다. 즉, 예측이 완전히 틀렸다는 의미입니다. 이것이 바로 역전파가 가중치를 수정하는 데 사용하는 신호입니다.
2단계: 각 가중치를 어느 방향으로 조정할지 결정하기
이 부분이 실제 "역방향 (backward)" 과정입니다. 네트워크의 모든 가중치에 대해, 역전파 (Backpropagation)는 해당 가중치에 대한 손실 함수의 편미분 (partial derivative of the loss with respect to that weight) 을 계산하며, 이는 dLoss/dw로 표기됩니다. 이 미분값은 두 가지 정보를 알려줍니다: 손실이 증가하는 방향이 어디인지, 그리고 해당 특정 가중치에 대해 손실이 얼마나 민감하게 반응하는지입니다.
업데이트 규칙은 네트워크의 모든 가중치에 대해 동일합니다:
w_new = w_old - learning_rate * (dLoss / dw)
마이너스(-) 부호에 주목하세요. 여러분은 항상 그래디언트 (gradient)의 extit{반대} 방향으로 가중치를 이동시킵니다. 왜냐하면 손실이 더 커지는 오르막길이 아니라, 더 낮은 손실을 향해 내리막길을 내려가고 싶기 때문입니다.
3단계: 수없이 반복하기
단 한 번의 업데이트로 가중치가 최적값에 근접하는 경우는 드뭅니다. 역전파는 수많은 학습 데이터 (training examples)와 데이터셋을 통과하는 수많은 반복 (passes) 과정을 거치며 모든 가중치에 대해 이 업데이트를 반복해서 수행합니다. 이를 통해 모든 가중치를 총 손실을 최소화하는 값, 즉 보통 손실 함수의 전역 최솟값 (global minimum) 이라고 불리는 지점을 향해 점진적으로 이동시킵니다.
학습률 (Learning rate)이 매우 중요한 이유
학습률 (위 공식의 lr)은 각 단계의 크기를 조절합니다. 이는 진정한 균형 잡기 과정입니다:
- 너무 높으면, 업데이트가 최솟값을 지나쳐 버립니다 (overshoot). 손실이 안정되지 않고 주변을 맴돌거나 심지어 발산 (diverge)할 수도 있습니다.
- 너무 낮으면, 학습이 매우 느려집니다. 기술적으로는 정확할지 몰라도 고통스러울 정도로 느리며, 진정한 전역 최솟값 (global minimum)을 찾는 대신 얕은 지역 최솟값 (local dip)에 갇혀버릴 수 있습니다.
작고 신중하게 선택된 학습률은 학습이 최솟값을 지나치지 않고 부드럽게 내려갈 수 있게 해줍니다.
이것이 중요한 이유
역전파 (Backpropagation)는 "딥러닝 (deep learning)"이 실제로 의미를 갖게 만드는 알고리즘입니다. 즉, 무작위로 초기화된 네트워크를 데이터로부터 진정으로 패턴을 학습한 네트워크로 변환하는 메커니즘입니다. 이 시리즈에서 지금까지 다룬 모든 아키텍처(그리고 앞으로 다룰 모든 아키텍처 — CNN, RNN, transformer)는 정확히 동일한 핵심 루프에 의존합니다: 예측하고, 오차를 측정하고, 이를 역방향으로 전파하고, 가중치 (weights)를 업데이트하고, 이를 반복하는 것입니다.
Original Note:
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기