대체 그 놈의 Norm이 뭔데 놈놈 거리는건지.
계속 그러면 아저씨가 이 Norm한다?

Norm은 벡터의 "크기"를 측정하는 함수입니다. 일상에서는 "거리"라고 부르는 개념의 수학적 일반화죠.
2차원 벡터 $w = [3, 4]$가 있다고 해볼께요. 이 벡터의 "크기"를 재는 방법이 여러 가지 있습니다.
L1 norm (절댓값의 합 — 맨해튼 거리)
$$|w|_1 = |3| + |4| = 7$$
L2 norm (제곱합의 제곱근 — 유클리드 거리)
$$|w|_2 = \sqrt{3^2 + 4^2} = \sqrt{9 + 16} = 5$$
여기서 L1, L2의 L은 수학자 Lebesgue의 이름에서 온 Lp norm 체계입니다. 일반적으로 Lp norm은 다음과 같이 정의합니다.
$$|w|_p = \left(\sum_j |w_j|^p\right)^{1/p}$$
$p=1$이면 L1, $p=2$이면 L2. 그래서 "L2 regularization"이라 부르는 이유는 L2 norm을 사용한 regularization이기 때문이에요.
왜 L2 norm의 제곱을 쓰는가
Regularization term에는 $|w|_2^2$, 즉 L2 norm의 제곱이 들어갑니다.
$$|w|_2^2 = \sum_j w_j^2$$
제곱근이 사라져서 그냥 제곱합이 되죠. 제곱을 쓰는 이유는 순전히 미분이 깔끔해지기 때문입니다.
$$\frac{\partial}{\partial w_j} |w|_2^2 = \frac{\partial}{\partial w_j} \sum_k w_k^2 = 2w_j$$
반면 제곱 없이 $|w|_2 = \sqrt{\sum w_j^2}$를 미분하면 분모에 $\sqrt{\sum w_j^2}$가 남아서 gradient가 복잡해져요. 제곱을 씌우면 gradient가 단순히 $w_j$에 비례하게 되어 구현도 쉽고 최적화도 안정적입니다.
왜 Regularization Term을 추가하면 Overfitting이 줄어드는가
이게 제일 핵심적인 질문이에요. 단계적으로 풀어볼겠습니다.
Overfitting
수학적으로 모델이 training data의 모든 point를 정확히 지나가려고, weight 값이 매우 크고 극단적인 값을 가지게 되는 것.
간단한 예시로, 데이터가 대략 $y = x$ 패턴인데 noise가 좀 있다고 해볼께요. 이걸 고차 다항식으로 fitting하면
$$\hat{y} = 500x^5 - 1200x^4 + 800x^3 - 300x^2 + 50x + 2$$
이런 식으로 계수(weight)가 매우 커집니다. 이 함수는 training point를 다 지나가지만, 그 사이에서 극단적으로 흔들려요. 이게 overfitting입니다.
Overfitting된 모델은 weight가 크다.
그러면 해결책이 자연스럽게 나와요. weight가 커지는 것에 벌칙(penalty)을 부여합니다.
Cost Function의 설계 의도
원래 cost function은
$$J = \frac{1}{m}\sum_{i=1}^{m} \mathcal{L}(\hat{y}^{(i)}, y^{(i)})$$
이것은 "예측을 정확하게 해라"라는 목표만 있어요. 모델은 이 $J$를 줄이기 위해 수단과 방법을 가리지 않고, weight를 아무리 크게 만들어서라도 training data를 맞추려 합니다.
여기에 regularization term을 추가하면
$$J = \frac{1}{m}\sum_{i=1}^{m} \mathcal{L}(\hat{y}^{(i)}, y^{(i)}) + \frac{\lambda}{2m}|w|_2^2$$
이제 모델은 두 가지 목표를 동시에 최소화해야 합니다.
- 첫째 항: "예측을 정확하게 해라"
- 둘째 항: "하지만 weight를 크게 만들지는 마라"
이 두 목표는 서로 충돌해요. Training data를 완벽하게 맞추려면 weight가 커져야 하는데, 둘째 항이 그걸 억제하거든요. 결과적으로 모델은 "weight를 적당히 작게 유지하면서도 data를 대체로 잘 설명하는" 타협점을 찾게 돼요. 그 타협점이 바로 overfitting과 underfitting 사이의 "just right" 지점입니다.
$\lambda$의 역할
$\lambda$는 이 두 목표 사이의 균형(balance)을 조절합니다.
- $\lambda = 0$: regularization 없음. 원래 cost function과 동일. Overfitting 가능성 높음.
- $\lambda$가 매우 큼: weight를 작게 만드는 것이 압도적으로 중요해짐. Weight가 거의 0에 가까워져서 모델이 너무 단순해짐 → underfitting (high bias).
- 적절한 $\lambda$: 두 목표 사이의 좋은 균형점. Dev set에서 최적의 $\lambda$를 찾는 것.
$\frac{1}{2m}$은 왜 붙는가
$\frac{\lambda}{2m}|w|_2^2$에서
- $\frac{1}{m}$: 앞의 loss term이 $\frac{1}{m}\sum \mathcal{L}$로 training example 수로 나눠져 있으니까, regularization term도 같은 scale로 맞추기 위해
- $\frac{1}{2}$: 미분했을 때 $|w|_2^2$의 미분에서 나오는 2와 상쇄되어 gradient가 깔끔해지려고. $\frac{\partial}{\partial w}\frac{1}{2}w^2 = w$ (2가 사라짐)
둘 다 수학적 편의를 위한 것이고, 어차피 $\lambda$가 자유롭게 조절되는 hyperparameter이므로 상수 배는 $\lambda$에 흡수된다고 봐도 돼요. 본질적인 의미에는 영향이 없습니다.
적절한 weight를 찾아야 하는건데 왜 weight가 커진다는건가? 그런데 또 적절히 작은 상태를 유지한다는 건 무슨 뜻인가?
구체적인 숫자 예시로 봐봅시다.
"적절한 weight"가 두 관점에서 다르다는 게 핵심
데이터가 5개 있고, 실제 패턴은 $y = x$인데 noise가 조금 섞여 있다고 해볼께요.
$x$ 실제 $y$ (noise 포함)
| 1 | 1.2 |
| 2 | 1.8 |
| 3 | 3.3 |
| 4 | 3.7 |
| 5 | 5.1 |
관점 1 — Training loss만 최소화하는 "적절함"
모델에게 "이 5개 점의 예측 오차를 최소화해라"라고만 시키면, 모델은 5개 점을 정확히 다 지나가는 함수를 찾으려 해요. 예를 들어 4차 다항식을 쓰면 5개 점을 완벽히 통과할 수 있습니다.
$$\hat{y} = 0.15x^4 - 1.8x^3 + 7.2x^2 - 10.5x + 6.15$$
이 모델 입장에서 이 weight들($0.15, -1.8, 7.2, -10.5, 6.15$)이 적절한 겁니다. Training loss를 0으로 만드니까. 하지만 이 함수는 training point 사이에서 위아래로 심하게 흔들려요. $x = 1.5$를 넣으면 엉뚱한 값이 나올 수 있습니다.
관점 2 — 일반화까지 고려한 "적절함"
실제 패턴은 그냥 $y = x$에 가깝습니다. 이걸 표현하는 weight는
$$\hat{y} = 1.0x + 0.0$$
Weight가 $[1.0, 0.0]$. 훨씬 작고 단순하죠. 5개 점을 완벽히 통과하지는 못하지만, 새로운 데이터에 대해서도 잘 작동하죠.
왜 weight가 "저절로" 커지는가
Regularization 없이 loss만 최소화하면, gradient descent는 training error를 줄이기 위해 weight를 계속 조정합니다. 이 과정에서 noise가 낀 data point까지 맞추려면, 함수가 복잡하게 꺾여야 하고, 그러려면 weight가 커져야 합니다.
직관적으로, 함수가 급격하게 변하려면 큰 계수가 필요해요.
$y = 1.0 \cdot x$ → 완만한 직선, weight가 작음
$y = 500x^5 - 1200x^4 + \ldots$ → 급격히 흔들리는 곡선, weight가 큼
모델은 "training loss를 줄여라"라는 지시만 받았으니, noise까지 맞추기 위해 weight를 키우는 게 합리적인 선택이죠. 모델은 뭐가 진짜 패턴이고 뭐가 noise인지 모르거든요.
Regularization이 하는 일
Regularization term $\frac{\lambda}{2m}|w|_2^2$를 추가하면, weight가 커질 때마다 cost function이 증가합니다. 그러면 gradient descent 입장에서
training loss를 줄이려고 weight를 키우고 싶지만 weight를 키우면 regularization term이 커져서 전체 $J$가 다시 올라감
그래서 "noise까지 완벽히 맞추기 위해 weight를 크게 키우는 것"은 더 이상 이득이 아니게 돼요. 약간의 training error를 감수하더라도 weight를 작게 유지하는 게 전체 $J$를 더 줄이는 결과가 되거든요.
결국 "적절히 작은 weight"란, training data를 완벽하게가 아니라 대체로 잘 설명하면서, 함수가 불필요하게 복잡해지지 않는 수준의 weight를 말하는 겁니다. 그 지점이 진짜 패턴은 잡되 noise는 무시하는 "just right" 상태인거죠.
'CS & AI > Deep Learning' 카테고리의 다른 글
| [Coursera] Gradient Descent in Logistic Regression / Deep Learning Specialization (0) | 2026.04.10 |
|---|---|
| [Coursera] Computation Graph / Deep Learning Specialization (0) | 2026.04.10 |
| [궁금증] Variance & Bias (0) | 2026.04.05 |
| [Coursera] Gradient Descent / Deep Learning Specialization (0) | 2026.03.26 |
| [Coursera] Cost Function / Deep Learning Specialization (0) | 2026.03.26 |
나의 성장 드라마
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!