본문 바로가기
인공지능/Basic AI

인공지능(AI) 입문하기[4] - 역전파 알고리즘과 최적화

by Sangwoo Seo 2025. 8. 30.

역전파 알고리즘

1974년, Paul Werbos는 “역전파(Backpropagation)”라는 알고리즘의 핵심 개념을 논문으로 제안했습니다. 1986년 Geoffrey Hinton 등 연구진이 역전파 알고리즘을 실제 다층 퍼셉트론(MLP)에 적용해, 신경망이 복잡한 비선형 함수도 스스로 자동으로 학습할 수 있음을 실험적으로 입증했습니다. 이 연구로 인공신경망은 “매우 복잡한 문제조차 계층적 구조 내에서 스스로 최적의 가중치 조합을 찾아가며 학습할 수 있다”는 사실이 널리 알려지고, 딥러닝 시대의 핵심 토대가 마련되었습니다.

역전파 알고리즘 도식도

신경망 학습의 전체 흐름: 순전파 → 오차 계산 → 역전파 → 파라미터 업데이트

1. 순전파 과정(Feedforward)
신경망에 하나의 데이터 샘플이 입력되면, 입력층 → 여러 은닉층 → 출력층까지 차례로 정보를 전달합니다. 각 뉴런에서는 입력값에 각 가중치($ w $)를 곱하고, 편향($ b $)을 더한 뒤, 활성화 함수($ f $)를 거쳐 결과를 출력합니다. 이 과정을 네트워크 전체에서 반복해 최종 예측 값(출력층 결과)을 구합니다.


2. 오차 계산(Loss Calculation)
출력층에서 계산된 예측 값과 실제 정답(라벨)의 차이를 오차(Loss) 함수로 계산합니다. 예를 들어, 평균제곱오차(MSE)

$$ Loss = (예측값 − 실제값)^2 $$

이 Loss 값은 "신경망이 현재 얼마나 틀렸는가?"를 수치적으로 평가하는 기준입니다.

3. 오차의 역전파(Backpropagation)
여기서 신경망 학습의 진짜 핵심이 시작됩니다. 오차를 출력층에서 입력층 방향(역방향)으로 전달해 각 가중치와 편향이 총 오차에 영향을 미치는 정도(기울기, gradient)를 역추적합니다. 구체적으로는 미분의 연쇄법칙(Chain Rule)을 이용하여, 출력층 오차가 바로 앞 은닉층, 그리고 그 앞의 은닉층... 입력층으로, 네트워크 전체를 따라 모든 파라미터별 미분값(기울기)를 자동으로, 정확히 계산합니다.


4. 가중치 및 편향 업데이트 (Gradient Descent)
역전파를 통해 계산된 각 가중치/편향별 기울기를 이용해, 경사하강법(Gradient Descent) 등 최적화 알고리즘으로 파라미터를 조정합니다.
$$ w ← w − α⋅∇Loss $$
여기서 $ α $는 학습률(learning rate)로, 한 번에 가중치가 얼마나 바뀔지 결정합니다.

 

이 과정을 여러 번 반복함에 따라 신경망 내부의 모든 파라미터가 점진적으로 더 나은 예측을 하도록 조정되고, 결국 신경망은 처음엔 어려웠던 복잡한 패턴마저 점점 더 잘 인식하고 예측할 수 있게 됩니다.

미분의 연쇄 법칙

연쇄법칙(chain rule)이란, 여러 함수가 순차적으로 '합성'되어 있을 때, 최종 출력의 미분(도함수, 변화율)을 입력 기준으로 계산하는 방법입니다. 예를 들어, $ y = f(g(x)) $처럼 함수가 합성된 경우,

$$ \frac{dx}{dy} = f′(g(x))⋅g′(x) $$

 

신경망에서는 입력부터 출력까지 수많은 ‘층(레이어)’을 통과하며, 각 층마다 가중치 곱, 편향 더하기, 활성화 함수 등 일련의 연산이 ‘차례대로 합성’되어 최종 결과에 도달합니다.

 

예시(3층 신경망):

  • 입력: $ x $
  • 1층: $ h_1 = f_1(x) $
  • 2층: $ h_2 = f_2(h_1) $
  • 3층: $ y = f_3(h_2) $

즉, 전체 구조는 $ y = f_3(f_2(f_1(x))) $ 의 합성함수 형태입니다.

이 구조에서는, 입력 $ x $의 변화가 최종 출력 $ y $에 어떤 영향을 미치는지 알고 싶다면 아래와 같이 각 층별 도함수를 차례로 ‘곱’하는 연산이 필요합니다.

