Dropout: 왜 일반화에 도움이 되나, 그리고 학습/추론 스케일링 트릭

Dropout은 두 아이디어를 붙여놓은 것이다: 학습 때 유닛을 무작위로 꺼버리고, 추론 때는 조용히 전부 다시 켠다. 흥미로운 지점은 (1) 유닛을 무작위로 끄는 게 왜 일반화를 개선하는가, 그리고 (2) “전부 다시 켠다"가 공짜가 아니라는 것 — 보정을 안 하면 activation이 잘못된 스케일로 나온다. 이 스케일링을 틀리는 건 딥러닝에서 가장 흔한 버그 중 하나라, 이 글은 둘 다 L1/L2 글과 같은 엔지니어링 깊이로 짚는다. Dropout이 하는 일 학습 중 dropout layer는 각 유닛의 activation \(a\)를, 독립적으로, keep probability \(p\)로 유지하거나 \(1-p\)로 0으로 만든다. 형식적으로는 유닛마다 mask \(m \sim \text{Bernoulli}(p)\)를 뽑아 \(m \cdot a\)를 출력한다. ...

2026년 3월 16일 · 7 분

L1 vs L2 Regularization: 왜 L1은 Sparse Solution을 만드는가?

“L1은 weight를 sparse하게 만들고, L2는 weight를 작게 만든다” Regularization이란 무엇인가 용량(capacity)이 충분한 모델은 noise를 포함한 데이터를 외워버려서 training loss를 0까지 떨어뜨릴 수 있다. (overfitting) Linear model에서 이건 계수가 크고 서로 상쇄되는 값으로 폭발하는 형태로 나타난다. 이는 OLS 해 \(\hat{\mathbf{w}} = (X^\top X)^{-1}X^\top y\)의 증폭 효과 때문이다. \(X^\top X\)에 작은 eigenvalue(= 데이터에서 분산이 거의 없는 방향, 예컨대 거의 동일한 두 feature)가 있으면 그 역행렬엔 큰 eigenvalue가 생기고, \(y\)의 작은 노이즈가 그 방향으로 투영되며 큰 계수로 증폭된다. 구체적으로 \(x_1 \approx x_2\)라면, \(y\)를 설명하는 데는 \(w_1=1,\,w_2=0\)이면 충분하지만 마지막 노이즈까지 fit하기 위해 weight에 \(w_1=1000,\,w_2=-999\) 같은 값이 나타난다. \(x_1 - x_2\)는 거의 0인 방향이라, 큰 계수를 곱해야 노이즈만큼의 미세한 출력이 나오기 때문이다. 큰 \(|\mathbf{w}|\)는 함수가 노이즈에 맞추려 뒤틀린 증거다. ...

2026년 3월 2일 · 8 분