가장 단순한 학습 — 선형회귀를 끝까지

2026-05-04

1편부터 4편까지, 벡터·거리·확률·경사하강을 하나씩 세웠습니다. 지금까지는 도구를 벼린 셈이고, 이 편에서 그 도구들을 처음으로 하나의 완결된 학습에 합칩니다. 대상은 가장 단순한 학습, 선형회귀입니다.

모든 지도학습은 사실 같은 세 박자를 밟습니다.

  1. 모델을 놓는다 — 입력에서 출력으로 가는 함수의 꼴을 정한다.
  2. 손실을 정의한다 — 그 함수가 얼마나 틀렸는지를 하나의 숫자로 잰다.
  3. 손실을 최소화한다 — 가장 덜 틀리는 함수를 찾는다.

선형회귀는 이 삼박자가 가장 투명하게 드러나는 학습이에요. 그래서 처음 종합할 대상으로 이만한 게 없습니다.

규칙 — 학습은 모델을 놓고, 손실을 정의하고, 그 손실을 최소화하는 세 박자다. 선형회귀에서 이 셋이 앞 편의 도구로 정확히 어떻게 맞물리는지를 끝까지 본다.

첫째 박자 — 선형 모델을 놓다

선형회귀의 가설은 이름 그대로 선형입니다. 입력 특징 벡터 x=(x1,,xd)\mathbf{x} = (x_1, \dots, x_d)에 가중치를 곱해 더하고, 치우침 bb를 얹죠.

y^=w1x1++wdxd+b=wx+b\hat{y} = w_1 x_1 + \dots + w_d x_d + b = \mathbf{w}^\top \mathbf{x} + b

치우침 bb는 흔히 x\mathbf{x}에 상수 성분 11을 하나 더 붙여 w\mathbf{w} 안으로 흡수합니다(그러면 표기가 y^=wx\hat{y} = \mathbf{w}^\top\mathbf{x}로 깔끔해져요). 이제 1편데이터 행렬을 불러옵니다. 샘플 nn개를 행으로 쌓은 XRn×dX \in \mathbb{R}^{n \times d}에 가중치를 곱하면, 모든 예측이 한 번에 벡터로 나옵니다.

y^=Xw\hat{\mathbf{y}} = X\mathbf{w}

1편에서 "행렬은 선형변환"이라 했죠 — 여기서 XwX\mathbf{w}가 바로 그겁니다. 가중치 벡터 w\mathbf{w}를 예측 벡터 y^\hat{\mathbf{y}}로 보내는 선형변환. 모델이 이 한 줄에 다 담겼습니다.

둘째 박자 — 잔차의 제곱으로 손실을 재다

예측 y^i\hat{y}_i와 정답 yiy_i의 차이를 잔차 ri=yiy^ir_i = y_i - \hat{y}_i라 합니다. 얼마나 틀렸는지를 하나의 숫자로 모으는 가장 흔한 방법은 잔차를 제곱해 평균하는 것 — **평균제곱오차(MSE)**입니다.

L(w)=1ni=1n(yiwxi)2=1nyXw2L(\mathbf{w}) = \frac{1}{n}\sum_{i=1}^{n} \bigl(y_i - \mathbf{w}^\top\mathbf{x}_i\bigr)^2 = \frac{1}{n}\bigl\|\mathbf{y} - X\mathbf{w}\bigr\|^2

오른쪽 꼴을 보세요 — 이건 2편L2L_2 노름입니다. 손실은 결국 "정답 벡터 y\mathbf{y}와 예측 벡터 XwX\mathbf{w} 사이의 유클리드 거리(의 제곱)"예요. 모델을 좋게 만든다는 건 이 두 벡터를 가깝게 붙이는 것이고요. 2편에서 벼린 거리가 여기서 손실이 됩니다.

그런데 하필 왜 제곱일까요? 절댓값을 더할 수도, 세제곱을 할 수도 있는데요. 이 물음의 답은 손실이 아니라 3편의 확률에 있습니다.

왜 제곱인가 — 가우시안 오차와 최대가능도