$$ \frac{dy}{dx} = \frac{dy}{dh_2} ⋅ \frac{dh_2}{dh_1} ⋅ \frac{dh_1}{dx} $$

역전파에서 연쇄법칙

신경망이 학습하는 과정은 예측값이 실제값에 가까워지도록 각 파라미터(가중치와 편향)를 조금씩 조정해 나아가는 작업입니다. 이때 연쇄법칙이 없으면, 여러 층(은닉층·활성화·가중치 등)의 조합을 역으로 추적하는 것이 불가능합니다. 실제로는, 예측 오차($ L $)와 출력($ y $), 그리고 각 층의 입력/가중치/활성화 함수를 모두 이어붙여 아래와 같은 식으로 표현할 수 있습니다.

$$ \frac{\sigma L}{\sigma w_1} = \frac{\sigma L}{\sigma y} ⋅ \frac{\sigma y}{\sigma h_2} ⋅ \frac{\sigma h_2}{\sigma h_1} ⋅ \frac{\sigma h_1 }{ \sigma w_1 } $$

  • $ \frac{\sigma L}{\sigma y} $: 출력값 $ y $가 바뀔 때 Loss가 얼마나 변하는지
  • $ \frac{\sigma y}{\sigma h_2} $: 2층 은닉값이 바뀌면 출력값이 어떻게 변하는지
  • $ \frac{\sigma h_2}{\sigma h_1} $: 1층 은닉값이 2층에 어떤 영향을 주는지
  • $ \frac{\sigma h_1 }{ \sigma w_1 } $: 1층 가중치가 바뀌면, 해당 층의 은닉값이 어떻게 변하는지

즉, 출력에서 입력층까지 미분값들을 연달아 곱해나가며 기울기를 역으로 전파합니다. 이런 연쇄법칙이 적용되지 않으면, 오차가 각 가중치 변화에 어떤 영향을 주는지 알 수 없어, 신경망의 ‘학습’ 자체가 불가능합니다. 연쇄법칙 덕분에, 최종 오차가 여러 단계를 통과해 각 파라미터에 미치는 영향(기울기)를 정확하게 계산할 수 있고, 역전파 알고리즘이 실제 여러 층을 가진 네트워크에 정확히 동작할 수 있습니다.

손실 함수와 비용 함수

손실 함수(Loss Function) – “개별 데이터가 얼마나 틀렸는가?”

손실 함수는 신경망이 한 샘플(개별 데이터)에 대해 내놓은 예측값과 실제값(정답) 사이의 오차를, 수치로 계산해주는 함수이자, 학습이 진행되고 있을 때, “이 데이터 하나를 신경망이 얼마나 정확히 맞추고 있는지” 즉시 평가하는 역할을 합니다.

문제 유형별 대표적인 손실 함수

1. 회귀 문제
평균 제곱 오차(Mean Squared Error, MSE): 예측값과 실제값의 차이를 제곱해서 평균한 식입니다. 큰 오차일수록 더 큰 패널티를 부과하여 이상치(outlier)에 민감하다는 특징을 가지고 있습니다.

$$ MSE=(y_i − \hat{y_i})^2 $$


평균 절대 오차(Mean Absolute Error, MAE): 예측값과 실제값 차이의 절댓값 평균한 식입니다. 직관적으로, 실제값과 예측값의 크기로 해석이 단순하고, MSE보다 이상치에 덜 민감합니다.

$$ MAE = | y_i − \hat{y_i} | $$

2. 분류 문제
이진 교차 엔트로피(Binary Cross Entropy): 예측이 0 또는 1(이진분류)일 때, 실제 정답과 얼마나 일치하는지 평가합니다.

$$ −[ylog⁡(\hat{y})+(1−y)log⁡(1−\hat{y})] $$


범주형 교차 엔트로피(Categorical Cross Entropy): 여러 클래스 중 하나를 맞추는 분류(다중분류) 문제에서 사용하며, 각각의 예측 확률과 정답 레이블 간의 차이를 평가합니다.
$$ −∑_{k=1}^{K}y_klog⁡(\hat{y_k}) $$

비용 함수(Cost Function) – “모델 전체의 성능을 한 번에 평가”

비용 함수는 신경망 전체 데이터 셋에 대한 손실 함수 값의 평균(혹은 합)을 구한 것으로, 단일 샘플의 손실이 아닌, 전체 데이터에 대해 전반적으로 예측이 얼마나 잘 되고 있는지 “모델 성능”의 수치적 척도 역할을 합니다. 학습 과정에서 실제 파라미터(가중치, 편향 등) 업데이트 시에도, 이 비용 함수의 값을 최소화하도록 모델 전체를 조정(최적화)하게 됩니다. 식은 아래와 같습니다.

