Backpropagation 이해하기: Python 예제 — Part 3

발행: (2026년 1월 18일 오전 04:54 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

Recap (Part 2)

이전 글에서는 제곱 잔차 합 (SSR) 을 편향 (b_3) 에 대해 플롯하여 손실이 최소가 되는 지점을 시각화했습니다. 분홍색 곡선이 그 관계를 보여 주었으며, 그 곡선의 최저점이 최적 편향 값에 해당합니다.

Gradient Descent 를 이용한 최적 편향 찾기

많은 편향 값을 일일이 평가하는 대신, Gradient Descent 를 적용할 수 있습니다. 이를 위해서는 SSR을 (b_3) 에 대해 미분해야 합니다.

체인 룰을 이용한 미분

[ \frac{\partial \text{SSR}}{\partial b_3} = \sum_{i=1}^{n} \frac{\partial \text{SSR}}{\partial \hat{y}_i} \cdot \frac{\partial \hat{y}_i}{\partial b_3} ]

각 훈련 샘플에 대한 기여도는 다음과 같습니다:

[ -2 \times (y_i - \hat{y}_i) \times 1 ]

여기서 (y_i) 는 실제 목표값이고 (\hat{y}_i) 는 예측값이며 (편향에 대한 예측값의 미분은 1) 입니다.

첫 번째 반복 ( (b_3 = 0) )

입력 벡터 ([0, 1, 0]) 에 대해 모델은 다음과 같이 예측합니다:

Sample(y_i)(\hat{y}_i)
10-2.6
21-1.6
30-2.61

그라디언트는:

[ \begin{aligned} &-2 \times (0 - (-2.6)) \times 1 \ &;+; -2 \times (1 - (-1.6)) \times 1 \ &;+; -2 \times (0 - (-2.61)) \times 1 \ &= -15.7 \end{aligned} ]

학습률 (\alpha = 0.1) 을 사용하면:

[ \text{step size} = \text{gradient} \times \alpha = -15.7 \times 0.1 = -1.57 ]

[ b_3^{\text{new}} = b_3^{\text{old}} - \text{step size} = 0 - (-1.57) = 1.57 ]

새로운 예측을 나타내는 초록색 곡선이 이제 개선된 모습을 보입니다.

두 번째 반복 ( (b_3 = 1.57) )

예측값은 다음과 같이 바뀝니다:

Sample(y_i)(\hat{y}_i)
10-1.03
21-0.03
30-1.04

그라디언트:

[ \begin{aligned} &-2 \times (0 - (-1.03)) \times 1 \ &;+; -2 \times (1 - (-0.03)) \times 1 \ &;+; -2 \times (0 - (-1.04)) \times 1 \ &= -6.26 \end{aligned} ]

스텝 사이즈:

[ \text{step size} = -6.26 \times 0.1 = -0.626 ]

편향 업데이트:

[ b_3^{\text{new}} = 1.57 - (-0.626) = 2.19 ]

수렴

업데이트 과정을 반복하면 그라디언트 크기가 점점 작아집니다. (b_3 \approx 2.61) 일 때 그라디언트가 0에 가까워지며, 이는 손실이 최소에 도달했음을 의미합니다. 따라서 (b_3 = 2.61) 이 이 간단한 예제의 최적 편향입니다.

정리

Gradient Descent 는 전수조사 없이도 SSR 곡선의 최소점을 효율적으로 찾는 방법을 제공합니다. 그라디언트와 반대 방향으로 편향을 반복적으로 조정함으로써 우리는 빠르게 최적값에 수렴할 수 있습니다.

개념을 강화하기 위해 Python 노트북에서 직접 계산을 실험해 보세요.

Back to Blog

관련 글

더 보기 »

게시물을 웹앱으로

markdown !게시물용 커버 이미지 (웹앱) https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uplo...