경사 하강법 — 손계산 마스터
시험 출제 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 코드와의 대응
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 — 오차표
| i | x | y | ŷ | E = ŷ − y | x · E |
|---|---|---|---|---|---|
| 1 | 1 | 0 | 0 | 0 | 0 |
| 2 | 4.5 | 0.2 | 0 | −0.2 | −0.9 |
| 3 | 9 | 2.5 | 0 | −2.5 | −22.5 |
| 4 | 10 | 5.4 | 0 | −5.4 | −54.0 |
| 5 | 13 | 7.3 | 0 | −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)
단변수 경사 하강법 (E = (w-2)² + 1)
[Step 1] 1 epoch 후의 w₁ 값은? (소수)
5.2 다변수 풀이 — 새 데이터 ①
Setup: X = [1, 3, 5], Y = [2, 4, 8], w = 0, b = 0, η = 0.01
다변수 (w, b) 갱신 — 데이터 ①
[Step 1] 초기 예측값 ŷ_1, ŷ_2, ŷ_3 의 모든 값은 같다. 그 값은?
5.3 다변수 풀이 — 새 데이터 ②
Setup: X = [2, 4, 6, 10], Y = [1, 3, 6, 8], w = 0, b = 0, η = 0.01
다변수 (w, b) 갱신 — 데이터 ②
[Step 2] Σ E (오차의 합) 의 값은? (정수, 부호 포함)
6. 인터랙티브 데모 — η 의 효과 직접 보기
η 슬라이더를 움직이면 너무 작거나 큰 학습률의 결과를 눈으로 확인할 수 있습니다. (단변수 MSE 곡선)
경사 하강법 — MSE 곡선을 따라 내려가 보기
실습학습률이 너무 작으면 수렴이 느리고, 너무 크면 진동 · 발산. 최적 η 는 보통 0.01 ~ 0.1 범위. 매 스텝 w ← w − η·∂E/∂w 를 수행합니다.
실험 과제:
- η 를
0.001로 낮추고 재생 → 수렴 너무 느림 - η 를
0.4이상으로 올리고 재생 → 진동 / 발산 - η 를
0.05정도에서 → 부드럽게 최적점 수렴
🔗 다음 학습
- 선형 회귀 — 사이킷런으로 자동화 — 위 모든 손계산을 한 줄(
regr.fit(X, y))로 처리