정답이 모델의 예측에 잡음이 얹혀 나온다고 가정해 봅시다. 그 잡음이 평균 0, 분산 σ2\sigma^2인 정규분포라면(3편의 가우시안),

yi=wxi+ϵi,ϵiN(0,σ2)y_i = \mathbf{w}^\top\mathbf{x}_i + \epsilon_i, \qquad \epsilon_i \sim \mathcal{N}(0, \sigma^2)

이때 하나의 정답 yiy_i가 나올 가능도는 정규분포의 밀도입니다.

p(yixi,w)=12πσexp ⁣((yiwxi)22σ2)p(y_i \mid \mathbf{x}_i, \mathbf{w}) = \frac{1}{\sqrt{2\pi}\,\sigma}\exp\!\left(-\frac{(y_i - \mathbf{w}^\top\mathbf{x}_i)^2}{2\sigma^2}\right)

3편최대가능도를 적용합니다. 데이터가 독립이라면 로그가능도는 합이 되고, w\mathbf{w}와 무관한 항을 걷어내면

logL(w)=i=1nlogp(yixi,w)=12σ2i=1n(yiwxi)2+const\log L(\mathbf{w}) = \sum_{i=1}^{n} \log p(y_i \mid \mathbf{x}_i, \mathbf{w}) = -\frac{1}{2\sigma^2}\sum_{i=1}^{n}(y_i - \mathbf{w}^\top\mathbf{x}_i)^2 + \text{const}

이 로그가능도를 최대화하는 것은, 앞의 마이너스 때문에 정확히 잔차 제곱합을 최소화하는 것과 같습니다. 즉

가우시안 오차 가정 아래 최대가능도3편의 원리    제곱오차 최소화선형회귀의 손실\underbrace{\text{가우시안 오차 가정 아래 최대가능도}}_{\text{3편의 원리}} \iff \underbrace{\text{제곱오차 최소화}}_{\text{선형회귀의 손실}}

제곱오차는 임의로 고른 편법이 아니라, "오차가 정규분포"라는 가정이 낳은 필연이었던 겁니다. 3편에서 "음의 로그가능도가 손실이 된다"고 심어 둔 씨앗을, 여기서 이렇게 수확합니다.

규칙 회수 — 제곱오차는 편법이 아니다. 오차가 가우시안이라는 가정 아래 최대가능도가 곧 제곱오차 최소화다. 손실의 모양은 확률 가정에서 나온다.

셋째 박자, 첫째 길 — 정확해(정규방정식)

이제 손실 L(w)=yXw2L(\mathbf{w}) = \|\mathbf{y} - X\mathbf{w}\|^2를 최소화합니다. 4편에서 "최소는 기울기가 0인 곳"이라 했죠. 손실을 전개해 그래디언트를 구합니다.

L(w)=yy2wXy+wXXwL(\mathbf{w}) = \mathbf{y}^\top\mathbf{y} - 2\mathbf{w}^\top X^\top\mathbf{y} + \mathbf{w}^\top X^\top X\mathbf{w}

wL=2Xy+2XXw\nabla_{\mathbf{w}} L = -2X^\top\mathbf{y} + 2X^\top X\mathbf{w}

이를 0으로 놓으면 **정규방정식(normal equation)**이 나오고, 풀면 가중치의 닫힌 꼴 해가 곧장 나옵니다.

XXw=Xy w=(XX)1Xy X^\top X\,\mathbf{w} = X^\top\mathbf{y} \quad\Longrightarrow\quad \boxed{\ \mathbf{w}^\star = (X^\top X)^{-1} X^\top\mathbf{y}\ }

반복도, 학습률도 없이 단 한 번의 계산으로 최적 가중치가 나옵니다. 이게 선형회귀가 특별한 이유예요 — 대부분의 학습엔 이런 정확해가 없습니다.

그리고 이 해엔 아름다운 기하가 숨어 있습니다. 정규방정식을 다시 쓰면 X(yXw)=0X^\top(\mathbf{y} - X\mathbf{w}^\star) = 0인데, 이건 "잔차 yXw\mathbf{y} - X\mathbf{w}^\starXX의 모든 열과 직교한다"는 뜻입니다. 즉 최적 예측 XwX\mathbf{w}^\star는 정답 y\mathbf{y}XX의 열들이 펼치는 공간 위로 내린 2편의 투영이에요. 도달 가능한 예측들 중 정답에 가장 가까운 점, 그 그림자가 최소제곱해입니다. 2편에서 투영을 세워 둔 보람이 여기 있습니다.

