Label Smoothing
Label smoothing trộn mỗi nhãn huấn luyện one-hot với một phân phối đồng đều, hạn chế sự tự tin thái quá và cải thiện hiệu chuẩn cho bộ phân loại.
Label smoothing là kỹ thuật regularization dành cho model phân loại deep learning, thay mỗi nhãn one-hot cứng trong dữ liệu huấn luyện bằng một phiên bản mềm hơn: phần lớn xác suất vẫn thuộc về lớp đúng, còn một phần nhỏ do hệ số smoothing ε xác định được phân bổ đều cho tất cả các lớp. Huấn luyện với các nhãn mềm này ngăn mạng neural đẩy logit đến các giá trị cực đoan để đạt confidence 100%, từ đó giảm overfitting và tạo ra xác suất được hiệu chuẩn tốt hơn. Szegedy và cộng sự mô tả kỹ thuật này trong bài báo về Inception-v3, dùng ε = 0.1 cho 1.000 lớp ImageNet; hiện nay, đây là tùy chọn tiêu chuẩn khi huấn luyện model phân loại ảnh, dịch máy và nhận dạng tiếng nói.
Cách label smoothing hoạt động#
Với K lớp và hệ số smoothing ε, mỗi nhãn trở thành (1 − ε) · y + ε / K, trong đó y là nhãn one-hot. Với ba lớp và ε = 0.1, nhãn [1, 0, 0] trở thành khoảng [0.933, 0.033, 0.033]. Với nhãn cứng, cross-entropy tiếp tục giảm khi logit của lớp đúng tăng cao hơn các lớp khác, nên hàm loss khuyến khích khoảng cách logit ngày càng lớn và đầu ra softmax bão hòa. Với nhãn đã smoothing, loss đạt mức thấp nhất khi khoảng cách hữu hạn bằng ln((1 − ε + ε / K) / (ε / K)), khoảng 3.3 trong ví dụ này, rồi tăng trở lại nếu khoảng cách lớn hơn; vì vậy, gradient đẩy các dự đoán quá tự tin trở về mức vừa phải. Các model phát hiện Ultralytics YOLO26 huấn luyện dự đoán lớp bằng một dạng nhãn mềm liên quan: bộ gán task-aligned điều chỉnh mục tiêu lớp của mỗi anchor dương theo mức độ phù hợp giữa score và box dự đoán với đối tượng, vì vậy hầu hết mục tiêu đều thấp hơn 1.
CrossEntropyLoss của PyTorch áp dụng công thức này thông qua đối số label_smoothing:
import torch
from torch import nn
# The correct class is index 0 of three; hard and smoothed versions of the same loss
target = torch.tensor([0])
hard_loss = nn.CrossEntropyLoss()
smooth_loss = nn.CrossEntropyLoss(label_smoothing=0.1)
# Score the correct class increasingly far above the other two
for gap in [1.0, 3.0, 6.0, 12.0]:
logits = torch.tensor([[gap, 0.0, 0.0]])
hard = hard_loss(logits, target).item()
smooth = smooth_loss(logits, target).item()
print(f"Logit gap {gap:>4}: hard loss {hard:.3f}, smoothed loss {smooth:.3f}")Loss cứng giảm từ 0.551 xuống 0.000 khi khoảng cách tăng, trong khi loss đã smoothing đạt mức thấp nhất 0.295 khi khoảng cách gần 3 rồi tăng trở lại lên 0.800 khi khoảng cách bằng 12; do đó, confidence cực đoan giờ đây có chi phí cao hơn confidence vừa phải.
Ảnh hưởng đến calibration và đặc trưng đã học#
Müller, Kornblith và Hinton phát hiện label smoothing cải thiện calibration của model, tức là xác suất dự đoán phản ánh tần suất dự đoán thực sự chính xác. Họ cũng cho thấy kỹ thuật này gom các đặc trưng ở layer áp chót của mỗi lớp thành những cụm chặt chẽ, cách đều nhau. Sự nén này xóa thông tin về những lớp sai mà ảnh có nét tương đồng; các model teacher được huấn luyện bằng label smoothing cũng truyền đạt kiến thức cho student kém hiệu quả hơn thông qua chưng cất tri thức.
Ứng dụng thực tế#
Label smoothing hữu ích nhất khi nhãn nhiễu, mơ hồ hoặc có số lượng lớn.
- Phân loại ở quy mô ImageNet: ImageNet có ảnh gán nhãn sai và ảnh chứa nhiều đối tượng hợp lệ. Các công thức huấn luyện mạng tích chập và Vision Transformer, bao gồm DeiT, dùng ε = 0.1 để model không bao giờ khớp một nhãn đáng ngờ với độ chắc chắn tuyệt đối.
- Dịch máy: Transformer ban đầu dùng label smoothing với ε = 0.1. Các tác giả báo cáo rằng phương pháp này làm perplexity tăng vì model học cách giảm mức độ chắc chắn, đồng thời cải thiện độ chính xác và điểm BLEU.
- Phân tích ảnh y tế: Các chuyên gia gán nhãn thường bất đồng về những ảnh quét khó phân định. Target được làm mượt giúp bộ phân loại chẩn đoán không xem mọi nhãn còn tranh cãi là chắc chắn, còn điểm số được hiệu chỉnh tốt hơn giúp ngưỡng phân loại lâm sàng đáng tin cậy hơn.
Label smoothing và các kỹ thuật liên quan#
- Chưng cất tri thức: Chưng cất cũng huấn luyện trên target mềm lấy từ dự đoán của model teacher, nhờ đó ghi nhận những lớp có nét tương đồng. Target của label smoothing phân bổ cùng một phần nhỏ cho mọi lớp sai.
- Hiệu chỉnh nhiệt độ: Hiệu chỉnh nhiệt độ cân chỉnh model đã huấn luyện sau khi hoàn tất bằng cách chia logits cho một hằng số được học, không thay đổi trọng số.
- Lớp Dropout: Dropout regularize mạng bằng cách đặt ngẫu nhiên activation thành 0 trong lúc huấn luyện, còn label smoothing regularize thông qua target huấn luyện.
- CutMix: CutMix và mixup là các phương pháp tăng cường dữ liệu, trộn hai ảnh huấn luyện và trộn nhãn theo cùng tỷ lệ, vì vậy nhãn mềm được tạo từ chính input. CutMix gán trọng số cho mỗi nhãn theo diện tích vùng ảnh được dán vào, còn mixup gán trọng số cho cả pixel và nhãn bằng một hệ số duy nhất lấy từ phân phối Beta.