$$ Cost Function= \frac{1}{N}∑_{i=1}^N Loss(y_i , \hat{y_i}) $$

즉, 비용 함수는 개별 손실함수의 전체 평균입니다.

 

정리하자면, 손실 및 비용 함수는 모든 신경망 학습의 “평가 기준”이자 “실질적 목적 함수”로 동작합니다

  • 손실 함수(Loss):개별 데이터의 예측 오차를 수치로 측정.
  • 비용 함수(Cost):모든 데이터를 대상으로 손실 함수 값의 평균·합산, 신경망이 실제로 “최소화하려고 학습·최적화하는 목표 값”

최적화 알고리즘(Optimizer Algorithm)

최적화 알고리즘(Optimizer Algorithm)은 신경망 학습에서 손실 함수 값이 최소가 되도록 모든 파라미터(가중치, 편향 등)를 자동으로 반복 조정하는 방법입니다. 여러가지 최적화 알고리즘 중에 가장 널리 쓰인 방법이 바로 경사하강법(Gradient Descent)입니다.

 

미분이 0이 되는 지점 = 손실함수가 최소가 되는 지점

앞서 언급했듯이 신경망 학습의 핵심 목적은 손실 함수(loss function)의 값이 가장 작은 파라미터(가중치, 편향 등) 조합을 찾는 것입니다. 손실 함수는 모든 예측에서 실제값과 예측값의 차이를 수치로 평가하며, 이 값이 작을수록 모델의 예측이 실제에 더 가까워졌다는 의미입니다.

 

손실 함수를 그래프로 생각하면, 각 파라미터 값($ x $축)에 따라 손실함수의 값($ y $축)이 매끄럽게 변합니다. 그래프상의 '점'에서 미분을 계산하면, '기울기가 양수'면 함수가 증가 방향(오차가 커지는 방향), '기울기가 음수'면 함수가 감소 방향(오차가 작아지는 방향)임을 알려줍니다. 경사하강법은 이 기울기 값의 반대 방향으로 파라미터를 조금씩 이동시켜, 손실 함수가 지속적으로 줄어드는(내려가는) 쪽으로 학습을 진행합니다.

경사하강 예시

손실 함수가 '최소'가 되는 지점은, 그래프 상에서 더 이상 내려갈 수 없는 바닥 지점(최저점, 최적점, 최소값)입니다. 이때 함수는 더 이상 더 내려갈 기울기가 없으므로, 미분값(기울기)이 0이 됩니다.

 

즉, 파라미터를 바꾸어도 손실 값이 더 줄어들지 않는 안정된 점(바닥점)을 찾는 과정이 바로 '최적화'입니다.

 

경사하강법은 '미분=0'이 되는 점에 도달할 때까지 반복적으로 파라미터 값을 업데이트합니다. 경사 하강법은 손실 함수의 각 파라미터에 대한 기울기를 계산하여, 오차가 가장 빠르게 줄어드는 방향(기울기의 반대 방향)으로 파라미터를 조금씩 이동시키며 학습이 진행됩니다. 수식적 작동 원리는 다음과 같습니다.

손실 함수 $ L(θ) $에 대해, 각 스텝에서 파라미터 업데이트:

$$ θ_{new} ← θ_{old}−α\frac{∂L}{∂θ} $$

여기서 α는 학습률(learning rate)로, 너무 크게 하면 불안정하고, 너무 작으면 수렴이 느립니다.

미분 가능한 손실함수

신경망은 역전파 알고리즘을 통해 학습합니다. 이 과정에서 경사하강법으로 파라미터를 최적화하려면 각 파라미터에 대한 기울기를 계산해야 합니다. 활성화 함수가 미분 불가능하면 기울기 계산이 불가능해져 파라미터 업데이트가 이루어지지 않습니다. 특히 다층 신경망에서는 모든 층의 활성화 함수가 미분 가능해야 전체 네트워크가 정상적으로 학습할 수 있습니다. 이러한 이유로, 초기 활성화 함수인 계단 함수를 사용하지 않고 미분 가능한 활성화 함수들이 신경망에 필수로 도입되었습니다.

대표적인 미분 가능한 활성화 함수

1. 시그모이드 함수 (Sigmoid Function, $ σ(x) $)

$$ σ(x) = \frac{1}{1+e^{−x}} $$