규칙 회수 — 미분해 0으로 놓으면 정규방정식 w=(XX)1Xy\mathbf{w}^\star = (X^\top X)^{-1}X^\top\mathbf{y}. 그 해는 정답을 특징들의 열공간에 내린 투영이고, 잔차는 그 공간에 직교한다.

셋째 박자, 둘째 길 — 경사하강

정확해가 있는데 왜 다른 길이 필요할까요. (XX)1(X^\top X)^{-1} 때문입니다 — 특징 수 dd가 크면 이 역행렬 계산이 O(d3)O(d^3)으로 비싸고, 데이터가 한 번에 안 들어오거나(스트리밍) 너무 크면 아예 불가능해요. 그럴 땐 4편경사하강으로 갑니다. 위에서 구한 그래디언트를 그대로 업데이트에 넣으면 되죠.

wwηwL=w+2ηnX(yXw)\mathbf{w} \leftarrow \mathbf{w} - \eta\,\nabla_{\mathbf{w}} L = \mathbf{w} + \frac{2\eta}{n}X^\top(\mathbf{y} - X\mathbf{w})

여기서 4편볼록성이 결정적입니다. MSE는 w\mathbf{w}에 대한 볼록함수예요(제곱합이니까요). 볼록이면 국소최소가 곧 전역최소라 했죠 — 그래서 경사하강은 어디서 출발하든 정규방정식과 똑같은 유일한 최적점에 수렴합니다. 두 길은 방법이 다를 뿐, 같은 골짜기의 같은 바닥에 닿습니다. 선형회귀는 "정확해와 경사하강이 같은 답을 준다"를 눈으로 확인할 수 있는 드문 무대예요.

두 길의 비교 — 언제 무엇을

같은 답을 주는 두 길을, 실무에선 이렇게 갈라 씁니다.

  • 정규방정식: 특징이 적당히 적고(dd가 크지 않고) 데이터가 메모리에 들어올 때. 한 번에 정확한 답을 줍니다. 튜닝할 학습률도 없고요.
  • 경사하강: 특징이 아주 많거나, 데이터가 거대하거나 스트리밍으로 들어올 때. 미니배치(4편의 SGD)로 조금씩 갱신할 수 있습니다.

그리고 중요한 예고 하나 — 딥러닝엔 정규방정식 같은 정확해가 없습니다. 신경망의 손실은 비볼록이라 미분해서 0으로 푸는 게 불가능하죠. 그래서 거대 모델은 오직 경사하강만으로 학습합니다. 선형회귀에서 두 길을 다 보는 건, 앞으로 왜 한쪽 길만 남는지를 이해하기 위한 준비이기도 합니다.

과적합과 정규화 — 2편의 단위원이 돌아오다

선형회귀에도 그늘이 있습니다. 특징이 많으면 모델이 훈련 데이터의 잡음까지 외워 버리는 **과적합(overfitting)**이 생겨요. 이를 막는 고전적 처방이 정규화 — 손실에 가중치의 크기를 벌점으로 더하는 것입니다.

Lridge(w)=yXw2+λw22L_{\text{ridge}}(\mathbf{w}) = \|\mathbf{y} - X\mathbf{w}\|^2 + \lambda\|\mathbf{w}\|_2^2

L2L_2 벌점을 쓴 이 릿지 회귀는 정확해도 살짝 바뀝니다 — w=(XX+λI)1Xy\mathbf{w}^\star = (X^\top X + \lambda I)^{-1}X^\top\mathbf{y}로, 대각선에 λ\lambda를 더해 역행렬을 안정시키죠. 벌점을 L1L_1으로 바꾸면 라쏘가 되는데, 여기서 2편이 돌아옵니다 — 2편에서 "L1L_1의 마름모 꼭짓점이 축 위에 있어 희소해를 낳는다"고 했죠. 라쏘가 바로 그 성질로 일부 가중치를 정확히 0으로 만들어 특징을 골라냅니다. 정규화를 제대로 유도하는 건 뒤로 미루지만, 지금 붙잡을 것은 — 2편의 노름 모양이 여기서 모델의 성격(안정 대 희소)으로 실현된다는 것.

