라벨 스무딩(Label Smoothing)이란? AI 정답의 확신을 낮춰 학습하는 방법
TL;DR
라벨 스무딩(Label Smoothing)은 분류 모델의 원-핫 정답을 정답 클래스에 1, 나머지에 0으로 고정하지 않고 작은 확률을 나눠 가진 부드러운 정답 분포로 바꾸는 규제 기법입니다. 모델이 훈련 예시마다 한 클래스만 지나치게 확신하도록 밀어붙이는 힘을 줄이는 방식입니다. 스무딩 계수는 손실 함수에 넣어 훈련에만 적용합니다. 정확도뿐 아니라 로그 손실과 캘리브레이션을 함께 비교해야 합니다. 계수가 크면 클래스 구분 신호가 약해집니다. 라벨 오류를 고치는 방법도 아니며 지식 증류용 교사 모델에는 불리할 수 있습니다.
핵심 3줄 요약
- 핵심 1
딱딱한 원-핫 정답을 부드럽게 바꿉니다. 정답 클래스의 확률을 조금 낮추고 줄인 몫을 나머지 클래스에 나눕니다. - 핵심 2
모델의 과도한 확신을 누그러뜨립니다. 가장 큰 로짓과 다른 로짓의 간격이 끝없이 벌어지는 압력을 줄이는 규제입니다. - 핵심 3
작은 계수부터 검증으로 고릅니다. 정확도·로그 손실·캘리브레이션과 지식 증류 여부를 함께 보고 기본값을 그대로 믿지 않습니다.
이 글에서 다룰 내용
- 라벨 스무딩의 한 문장 정의
- 고양이·강아지·토끼 분류 예시로 보는 확률 분배
- 과도한 확신과 로짓 간격을 줄이는 이유
- 스무딩 계수를 교차 엔트로피에 적용하는 순서
- 라벨 인코딩·소프트 라벨·믹스업·온도 스케일링과의 차이
- 이미지·음성·언어 모델 분류에서의 사용처
- 정확도·캘리브레이션·지식 증류를 확인하는 체크리스트
라벨 스무딩을 한 문장으로 정의하면 무엇인가요?
라벨 스무딩은 분류 학습에서 원-핫 정답 분포를 원래 정답과 고정된 사전 분포의 가중 혼합으로 바꿔 모델의 과도한 확신을 제한하는 규제 방법입니다.
Szegedy 등의 2016년 CVPR 논문은 정답 클래스만 1이고 나머지는 0인 분포를 원래 정답과 별도의 분포를 섞은 형태로 바꿔 이를 라벨 스무딩 규제라고 불렀습니다. 논문의 실험에서는 모든 클래스에 같은 값을 주는 균등분포를 섞었습니다.
라벨 스무딩은 입력 특징이나 클래스 이름을 바꾸지 않습니다. 손실을 계산할 때 모델이 맞춰야 할 정답 확률만 조정합니다. 예측 단계에서는 스무딩된 정답을 만들 필요가 없고 모델이 출력한 확률이나 로짓을 그대로 평가합니다.
한 줄 정리: 정답 자체를 바꾸는 것이 아니라 학습 손실이 바라보는 정답 확률의 날카로움을 낮추는 방법입니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 사진을 고양이·강아지·토끼 세 클래스로 분류하는 모델을 학습한다고 가정해 보겠습니다. 사진의 정답이 고양이라면 보통 원-핫 라벨은 [1, 0, 0]입니다.
스무딩 계수를 0.1로 두고 TensorFlow 문서가 설명하는 균등분포 혼합 방식을 쓰면 각 클래스에 0.1을 3으로 나눈 값을 먼저 더합니다. 고양이에는 0.9에 그 값을 더합니다. 강아지와 토끼에는 그 값만 줍니다.
- 원래 정답 → [1, 0, 0]
- 스무딩 뒤 고양이 → 약 0.9333
- 스무딩 뒤 강아지와 토끼 → 각각 약 0.0333
세 값을 더하면 1입니다. 모델은 여전히 고양이에 가장 큰 확률을 주도록 학습하지만 1과 0을 완벽하게 재현하라는 압력은 줄어듭니다. 라이브러리마다 계수를 나누는 정의가 다를 수 있으므로 같은 0.1이라도 실제 목표값을 작은 예제로 계산해 봐야 합니다.
쉬운 예시: 정답을 모호하게 바꾸는 것이 아니라 정답 클래스의 우세는 유지하면서 확률 1에 대한 집착만 낮춥니다.
왜 AI 학습에서 라벨 스무딩이 중요한가요?
가장 큰 로짓이 지나치게 커지는 압력을 줄입니다
원-핫 정답으로 교차 엔트로피를 줄이면 정답 클래스의 로짓을 다른 클래스보다 계속 크게 만들려는 방향으로 학습할 수 있습니다. 2016년 원 논문은 이 차이가 지나치게 커지면 모델이 훈련 정답을 과하게 확신하고 적응하기 어려워질 수 있다고 설명합니다.
라벨 스무딩은 정답이 아닌 클래스에도 0보다 큰 목표 확률을 둡니다. 정답 로짓 하나만 끝없이 키우는 대신 클래스 확률 전체가 부드러운 목표 분포에 맞도록 손실을 계산합니다. 이 효과 때문에 가중치 감쇠나 드롭아웃과는 다른 지점에서 규제가 작동합니다.
일반화와 캘리브레이션을 함께 개선할 수 있습니다
Müller 등의 연구는 여러 다중 클래스 신경망 실험에서 라벨 스무딩이 일반화와 학습 속도를 개선할 수 있고 모델 캘리브레이션도 좋아졌다고 보고했습니다. Optax 문서도 스무딩된 라벨이 작은 로짓 간격을 선호해 과도한 확신을 막고 캘리브레이션에 도움이 될 수 있다고 설명합니다.
이 결과를 모든 데이터셋의 보장으로 받아들이면 안 됩니다. 정확도가 좋아져도 확률의 신뢰도가 항상 좋아지는 것은 아니며, 클래스 수·라벨 품질·모델 크기·평가 지표에 따라 효과가 달라집니다. 스무딩을 켠 모델과 끈 모델을 같은 시드와 데이터 분할에서 비교합니다.
구현이 손실 함수 안에 들어가 관리하기 쉽습니다
PyTorch의 CrossEntropyLoss와 TensorFlow의 CategoricalCrossentropy는 label_smoothing 인자를 제공합니다. 별도의 스무딩된 라벨 파일을 저장하지 않고 학습 설정으로 관리할 수 있어 원본 라벨을 보존하기 쉽습니다.
다만 설정 한 줄이 데이터 의미를 바꿉니다. 실험 기록에는 계수, 클래스 수, 무시 라벨 처리, 손실 함수 버전과 프레임워크 버전을 남겨야 재현할 수 있습니다.
핵심 인사이트: 라벨 스무딩의 목적은 틀린 정답을 허용하는 것이 아니라 훈련 손실이 확률 1과 0만 강요하지 않도록 만드는 데 있습니다.
라벨 스무딩은 어떻게 작동하나요?
1. 분류 클래스와 원본 라벨을 확인합니다
클래스 수, 원-핫 라벨인지 정수 라벨인지, 무시할 패딩 라벨이 있는지를 확인합니다. TensorFlow CategoricalCrossentropy는 원-핫 정답을 기대하며 정수 라벨에는 별도의 손실 클래스를 안내합니다. 프레임워크의 입력 계약부터 맞춰야 합니다.
2. 스무딩 계수를 정합니다
계수는 보통 0이면 스무딩을 하지 않고 값이 커질수록 원래 정답보다 기준 분포의 비중이 커집니다. PyTorch 문서는 label_smoothing을 0부터 1 사이의 값으로 받고 원래 정답과 균등분포의 혼합으로 설명합니다. 허용 범위가 넓다고 큰 값이 좋은 것은 아닙니다.
3. 원-핫 정답과 기준 분포를 섞습니다
클래스가 K개이고 균등분포를 쓴다면 각 클래스의 기준값은 1을 K로 나눈 값입니다. 원래 정답에는 1에서 계수를 뺀 몫을 남깁니다. 모든 클래스에는 계수를 K로 나눈 몫을 더합니다. 정답 클래스가 여전히 가장 크지만 1보다 작아집니다.
Optax의 smooth_labels도 원-핫 라벨과 alpha를 받아 스무딩된 라벨을 돌려줍니다. 다중 축이나 마스크를 다룬다면 어느 축에서 클래스 확률을 합치는지 확인합니다.
4. 스무딩된 목표로 교차 엔트로피를 계산합니다
모델의 로짓은 소프트맥스를 거쳐 클래스 확률로 해석됩니다. 손실은 이 예측 분포와 스무딩된 목표 분포의 차이를 계산합니다. 정답이 아닌 클래스의 목표가 0보다 크므로 그 클래스 확률을 완전히 0으로 밀어붙이는 행동에도 비용이 생깁니다.
5. 검증과 추론에서는 원래 정답으로 평가합니다
라벨 스무딩은 학습 손실의 설정입니다. 검증 정확도, 혼동 행렬, 정밀도와 재현율을 계산할 때는 원래의 실제 클래스 라벨을 씁니다. 스무딩된 확률을 새 정답으로 저장해 평가 기준까지 흐리면 안 됩니다.
한 줄 정리: 원본 라벨을 보존한 채 학습 손실에서만 부드러운 목표를 만듭니다. 평가는 실제 클래스와 모델 예측으로 진행합니다.
라벨 스무딩과 헷갈리는 용어는 무엇이 다른가요?
라벨 인코딩과 라벨 스무딩의 차이
라벨 인코딩은 고양이·강아지 같은 클래스 이름을 0·1 같은 정수 코드로 바꾸는 전처리입니다. 라벨 스무딩은 이미 표현된 분류 정답의 확률 분포를 부드럽게 바꿔 손실을 계산합니다. 앞선 라벨 인코딩 글과 같은 검색 답을 다루지 않는 이유입니다.
소프트 라벨과 라벨 스무딩의 차이
소프트 라벨은 정답을 클래스별 확률로 표현하는 넓은 개념입니다. 여러 사람의 의견 비율, 교사 모델의 확률, 혼합된 이미지의 비율도 소프트 라벨이 될 수 있습니다. 라벨 스무딩은 하드 라벨과 미리 정한 분포를 계수로 섞어 소프트 라벨을 만드는 특정 방법입니다.
라벨 노이즈와 라벨 스무딩의 차이
라벨 노이즈는 데이터의 정답이 잘못 기록됐거나 불확실한 상태입니다. 라벨 스무딩은 올바른 정답을 일부러 틀린 클래스로 바꾸지 않고 손실용 확률을 일정하게 나눕니다. 잘못 붙은 라벨을 찾아 수정하는 데이터 정제 대신 사용할 수 없습니다.
믹스업과 라벨 스무딩의 차이
믹스업은 두 입력과 두 라벨을 정한 비율로 섞어 새 훈련 예시를 만드는 데이터 증강입니다. 라벨 스무딩은 입력을 섞지 않고 한 예시의 라벨 분포만 고정 규칙으로 부드럽게 만듭니다. 둘을 함께 쓰면 정답 분포가 두 번 부드러워질 수 있어 조합을 따로 검증해야 합니다.
온도 스케일링과 라벨 스무딩의 차이
온도 스케일링은 보통 학습을 마친 모델의 검증 로짓을 조정해 확률 캘리브레이션을 맞추는 사후 처리입니다. 라벨 스무딩은 훈련 중 목표 분포와 손실을 바꿔 표현 학습에도 영향을 줍니다. 적용 시점과 모델 가중치에 미치는 영향이 다릅니다.
비교 정리: 라벨 인코딩은 이름을 코드로 바꿉니다. 소프트 라벨은 확률 정답 전체를 가리키며 라벨 스무딩은 하드 정답과 기준 분포를 섞는 학습 규제입니다.
실전에서는 어디에 쓰이나요?
이미지 다중 클래스 분류
사진 한 장을 여러 클래스 가운데 하나로 고르는 신경망에서 교차 엔트로피와 함께 사용합니다. 원 논문은 ImageNet 분류 실험에서 라벨 스무딩을 적용했습니다. 새 데이터셋에서는 같은 향상을 가정하지 말고 기준 모델과 비교합니다.
음성 인식과 시퀀스 예측
토큰이나 음성 단위를 여러 후보 가운데 예측하는 모델에도 쓸 수 있습니다. 빔 서치처럼 확률 분포의 모양이 후속 탐색에 영향을 주는 시스템이라면 정확도뿐 아니라 최종 시퀀스 지표와 확률 캘리브레이션을 함께 봅니다.
텍스트 분류와 토큰 분류
문서 주제, 감성, 의도 또는 각 토큰의 개체 유형을 분류할 때 적용할 수 있습니다. 패딩이나 무시 라벨에 스무딩 손실이 들어가지 않는지 확인하고 클래스 불균형이 크다면 클래스 가중치와의 상호작용도 따로 시험합니다.
LLM 파인튜닝의 다음 토큰 학습
언어 모델은 다음 토큰을 큰 어휘 집합에서 분류하므로 개념상 라벨 스무딩을 적용할 수 있습니다. 다만 모든 LLM 파인튜닝에 기본으로 필요한 설정은 아닙니다. 사전 학습 방식, 프레임워크 구현, 평가 손실과 지식 증류 계획을 확인한 뒤 실험합니다.
실전 팁: 모델 종류보다 손실이 다중 클래스 확률을 어떻게 받는지, 무시 라벨과 마스크를 어떻게 처리하는지부터 확인하세요.
라벨 스무딩을 적용할 때 어떤 순서로 확인하나요?
1. 스무딩 없는 기준 모델을 남깁니다
같은 데이터 분할, 모델 초기화 방식, 학습률과 에폭으로 계수 0인 기준 실험을 먼저 저장합니다. 기준이 없으면 정확도 변화가 스무딩 때문인지 다른 학습 설정 때문인지 구분하기 어렵습니다.
2. 작은 계수 후보를 비교합니다
하나의 관습적인 값을 고정하지 말고 작은 후보 몇 개를 검증 데이터에서 비교합니다. 클래스 수가 매우 크거나 라벨이 이미 확률 분포라면 같은 계수의 효과도 달라집니다. 실제로 만들어지는 목표 확률을 표본 한 건으로 출력해 확인합니다.
3. 정확도와 확률 품질을 함께 봅니다
정확도나 F1 점수뿐 아니라 검증 교차 엔트로피, 신뢰도 구간별 정확도와 예상 캘리브레이션 오차 같은 지표를 함께 확인합니다. 모델이 덜 확신한다고 해서 자동으로 더 정확하거나 더 잘 보정됐다고 단정하지 않습니다.
4. 조합하는 규제와 증강을 분리 시험합니다
드롭아웃, 가중치 감쇠, 믹스업, 클래스 가중치와 동시에 켜면 어느 설정이 결과를 바꿨는지 알기 어렵습니다. 한 번에 하나씩 추가한 실험과 최종 조합 실험을 남깁니다.
5. 지식 증류와 재학습 계획을 확인합니다
Müller 등의 연구는 라벨 스무딩으로 학습한 교사 모델의 지식 증류가 훨씬 덜 효과적일 수 있다고 보고했습니다. 교사 로짓의 클래스 간 유사 정보를 학생에게 전달하려면 스무딩 없는 교사도 후보로 남기고 증류 성능을 직접 비교합니다.
한 줄 정리: 계수 0 기준부터 작은 후보를 비교하고 정확도·손실·캘리브레이션·증류 성능을 같은 검증 절차에서 확인합니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 계수를 크게 잡지 않습니다. 정답 클래스와 나머지 클래스의 목표 차이가 지나치게 줄면 구분에 필요한 학습 신호도 약해집니다. 허용 범위의 끝값이 권장값이라는 뜻은 아닙니다.
둘째, 라벨 오류를 숨기지 않습니다. 고양이 사진이 강아지로 잘못 기록된 문제는 스무딩으로 고칠 수 없습니다. 오분류 표본과 손실이 큰 표본을 검토해 원본 라벨 품질을 따로 관리합니다.
셋째, 프레임워크 정의를 확인합니다. 어떤 구현은 줄인 확률을 모든 클래스에 나누고 다른 설명은 정답이 아닌 클래스에만 나누는 형태를 씁니다. 같은 계수라도 목표값이 달라질 수 있습니다.
넷째, 캘리브레이션 개선을 가정하지 않습니다. 스무딩된 모델의 확률이 실제 정답 빈도와 맞는지 검증 데이터에서 측정합니다. 필요하면 스무딩과 별도로 사후 캘리브레이션을 비교합니다.
다섯째, 교사 모델의 용도를 먼저 봅니다. 지식 증류에서는 교사 로짓에 남은 클래스 간 관계가 중요할 수 있습니다. 스무딩이 정확도를 높여도 학생 모델 전달에는 불리한지 따로 평가합니다.
주의: 라벨 스무딩은 작은 설정처럼 보이지만 목표 분포와 학습 표현을 바꿉니다. 정확도 하나만 보고 켜거나 라벨 정제 대신 사용하지 마세요.
자주 묻는 질문
Q1. 라벨 스무딩은 라벨을 틀리게 바꾸는 방법인가요?
아닙니다. 실제 클래스는 그대로 보존합니다. 학습 손실에서 사용할 목표 확률을 부드럽게 만들 뿐이며 평가와 데이터 기록에는 원래 정답을 사용합니다.
Q2. 스무딩 계수는 얼마가 가장 좋은가요?
모든 데이터에 맞는 고정값은 없습니다. 계수 0을 기준으로 작은 후보를 비교하고 검증 정확도, 손실과 캘리브레이션을 함께 봅니다. 클래스 수와 기존 소프트 라벨 여부도 결과에 영향을 줍니다.
Q3. 이진 분류에도 사용할 수 있나요?
사용할 수 있습니다. 두 클래스의 1과 0을 부드러운 확률로 바꿉니다. 다만 이진 교차 엔트로피 구현이 label_smoothing을 지원하는지와 양성·음성 목표값 계산 방식을 확인해야 합니다.
Q4. 라벨 스무딩을 하면 모델 확률을 그대로 믿어도 되나요?
아닙니다. 과도한 확신을 줄일 수 있어도 확률이 실제 빈도와 맞는지는 별도 문제입니다. 신뢰도 구간별 정확도와 캘리브레이션 지표로 확인합니다.
Q5. 클래스 불균형을 해결하나요?
직접 해결하지는 않습니다. 모든 클래스에 작은 확률을 나누는 것과 드문 클래스의 손실 비중을 높이는 것은 다릅니다. 클래스 가중치, 재표본화와 평가 지표를 별도로 검토합니다.
Q6. 지식 증류와 함께 써도 되나요?
쓸 수는 있지만 교사 모델에 적용했을 때 학생에게 전달할 로짓 정보가 줄 수 있습니다. 스무딩한 교사와 하지 않은 교사를 같은 증류 조건에서 비교한 뒤 결정합니다.
출처
마무리
라벨 스무딩은 원-핫 정답과 균등분포 같은 기준 분포를 섞어 학습 목표를 부드럽게 만드는 규제 기법입니다. 정답 클래스의 우세는 유지하면서 모델이 확률 1에 지나치게 가까워지도록 강요하는 힘을 줄입니다.
초보자라면 세 가지만 기억하면 충분합니다. 원본 라벨은 보존하고 학습 손실에서만 스무딩하세요. 계수 0과 작은 후보를 같은 조건에서 비교하고 정확도와 함께 손실·캘리브레이션·지식 증류 영향을 확인합니다. 이 기준을 지키면 간단한 설정 하나가 실제 모델 품질에 어떤 변화를 주는지 더 정확히 판단할 수 있습니다.
