선형회귀와 경사하강법을 숫자 하나로 이해하기
결론부터 말하면, 경사하강법은 현재 예측이 정답에서 얼마나 벗어났는지 계산하고, 그 오차가 줄어드는 방향으로 가중치를 조금 옮기는 반복 계산이다.
이 글에서는 y = 2x인 네 쌍의 숫자만 사용한다. 시작 가중치는 0, 학습률은 0.05다. 직접 실행한 표에서 가중치는 0 → 1.5 → 1.875 → 1.998로 움직이고 평균제곱오차는 30 → 1.875 → 0.117188 → 0.000029로 줄었다.
숫자가 단순하다고 실제 모델의 모든 문제가 사라지는 것은 아니다. 이 예제의 목적은 선형회귀의 예측, 오차, 기울기와 학습률이 한 번의 반복에서 어떤 역할을 하는지 분리해 보는 것이다.
이 글로 해결할 수 있는 것
- 가중치가 무엇인지 숫자 하나로 설명할 수 있다.
- 기울기의 부호가 업데이트 방향을 정하는 이유를 이해한다.
- 학습률이 너무 크거나 작을 때 무엇을 점검할지 안다.
실행 환경과 검증 방법
2026-08-22 UTC에 Python 표준 라이브러리만 사용하는 content/evidence/gradient_descent_demo.py를 실행했다. 외부 데이터나 난수는 사용하지 않아 같은 코드에서는 결과가 결정적이다.
python3 content/evidence/gradient_descent_demo.py예측은 가중치 하나에서 시작한다
이 예제의 예측식은 예측값 = 가중치 × x다. 시작 가중치가 0이면 모든 예측은 0이다. 정답은 2, 4, 6, 8이므로 평균제곱오차는 30이다.
첫 번째 기울기를 계산한다
평균제곱오차를 가중치에 대해 미분한 값은 처음에 -30이다. 업데이트식 새 가중치 = 기존 가중치 - 학습률 × 기울기에 넣으면 0 - 0.05 × (-30) = 1.5가 된다. 기울기가 음수라 가중치는 커지는 방향으로 움직였다.
실제 실행 결과
| 반복 | 가중치 | 평균제곱오차 | 기울기 |
|---|---|---|---|
| 0 | 0 | 30 | -30 |
| 1 | 1.5 | 1.875 | -7.5 |
| 2 | 1.875 | 0.117188 | -1.875 |
| 5 | 1.998047 | 0.000029 | -0.029297 |
| 20 | 2 | 0 | 0에 수렴 |
학습률은 보폭이다
학습률 0.05는 기울기의 5%만큼 이동한다는 뜻이다. 너무 작으면 같은 방향으로 많은 반복이 필요하고, 너무 크면 최솟값을 지나 반대편으로 튀거나 발산할 수 있다. 학습률은 정확도를 높이는 마법 숫자가 아니라 업데이트 보폭이다.
결과의 한계
잡음이 없고 절편도 0이며 특성이 하나뿐인 교육용 데이터다. 실제 데이터에서는 절편, 여러 특성, 스케일 차이, 이상치, 검증 데이터와 과적합을 함께 다뤄야 한다. 이 결과로 실제 예측 성능을 주장할 수 없다.
다음 단계
다음 글에서는 전처리 통계를 시험 데이터에서 다시 학습할 때 평가가 왜 왜곡되는지 StandardScaler 숫자로 확인한다.
출처와 변경 이력
- 실행 코드: 저장소
content/evidence/gradient_descent_demo.py - 최종 검토: 2026-08-22
- 2026-08-22: 최초 실행 결과와 한계 기록