경사 하강법 — 손계산 마스터

시험 출제 1순위. 이 페이지에서 단변수 → 다변수까지 손으로 풀어내는 패턴을 완전히 익히고, 다음 페이지(선형 회귀)에서 사이킷런이 같은 일을 자동으로 해주는 걸 봅니다.

선수 지식: 미분 · 편미분 · 그래디언트 의 거듭제곱 미분 + 체인룰 + 편미분.


1. 경사 하강법이란 (한 줄)

현재 위치에서 기울기 반대 방향으로 한 걸음씩 이동하여 함수의 최솟값을 찾는다.

수식 한 줄:

여기서:

  • θ 는 우리가 갱신하고 싶은 파라미터 (선형회귀에선 w, b)
  • η (에타) 는 학습률 (한 걸음의 보폭)
  • ∂E/∂θ|_{θ=θ_old} 는 "현재 위치에서의 기울기"

💡 기호 |_{θ=θ_old} 는 "θ 자리에 θ_old 값을 대입하라" 는 뜻. 일반식에서 변수에 구체 값을 넣으라는 표시.


2. 단변수 손계산 — 가장 단순한 형태

2.1 Setup

오차함수 E(w) = (w − 2)² + 1. 미분 dE/dw = 2(w − 2) (체인룰). 초기값 w₀ = 3, 학습률 η = 0.1.

2.2 Epoch 1

Step 1. 현재 위치 w = 3 에서 기울기 계산:

Step 2. 갱신식에 대입:

2.3 Epoch 2 — 같은 식, w 자리만 갱신된 값으로

2.4 Epoch 3

📈 수렴: 3 → 2.8 → 2.64 → 2.512 → ... 정답 w = 2 에 점점 가까워짐. 매 epoch 마다 기울기가 작아져 자동으로 보폭도 줄어듦 (1.6 → 1.28 → 1.024 → ...).

2.5 학습률의 효과

η결과처방
너무 작음 (0.00001)수렴 너무 느림올림
적절 (0.01 ~ 0.1)정상 수렴유지
너무 큼 (1.0+)진동 / 발산내림

3. 다변수 (w, b) 동시 갱신 ⭐ 시험 단골

3.1 가설과 손실

선형회귀 ŷ = w·x + b, MSE 손실:

3.2 두 편미분 — 한 단계씩 풀이

w 로 편미분. 합과 미분 순서 교환 + 체인룰:

  • 바깥 미분: 2 · (wx_i + b − y_i)
  • 안쪽 미분 ∂(wx_i + b − y_i)/∂w = x_i (b, y_i 는 상수)

b 로 편미분. 안쪽 미분만 다름: ∂(wx_i + b − y_i)/∂b = 1

💡 두 식의 차이는 단 한 곳 — 안쪽 미분이 x_i 인지 1 인지. 그래서 손계산 표에서 "x·E 합""E 합" 두 칸이 등장.

3.3 갱신식 (실전 형태)

상수배 2/n 은 학습률 η 에 흡수되므로:

(E_i = ŷ_i − y_i)

3.4 코드와의 대응

PYTHON
y_hat = w * X + b              # 예측값 벡터
error = y_hat - y              # E = ŷ − y  (부호 주의!)
 
w = w - lr * (error * X).sum() # ∑ x·E
b = b - lr * error.sum()       # ∑ E

⚠️ 부호 주의: E = ŷ − y 정의면 위 식. 만약 교재가 E = y − ŷ 로 정의하면 부호가 뒤집혀 w ← w + η · Σ x·E 가 됨. 시험에서 어느 정의를 쓰는지 먼저 확인.


4. 5점 데이터 epoch 1 손계산 — 시험 단골 패턴

Setup

  • X = [1, 4.5, 9, 10, 13]
  • Y = [0, 0.2, 2.5, 5.4, 7.3]
  • 초기값 w = 0, b = 0
  • 학습률 η = 0.005

Step 1 — 예측값

ŷ = 0·x + 0 = 0 이므로 5개 모두 0.

Step 2 — 오차표

ixyŷE = ŷ − yx · E
110000
24.50.20−0.2−0.9
392.50−2.5−22.5
4105.40−5.4−54.0
5137.30−7.3−94.9
Σ E = −15.4Σ x·E = −172.3

Step 3 — w, b 동시 업데이트

표의 두 합계 칸을 갱신식에 꽂아넣기:

→ epoch 1 결과: w ≈ 0.86, b ≈ 0.077.

💡 부호 직관: 합계가 음수 → η 곱해도 음수 → 빼면 양수가 더해짐 → w, b 가 0 에서 커짐. 오차가 "예측이 너무 작다"는 신호 → 경사 하강법이 자연스럽게 w, b 를 키움.

💡 시험 팁: 표만 정확히 채우면 마지막 두 줄은 단순 곱셈. 두 합계 칸이 핵심 (오차 합 → b 업데이트, 오차·x 합 → w 업데이트).


5. 직접 풀어보기 ⭐⭐⭐

5.1 단변수 풀이 (E = (w−2)² + 1, η = 0.1, w₀ = 3)

Quiz

단변수 경사 하강법 (E = (w-2)² + 1)

Q 1 / 4

[Step 1] 1 epoch 후의 w₁ 값은? (소수)

5.2 다변수 풀이 — 새 데이터 ①

Setup: X = [1, 3, 5], Y = [2, 4, 8], w = 0, b = 0, η = 0.01

Quiz

다변수 (w, b) 갱신 — 데이터 ①

Q 1 / 7

[Step 1] 초기 예측값 ŷ_1, ŷ_2, ŷ_3 의 모든 값은 같다. 그 값은?

5.3 다변수 풀이 — 새 데이터 ②

Setup: X = [2, 4, 6, 10], Y = [1, 3, 6, 8], w = 0, b = 0, η = 0.01

Quiz

다변수 (w, b) 갱신 — 데이터 ②

Q 1 / 4

[Step 2] Σ E (오차의 합) 의 값은? (정수, 부호 포함)


6. 인터랙티브 데모 — η 의 효과 직접 보기

η 슬라이더를 움직이면 너무 작거나 큰 학습률의 결과를 눈으로 확인할 수 있습니다. (단변수 MSE 곡선)

경사 하강법 — MSE 곡선을 따라 내려가 보기

실습
wMSE(w)min w≈0.85
w (현재)
1.600
MSE
3.218
접선 기울기 ∂E/∂w
11.640
step
0
0.050

학습률이 너무 작으면 수렴이 느리고, 너무 크면 진동 · 발산. 최적 η 는 보통 0.01 ~ 0.1 범위. 매 스텝 w ← w − η·∂E/∂w 를 수행합니다.

실험 과제:

  • η 를 0.001 로 낮추고 재생 → 수렴 너무 느림
  • η 를 0.4 이상으로 올리고 재생 → 진동 / 발산
  • η 를 0.05 정도에서 → 부드럽게 최적점 수렴

🔗 다음 학습