정직하게 — 선형이라는 가정의 값과 한계

가장 투명한 학습이지만, 그 투명함은 강한 가정 위에 섭니다.

  • 세상은 대개 선형이 아니다. 선형회귀는 직선(초평면)밖에 못 그립니다. 관계가 휘어 있으면 근본적으로 못 잡아요. 특징을 비선형으로 변환해(x2x^2, logx\log x 등) 우회할 수 있지만, 그 변환을 자동으로 학습하려는 게 결국 다음 편에서 볼 신경망입니다. 선형회귀는 그 출발점이자 특수한 한 층인 셈이죠.
  • XXX^\top X가 뒤집히지 않을 수 있다. 특징들이 서로 강하게 상관되면(다중공선성) XXX^\top X가 특이행렬에 가까워져 역행렬이 불안정해집니다. 릿지의 +λI+\lambda I가 이를 달래는 이유이기도 하고요.
  • 제곱오차는 이상치에 약하다. 잔차를 제곱하니 크게 틀린 한 점이 손실을 지배합니다. 이상치가 있으면 직선이 그쪽으로 끌려가요. 이건 "오차가 가우시안"이라는 가정이 깨질 때 치르는 대가입니다 — 다른 잡음을 가정하면 다른 손실(예: 절댓값 오차)이 나옵니다.
  • 외삽은 위험하다. 학습 데이터가 놓인 범위 밖으로 예측을 밀면, 선형 가정이 그 바깥에서도 맞다는 보장이 전혀 없습니다. 모델이 배운 곳 안에서만 믿는 게 안전해요.

이 넷을 알고 쓰면, 선형회귀는 가장 이해하기 쉬우면서도 실제로 널리 쓰이는 학습이 됩니다 — 그리고 앞으로 만날 복잡한 모델들을 읽는 렌즈가 됩니다.

정리 — 세 박자가 처음으로 맞물리다

  • 모델: y^=Xw\hat{\mathbf{y}} = X\mathbf{w}. 1편의 행렬(선형변환)이 그대로 가설이 된다.
  • 손실: MSE =1nyXw2= \frac{1}{n}\|\mathbf{y} - X\mathbf{w}\|^2. 2편의 L2L_2 거리가 손실이 된다.
  • 왜 제곱: 3편의 가우시안 오차 가정 아래 최대가능도가 곧 제곱오차 최소화다.
  • 정확해: 미분해 0으로 놓으면 w=(XX)1Xy\mathbf{w}^\star = (X^\top X)^{-1}X^\top\mathbf{y}. 그 해는 2편의 투영(정답을 열공간에 내린 그림자).
  • 경사하강: 4편의 반복으로 같은 답. MSE가 볼록이라 전역최소에 수렴한다. 특징·데이터가 크면 이 길.
  • 정규화: 릿지(L2L_2)는 안정, 라쏘(L1L_1)는 희소 — 2편의 단위원 모양이 실현된다.
  • 정직하게: 선형 가정의 한계(비선형은 신경망으로), 다중공선성, 이상치 취약, 외삽 위험.

다음 편에서는 오늘 그은 그 직선의 한계를 넘습니다 — 선형변환 사이에 비선형을 끼워 층층이 쌓으면, 휘어진 세상도 담는 신경망이 됩니다. 1편에서 예고한 "선형만 쌓으면 여전히 선형"이라는 문제가, 마침내 무대에 오릅니다.

핵심 한 줄 — 선형회귀는 앞 편의 도구가 처음으로 하나로 맞물리는 학습이다. 1편의 행렬이 모델을, 2편의 거리가 손실을, 3편의 가우시안 MLE가 그 손실의 모양을 정하고, 정확해는 2편의 투영으로, 경사하강은 4편의 볼록성으로 같은 바닥에 닿는다.