L1과 L2 정규화, 손실에 더하는 제약의 차이
페이지 정보

본문
머신러닝 모델을 학습할 때는 훈련 데이터의 오차를 줄이는 것만 생각하기 쉽습니다. 정규화는 여기에 모델의 계수 크기 등에 대한 제약을 더하는 방법입니다.
L1과 L2라는 이름을 외우는 것보다 어떤 값을 목적함수에 더하고 그 값이 어떻게 달라지는지 계산해 보면 차이가 분명해집니다. 여기서는 선형 모델의 계수를 중심으로 설명하며 모든 모델에서 같은 효과가 보장된다고 가정하지 않습니다.
정규화를 쓰면 언제나 정확도가 올라간다는 뜻도 아닙니다. 예측 오차와 계수에 대한 제약 사이의 균형을 정하고 검증 데이터에서 결과를 확인하는 과정으로 이해하는 것이 좋습니다.

AI 생성 삽화 · 개념 이해를 위한 AI 연출 이미지이며 실제 시스템 구성도나 측정 결과가 아닙니다.
핵심 정리
L1은 계수 절댓값의 합을, 여기서 설명하는 L2 페널티는 계수 제곱의 합을 사용합니다. 규제 강도와 입력 특성의 크기를 함께 보고, 계수 변화와 검증 성능을 구분해 해석합니다.
1. 오차만 보던 목적함수에 항을 하나 더합니다
개념적으로 목적함수를 데이터 오차와 규제 강도 곱하기 페널티의 합으로 생각할 수 있습니다. 훈련 오차가 조금 낮아지는 대신 계수가 크게 변해야 한다면 추가된 페널티가 그 선택에 영향을 줍니다.
규제 강도가 0이면 이 추가 항이 사라지는 형태를 생각할 수 있고, 강도가 커지면 계수에 대한 제약의 비중이 커집니다. 다만 라이브러리마다 오차를 합산하거나 평균 내는 방식과 상수 계수가 다를 수 있습니다.
같은 숫자의 규제 값을 넣었다고 서로 다른 구현에서 같은 강도라고 단정하면 안 됩니다. 문서의 목적함수 정의를 확인하는 이유가 여기에 있습니다.
여기서 쓰는 간단한 계산은 원리를 설명하기 위한 것이며 특정 학습기의 최적 계수를 구한 실험은 아닙니다. 먼저 페널티 자체의 값을 계산한 뒤 전체 목적함수와 구분해 봅니다.
2. L1은 계수의 절댓값을 더합니다
계수가 2와 -1이라면 절댓값의 합은 3입니다. 부호가 달라도 크기를 더하므로 양수와 음수가 서로 상쇄되지 않습니다.
scikit-learn의 Lasso 문서는 L1 항을 포함한 목적함수를 설명하며 일부 계수가 정확히 0이 되는 희소한 해를 얻을 수 있다고 안내합니다. 이 성질 때문에 특성을 줄이는 관점에서 L1을 살펴보기도 합니다.
그러나 0이 아닌 계수가 남았다는 사실만으로 현실의 원인 관계가 증명되는 것은 아닙니다. 서로 관련된 특성이 있거나 데이터 구성이 달라지면 선택 결과를 해석할 때 주의가 필요합니다.
계수가 0이 되는 정도는 규제 강도와 데이터, 최적화 조건의 영향을 받으므로 언제나 일정한 개수의 특성이 제거된다고 말할 수 없습니다. 어떤 특성이 남았는지와 그 모델이 검증 자료에서 얼마나 잘 작동하는지를 따로 기록합니다.
3. L2 페널티는 계수의 제곱을 더합니다
같은 계수 2와 -1의 제곱 합은 5입니다. 절댓값 합과 달리 크기가 큰 계수의 기여가 제곱으로 커집니다.
Ridge는 L2 규제를 사용하는 대표적인 선형 회귀 모델입니다. L2 규제는 계수를 줄이는 방향으로 작용하지만 L1과 같은 방식의 희소성을 일반적으로 기대하는 것은 아닙니다.
설명용으로 계수 묶음 A가 3과 0이고 B가 1.5와 1.5라고 해 보겠습니다. 두 묶음의 L1 값은 모두 3이지만 제곱 합은 각각 9와 4.5입니다.
이 계산은 L2 항이 한쪽에 큰 값이 몰린 경우를 다르게 평가한다는 점을 보여 줍니다. 실제 학습은 데이터 오차도 같이 보므로 이 값만으로 어느 계수가 최종 선택될지 결정할 수 없습니다.
또한 수학적 L2 노름 자체는 제곱 합의 제곱근이지만, 여기서 다루는 Ridge의 페널티는 제곱 합이라는 점을 구분합니다.
4. 특성의 단위가 다르면 계수 크기도 달라집니다
같은 정보를 미터와 센티미터 중 어떤 단위로 표현하느냐에 따라 필요한 계수의 크기가 달라질 수 있습니다. 규제가 계수 크기를 본다면 입력의 크기 차이도 결과 해석에 영향을 줍니다.
scikit-learn의 StandardScaler 문서는 L1과 L2 규제 같은 목적함수 요소가 특성의 규모에 영향을 받을 수 있음을 설명합니다. 그래서 특성의 의미와 분포를 살펴 적절한 전처리를 정해야 합니다.
무조건 모든 자료를 같은 방식으로 변환한다는 규칙으로 외우기보다 모델이 어떤 숫자를 받는지 확인합니다. 학습 자료에서 정한 전처리 기준을 검증 자료와 실제 입력에도 일관되게 적용하는 과정이 중요합니다.
단위를 바꾼 실험에서는 계수 숫자만 비교하지 말고 입력 표현과 예측 결과를 함께 봅니다. 전처리 설정이 다른 두 모델의 규제 강도를 숫자 하나로 비교하는 것도 피합니다.
5. L1과 L2를 함께 쓰는 선택도 있습니다
ElasticNet은 L1과 L2 항을 함께 사용하는 방식입니다. scikit-learn의 구현에서는 전체 규제 크기와 두 항의 비중을 조절하는 매개변수를 구분합니다.
L1과 L2 사이에서 하나만 고르는 문제로 한정하지 않고 데이터와 목적에 맞는 후보를 비교할 수 있습니다. 그렇다고 두 항을 합치면 언제나 각각의 단점이 사라진다고 볼 수는 없습니다.
실험에서는 어떤 매개변수를 바꿨는지와 입력 전처리, 데이터 분할을 함께 남깁니다. 예를 들어 후보 A와 B의 검증 성능이 비슷하다면 남은 특성 수나 운영상 필요한 설명 가능성 같은 요구사항을 추가로 살펴볼 수 있습니다.
이때 단순한 모델을 선택한다는 판단과 예측력이 더 높다는 주장은 구분합니다. 제품이나 업무의 목표를 정한 뒤 어떤 기준으로 선택했는지 기록해야 결과를 다시 검토할 수 있습니다.
6. 규제 강도는 검증 결과와 함께 읽습니다
규제를 강하게 했더니 훈련 오차가 늘었다는 사실만으로 실패라고 판단할 수는 없습니다. 목적함수에 추가 제약을 넣었으므로 훈련 오차와 다른 지표를 함께 봐야 합니다.
반대로 규제를 적용했다는 이유만으로 새 데이터에서 좋아졌다고 주장해서도 안 됩니다. 같은 데이터 분할과 평가 지표로 후보를 비교하고 선택에 사용한 자료와 최종 평가 자료의 역할을 구분합니다.
실험표에는 규제 방식, 강도, 전처리, 훈련 지표, 검증 지표, 계수 상태를 나란히 둘 수 있습니다. 성능 차이가 작을 때는 한 번의 숫자만 확대 해석하지 않고 실험 조건의 영향을 확인합니다.
계수의 절댓값이 작아졌다는 관찰과 업무 목표를 더 잘 만족한다는 판단을 분리하는 것이 좋습니다. 직접 계산한 페널티 예시는 학습 결과를 예상하는 도구가 아니라 정의를 이해하는 도구입니다.
실제 모델 선택은 데이터와 검증 설계에 맞춰 진행해야 합니다. 개념을 정리할 때는 무엇을 벌점으로 삼는지, 강도를 어떻게 정하는지, 결과를 어디서 평가하는지의 세 질문을 연결하면 됩니다.
7. 자주 묻는 질문
Q1. L1을 쓰면 모든 불필요한 특성이 자동으로 없어지나요?
일부 계수가 0이 되는 해를 얻을 수 있지만 어떤 특성이 남을지는 조건에 따라 달라집니다. 선택된 결과를 원인 관계나 절대적인 중요도와 같게 해석하지 않습니다.
Q2. L2 노름과 L2 페널티의 제곱 합은 같은 표현인가요?
L2 노름은 제곱 합의 제곱근입니다. 이 글에서 설명한 Ridge의 규제 항은 그 노름의 제곱이므로 목적함수의 정의를 확인해야 합니다.
Q3. 규제 강도를 크게 할수록 항상 좋은가요?
제약이 과도하면 필요한 패턴도 충분히 반영하지 못할 수 있습니다. 훈련 오차만 보지 말고 정한 검증 기준으로 후보를 비교합니다.
Q4. 다른 라이브러리에 같은 규제 숫자를 넣어도 되나요?
오차 항의 평균 처리나 상수 계수, 매개변수 정의가 다를 수 있습니다. 숫자만 복사하기보다 각 구현의 목적함수를 확인해야 합니다.
참고 자료
- 이전글쿠버네티스 HPA, Pod 수 조절과 노드 확장 구분하기 26.09.28
- 다음글ONNX 내보내기와 추론 검증, 파일 생성 후 확인할 것 26.09.28
댓글목록
등록된 댓글이 없습니다.