출력 값이 항상 0과 1 사이로 제한되어, ‘확률적 해석’이 가능합니다. 입력값이 아주 작거나 아주 큰 경우, 미분값(기울기)가 0에 가까워지는 기울기 소실(Vanishing Gradient) 문제가 생깁니다. 이 때문에 깊은 층을 가진 네트워크에서는 학습이 어려워지는 한계가 존재합니다. 그래프를 보면, 양 끝단에서 변동이 거의 없고 중앙 부분에서만 미분값이 의미 있게 나타납니다.

 

주로 이진 분류 문제, 확률적 출력값을 요구하는 곳에서 초기 신경망에 많이 사용되었습니다.

시그모이드 함수


2. 하이퍼볼릭 탄젠트 함수 (Hyperbolic Tangent Function, Tanh)
$$ tanh(x) = \frac{ex−e^{−x}}{ex+e^{−x}} $$
출력 값이 -1에서 1 사이로 결정되어, 시그모이드와 달리 ‘중앙값이 0’에 가까운 분포를 보입니다. 중앙값이 0이므로, 학습 시 파라미터의 이동·수렴 속도가 더 빠르고 안정적으로 이뤄지는 효과가 있습니다. 하지만 입력값이 매우 크거나 작을 때, 시그모이드 함수와 마찬가지로 기울기 소실 문제가 발생합니다. 즉, 깊은 네트워크에서는 여전히 학습이 어렵습니다. 이미지 상에서 학습곡선이 중앙을 기준으로 ‘빠르게’ 변화하다가 양 끝단에서 평평해집니다.

시그모이드보다 나은 성질로 널리 쓰였으나, 역시 깊은 층 구조에서는 한계가 있습니다.

하이퍼볼릭 탄젠트 함수

 

경사 하강법 계열의 대표적 알고리즘

확률적 경사 하강법(SGD, Stochastic Gradient Descent): 전체 데이터가 아니라 매번 한 개의 샘플(혹은 아주 소규모 배치 샘플)만으로 기울기를 계산·업데이트합니다. 계산이 매우 효율적이고 작은 데이터를 빠르게 활용할 수 있지만, 자주 업데이트하여 진동이 클 수 있습니다.
미니배치 경사 하강법(Mini-batch Gradient Descent): 전체 데이터를 여러 개의 작은 배치로 나누어 각 배치 단위로 기울기 계산·업데이트. 실제 실무·딥러닝 현장에서 가장 널리 쓰이며, 안정성(진동이 줄어듦)과 효율성(병렬처리도 가능)을 모두 잡은 방법입니다.

적응형(Adaptive) 최적화 알고리즘

기존 경사하강법은 모든 파라미터에 동일한 학습률을 적용하지만, 적응형 알고리즘은 각 파라미터(가중치 등)의 값 변화, 기울기 크기 등에 따라 스스로 학습률을 조정하여 더 빠르고 안정적으로 수렴할 수 있게 설계되어 있습니다.

 

대표적 알고리즘

  • Adagrad: 각 파라미터별로 과거 기울기의 제곱합을 누적, 드물게 업데이트되는 파라미터는 크게, 자주 업데이트되는 것은 작게 조정(자동으로 학습률 축소).
  • RMSProp: Adagrad의 단점(학습률 급격 저하)을 보완. 최근 기울기 값만 반영(이동평균), 학습률이 일정 수준 이하로 급격히 감소하지 않음
  • Adam(Adaptive Moment Estimation): RMSProp에 모멘텀(momentum)까지 결합, 1차/2차 모멘트(평균·분산)를 모두 고려해 학습률을 자동 조절, 특별한 튜닝 없이도 다양한 딥러닝 문제에서 가장 널리 쓰임

여러 최적화 알고리즘

마무리: 신경망 기초 이론 핵심 정리

인공신경망의 기본 원리와 구조, 그리고 신경망이 스스로 학습하는 원리까지 설명하였습니다.

 

선형 회귀부터 시작해, 단층 퍼셉트론의 선형 분리 한계와 다층 퍼셉트론의 확장, 활성화 함수가 왜 필요한지, 비선형성을 통해 신경망이 복잡한 패턴을 배우는 이유, 역전파 알고리즘과 미분의 연쇄 법칙이 신경망 학습의 핵심임을 살펴봤으며, 손실 함수와 비용 함수로 모델 성능을 평가하고, 경사하강법 계열 최적화 알고리즘으로 파라미터를 반복 조정하는 과정까지 이해했습니다.

설명드린 개념이 현대 딥러닝 기술의 초석이며, 앞으로 심화된 딥러닝을 이해하는데 도움이 될 것입니다.