몸무게로 키를 예측하는 가장 단순한 모델
딥러닝이 아무리 복잡해 보여도 그 출발점은 고등학교 때 배운 선형회귀( y = ax + b)와 같다. 몸무게(X)로 키(Y)를 예측한다고 하면, 우리가 구하고 싶은 것은 기울기 a와 절편 b — 이 둘을 딥러닝에서는 각각 가중치(Weight, W)와 편향(Bias, b)이라 부르고, 합쳐서 파라미터라고 한다.
식으로 쓰면 y = Wx + b다. x는 모델에 넣는 독립변수로 딥러닝에서는 Feature라 부르고, y는 예측하려는 종속변수로 Target이라 부른다.
작은 데이터셋으로 회귀선 읽기
한 사람의 몸무게만으로 키를 완벽하게 알 수는 없지만, 회귀의 입력과 출력 관계를 익히기에는 단순하고 직관적이다. 아래 예제 데이터는 실제 인구 통계가 아니라 계산 과정을 설명하기 위해 만든 작은 학습용 데이터셋이다. 각 행에서 몸무게가 , 키가 다.
몸무게 x (kg) | 키 y (cm) |
|---|---|
58 | 174 |
59 | 175 |
60 | 176 |
61 | 176 |
62 | 178 |
파란 점은 실제 관측값이고, 주황색 직선은 다섯 점과의 전체 오차가 가장 작도록 구한 회귀선이다. 점들이 정확히 한 직선 위에 있지 않아도 회귀는 데이터의 전반적인 증가 경향을 하나의 식으로 요약한다. 이 데이터에서 구한 식은 이다. 모자 기호가 붙은 는 실제값이 아니라 모델이 계산한 예측값이라는 뜻이다.
예를 들어 몸무게가 kg이면 모델의 예측은 cm이고 실제값은 176cm다. 두 값의 차이인 cm를 잔차(residual)라고 한다. 선형회귀 학습은 모든 데이터의 잔차를 함께 작게 만드는 가중치 와 편향 를 찾는 과정이다.
잔차를 제곱해 더하는 최소자승법
그래프의 보라색 점선은 같은 몸무게에서 회귀선이 예측한 값 와 실제 관측값 사이의 수직 거리다. 이 거리에 부호를 붙인 를 잔차라고 한다. 점이 회귀선 위에 있으면 잔차는 양수, 아래에 있으면 음수이며, 선 위에 정확히 놓이면 0이다.
잔차를 그대로 더하면 양수와 음수가 서로 상쇄된다. 그래서 최소자승법은 각 잔차를 제곱한 뒤 모두 더한 잔차제곱합(SSE)을 가장 작게 만드는 와 를 고른다.
제곱에는 세 가지 효과가 있다. 부호가 사라져 잔차가 상쇄되지 않고, 큰 오차에 더 큰 벌점을 주며, 목적함수가 미분하기 쉬운 매끄러운 곡선이 된다. 따라서 ‘최소자승’은 ‘잔차의 제곱합을 최소화한다’는 뜻이다.
MSE는 제곱합을 데이터 개수로 나눈 값
평균제곱오차(MSE)는 SSE를 데이터 개수 으로 나눈 평균이다. 같은 데이터에서는 양의 상수 으로 나누어도 최솟값을 만드는 회귀선은 같지만, 데이터 개수가 다른 실험끼리 손실 크기를 비교하기가 쉬워진다.
이 예제의 예측값은 차례로 174.0, 174.9, 175.8, 176.7, 177.6cm이고 잔차는 0.0, 0.1, 0.2, -0.7, 0.4cm다. 따라서 가 된다. MSE의 단위는 원래 단위의 제곱인 이다. 원래 단위인 cm로 해석하고 싶다면 MSE에 제곱근을 씌운 RMSE를 사용하며, 이 예제에서는 약 0.374cm다.
최적의 기울기와 절편을 한 번에 구하기
입력 변수가 하나인 단순 선형회귀에서는 SSE를 와 로 각각 미분해 0이 되는 지점을 풀면 다음 닫힌 해를 얻는다. 와 는 각각 입력과 실제값의 평균이다.
이 데이터에서는 , 이므로 , 을 얻는다. 이 회귀선은 평균점 을 지나며, 가능한 모든 직선 중 SSE와 MSE를 가장 작게 만든다.
파라미터는 어떻게 구할까: 5단계
W와 b는 처음부터 알 수 없다. 임의의 값을 넣어보고, 예측값과 실제값의 차이를 줄여가며 찾아낸다. 이 과정을 다섯 단계로 나눠보면 이후 딥러닝 전체 파이프라인의 틀이 그대로 보인다.
단계 | 내용 |
|---|---|
1. 데이터 정의 | Feature(x)와 Target(y) 데이터를 준비한다. |
2. 모델(가설) 정의 | y = Wx + b 형태의 식을 세우고 W, b를 임의의 값으로 초기화한다. |
3. 손실 함수 정의 | 예측값과 실제값의 차이를 수치로 재는 기준을 정한다 — 회귀에서는 흔히 MSE(Mean Squared Error)를 쓴다. |
4. 오차 최소화 | 손실이 최소가 되는 방향으로 파라미터를 조정한다. |
5. 파라미터 계산 | 오차가 충분히 작아진 최종 W, b로 회귀식을 확정한다. |
통계학의 선형회귀는 4단계에서 미분으로 손실을 한 번에 최소화하는 최소자승법(Least Squares Method)을 쓴다. 딥러닝은 같은 4단계를 경사하강법(Gradient Descent)으로 여러 번 반복해서 조금씩 접근한다는 점이 다르다. 다음 글에서 경사하강법을 자세히 다룬다.
통계적 회귀와 딥러닝, 같은 틀을 다르게 채운다
5단계의 틀은 같지만, 딥러닝은 여기에 세 가지를 더 얹는다.
단계 | 선형회귀(통계) | 딥러닝 |
|---|---|---|
예측값 계산 | Wx + b를 그대로 예측값으로 쓴다 | Wx + b에 활성 함수(Activation Function)를 씌워 비선형성을 더한다 |
오차 계산 | MSE(평균제곱오차)로 잔차를 계산 | 손실함수(Loss/Cost Function) — 회귀는 MSE, 분류는 Cross Entropy 등 목적에 맞게 선택 |
파라미터 업데이트 | 최소자승법으로 한 번에 최적해 계산 | 역전파(Backpropagation)로 손실이 줄어드는 방향을 구하고, Optimizer로 반복 업데이트 |
반복 | 필요 없음(닫힌 해) | 정해진 반복 횟수(Epoch)만큼 업데이트를 되풀이 |
즉 딥러닝은 “선형회귀 + 비선형성(활성 함수) + 반복 최적화(역전파·Optimizer·Epoch)”로 요약할 수 있다. 다음 글들에서 이 요소들을 하나씩 뜯어본다.
코드로 최소자승법 직접 구현하기
scikit-learn 없이 numpy만으로 최소자승법 공식을 직접 적용해, PDF의 몸무게-키 예시와 같은 구조의 데이터를 학습해본다.
import numpy as np
x = np.array([58, 59, 60, 61, 62], dtype=float) # 몸무게(Feature)
y = np.array([174, 175, 176, 176, 178], dtype=float) # 키(Target)
x_mean, y_mean = x.mean(), y.mean()
W = np.sum((x - x_mean) * (y - y_mean)) / np.sum((x - x_mean) ** 2)
b = y_mean - W * x_mean
y_pred = W * x + b
mse = np.mean((y - y_pred) ** 2)
print(f"W={W:.3f}, b={b:.3f}, MSE={mse:.3f}")
W=0.900, b=121.800, MSE=0.140
회귀식은 대략 y = 0.9x + 121.8로 구해졌고, 예측값과 실제값의 평균제곱오차(MSE)는 0.14로 매우 작다. 딥러닝에서는 이 W, b를 한 번에 계산하는 대신 경사하강법으로 조금씩 근사해간다 — 그 이유와 과정은 다음 글에서 다룬다.
정리
딥러닝의 예측 구조는 특별한 게 아니라 선형회귀 y = Wx + b에서 출발한다. 다섯 단계(데이터 정의 → 모델 정의 → 손실 정의 → 오차 최소화 → 파라미터 계산)의 틀은 통계와 딥러닝이 같지만, 딥러닝은 여기에 비선형 활성 함수, 역전파, Optimizer, 반복(Epoch)을 더해 더 복잡한 관계까지 학습할 수 있게 확장한 것이다.
참고 자료
Linear Regression — scikit-learn 공식 문서 — 최소자승법(Ordinary Least Squares)의 정의와 수식 (2026-08-07 확인)
댓글 0
댓글을 불러오는 중…