Weight Decay Là Gì?

Weight Decay (phân rã trọng số) là kỹ thuật giúp AI không học thuộc lòng dữ liệu huấn luyện. Nó hoạt động bằng cách phạt các trọng số lớn, ép model giữ trọng số nhỏ. Trọng số càng nhỏ, model càng tổng quát, không bị overfitting.
Hiểu đơn giản, weight decay giống như luật chống sao chép trong phòng thi. Học sinh có thể học thuộc lòng đề mẫu để điểm cao (overfitting), nhưng khi gặp đề mới thì tịt. Weight decay bắt học sinh phải hiểu bài thật, không cho phép dùng “mẹo” ghi nhớ từng chi tiết nhỏ.
Tại Sao Cần Weight Decay?
Khi huấn luyện AI, model có xu hướng học quá kỹ dữ liệu huấn luyện. Nó nhớ từng điểm dữ liệu, kể cả nhiễu. Kết quả: chạy trên tập train thì điểm hoàn hảo, nhưng gặp dữ liệu mới thì sai bét.
Hiện tượng này gọi là overfitting. Weight decay là một trong những phương pháp phổ biến nhất để chống lại nó, bên cạnh dropout và early stopping.
Nguyên lý rất tự nhiên. Trọng số lớn nghĩa là model phụ thuộc mạnh vào một vài đặc trưng. Nếu đặc trưng đó hơi thay đổi, kết quả sai hoàn toàn. Trọng số nhỏ thì ngược lại, model phân bổ độ quan trọng đồng đều, chịu được biến động.
Weight Decay Hoạt Động Như Thế Nào?
Bình thường, loss function chỉ đo lường sai số giữa dự đoán và kết quả thực. Model cố gắng giảm sai số này, và trong quá trình đó, trọng số có thể phình to.
Weight decay thêm một số hạng phạt vào loss function. Số hạng này tỷ lệ thuận với bình phương trọng số. Công thức đơn giản:
Loss mới = Loss cũ + lambda * tổng(w_i^2)
Khi model tối ưu loss mới, nó phải cân bằng giữa hai mục tiêu: giảm sai số (cần trọng số đủ lớn để fit data) và giảm phạt (cần trọng số nhỏ). Kết quả là trọng số ổn định ở mức vừa đủ, không phình to.
Tham Số Lambda Quan Trọng Như Thế Nào?
Lambda (kí hiệu λ) là hệ số điều khiển độ mạnh của weight decay. Lambda = 0 nghĩa là không có weight decay, model tự do học thuộc. Lambda quá lớn thì model bị phạt nặng, không dám học gì, underfitting.
Thực tế, lambda thường nằm trong khoảng 0.0001 đến 0.01. Giá trị phổ biến nhất là 0.01 cho nhiều model. Nhưng không có giá trị “đúng” cho mọi bài toán, bạn phải thử.
Mình hay bắt đầu với 0.001 rồi điều chỉnh. Nếu model vẫn overfit, tăng lambda lên. Nếu model underfit (train accuracy thấp), giảm lambda xuống. Đơn giản vậy thôi.
Weight Decay Khác Gì L2 Regularization?
Nhiều người dùng hai thuật ngữ này thay thế cho nhau, và trong hầu hết trường hợp thì đúng như vậy. Nhưng về mặt kỹ thuật, có khác biệt nhỏ.
L2 Regularization thêm số hạng phạt vào loss function trực tiếp. Weight Decay, theo định nghĩa gốc, giảm trọng số sau mỗi bước gradient descent bằng cách nhân trọng số với một hệ số nhỏ hơn 1.
Với SGD thuần, hai cách này tương đương. Nhưng với Adam hay các optimizer có moment, chúng khác nhau. Đó là lý do AdamW ra đời — tách weight decay ra khỏi phần gradient, vì trộn lẫn trong Adam gây hiệu quả kém.
AdamW: Khi Weight Decay Được Sửa Lại
Adam là optimizer phổ biến nhất cho deep learning. Nhưng khi tích hợp weight decay vào Adam theo cách truyền thống (L2 regularization), nó tương tác xấu với moment estimation. Weight decay bị ảnh hưởng bởi gradient history, làm giảm hiệu quả.
AdamW (2019) khắc phục bằng cách áp dụng weight decay trực tiếp lên trọng số, tách biệt khỏi gradient update. Kết quả: weight decay hoạt động đúng như ý đồ, model hội tụ tốt hơn, đặc biệt trong transformer và large-scale training.
Nếu bạn dùng PyTorch, AdamW chính là torch.optim.AdamW. Hầu hết model transformer hiện đại đều dùng optimizer này với weight decay khoảng 0.01 đến 0.1.
Weight Decay Trong Thực Tế
Trong huấn luyện model ngôn ngữ lớn, weight decay gần như luôn được bật. GPT, BERT, Llama đều dùng weight decay. Giá trị thường là 0.1 cho pretraining và 0.01 cho fine-tuning.
Lý do pretraining dùng weight decay lớn hơn: tập dữ liệu lớn, model dễ học thuộc từng mẫu cụ thể. Weight decay mạnh ép model học pattern tổng quát. Fine-tuning thì dữ liệu ít hơn, weight decay nhẹ đủ rồi.
Một quy tắc thực tế: model càng lớn, weight decay càng quan trọng. Model lớn có nhiều trọng số hơn, dễ overfit hơn. Không có weight decay, bạn sẽ thấy gap giữa train loss và val loss nổ rất nhanh.
Lựa Chọn Weight Decay Như Thế Nào?
Nếu bạn mới bắt đầu, mình khuyên dùng giá trị mặc định của framework. PyTorch AdamW mặc định weight decay = 0.01. TensorFlow AdamW mặc định 0.004. Cả hai đều là điểm khởi đầu tốt.
Từ đó, quan sát training curve. Nếu train loss giảm đều nhưng val loss bắt đầu tăng, overfitting đang xảy ra — tăng weight decay. Nếu cả train lẫn val đều cao, underfitting — giảm weight decay hoặc tăng learning rate.
Không nên dùng weight decay cho bias term và layer normalization parameters. Đây là quy ước phổ biến. PyTorch hỗ trợ qua parameter groups, TensorFlow qua decay_dict.
Kết Luận
Weight Decay là kỹ thuật cơ bản nhưng không thể thiếu khi huấn luyện AI. Nó giữ trọng số nhỏ, ngăn model học thuộc, giúp tổng quát hóa tốt hơn. Hiểu weight decay cũng là bước đầu để hiểu các kỹ thuật regularization phức tạp hơn.
Nếu bạn train model mà gặp overfitting, weight decay là thứ đầu tiên nên thử, trước khi nghĩ đến dropout hay data augmentation. Đơn giản, hiệu quả, và gần như luôn được khuyến nghị.