Bias-Variance Tradeoff
Sự đánh đổi giữa bias và variance phân tách lỗi dự đoán kỳ vọng thành bias, variance và nhiễu, giải thích vì sao cả model quá đơn giản lẫn quá phức tạp đều thất bại.
Sự đánh đổi giữa bias và variance mô tả cách sai số kỳ vọng của model trên dữ liệu mới được chia thành hai phần, mỗi phần phản ứng theo hướng ngược nhau với độ phức tạp của model. Bias là sai số do các giả định quá đơn giản để nắm bắt mẫu hình thực, gây ra underfitting. Variance là sai số do độ nhạy với dữ liệu huấn luyện cụ thể, gây ra overfitting. Tăng độ linh hoạt của model thường làm bias giảm và variance tăng, vì vậy tổng sai số thấp nhất nằm ở mức độ phức tạp trung gian. Stuart Geman, Elie Bienenstock và René Doursat đưa khái niệm này vào machine learning trong bài báo năm 1992 "Neural Networks and the Bias/Variance Dilemma."
Phân rã sai số#
Phép phân rã xét cùng một loại model được huấn luyện nhiều lần, mỗi lần trên một tập huấn luyện mới được lấy từ cùng một nguồn. Với sai số bình phương, sai số kỳ vọng tại một đầu vào được phân tách chính xác thành ba thành phần. Bình phương bias là bình phương độ lệch giữa dự đoán trung bình trên tất cả các tập huấn luyện đó và giá trị thực; mô hình hồi quy tuyến tính khớp với một quan hệ cong vẫn có bias cao dù được cung cấp bao nhiêu dữ liệu. Variance đo mức độ phân tán của các dự đoán quanh giá trị trung bình của chúng giữa các tập huấn luyện, và thường cao ở cây quyết định sâu cũng như mạng neural lớn không regularization. Thành phần thứ ba, nhiễu không thể khử, là tính ngẫu nhiên vốn có trong nhãn mà không model nào có thể loại bỏ.
Lặp lại quá trình khớp model giúp đo trực tiếp cả hai thành phần. Ví dụ NumPy này khớp đa thức bậc 1, 3 và 12 trên 1.000 tập huấn luyện, mỗi tập gồm 20 điểm nhiễu lấy từ sóng sin:
import numpy as np
rng = np.random.default_rng(0)
x = np.linspace(0, 1, 20) # 20 training inputs, evenly spaced
x_test = np.linspace(0, 1, 200)
true_curve = np.sin(2 * np.pi * x_test)
for degree in [1, 3, 12]:
# Fit the same polynomial degree to 1,000 training sets that differ only in their label noise
predictions = []
for _ in range(1000):
y = np.sin(2 * np.pi * x) + rng.normal(0, 0.3, x.size)
predictions.append(np.polyval(np.polyfit(x, y, degree), x_test))
predictions = np.array(predictions)
# Bias^2: squared gap between the average fit and the truth; variance: spread of fits around their average
bias_sq = np.mean((predictions.mean(axis=0) - true_curve) ** 2)
variance = np.mean(predictions.var(axis=0))
print(f"Degree {degree:2d}: bias^2 = {bias_sq:.3f}, variance = {variance:.3f}")Đường thẳng có bình phương bias là 0.205 và variance chỉ 0.008. Đa thức bậc ba gần như khớp chính xác với sóng sin khi lấy trung bình, giảm bình phương bias xuống 0.005 trong khi variance tăng gấp đôi lên 0.016. Đa thức bậc 12 hầu như không có bias đo được nhưng variance là 0.074, vì nó uốn theo nhiễu trong từng mẫu. Đa thức bậc ba có tổng sai số thấp nhất, và mọi model đều chịu thêm variance nhiễu không thể khử là 0.09.
Chẩn đoán bias và variance#
Sai số huấn luyện và validation cho biết thành phần nào chi phối. Sai số cao ở cả hai cho thấy bias. Sai số huấn luyện thấp nhưng sai số validation cao hơn nhiều cho thấy variance. Đường cong học tập, biểu diễn hai loại sai số theo lượng dữ liệu huấn luyện, giúp phân biệt hai trường hợp: khoảng cách của model có variance cao thu hẹp khi dữ liệu tăng, trong khi hai đường cong của model có bias cao sớm hội tụ ở mức sai số cao rồi giữ nguyên. Trong quá trình huấn luyện Ultralytics YOLO, tham số fraction dùng một phần của tập huấn luyện, chẳng hạn fraction=0.25 để lấy một phần tư số ảnh đầu tiên, còn validation vẫn dùng toàn bộ tập validation; do đó, một vài lần chạy YOLO26 trên các tỷ lệ dữ liệu tăng dần sẽ vẽ được đường cong học tập cho dataset tùy chỉnh.
Điều chỉnh sự đánh đổi#
Variance giảm khi có thêm dữ liệu, tăng cường dữ liệu, regularization như weight decay và dropout, dừng sớm và lấy trung bình nhiều model, như bagging và random forest thực hiện. Bias giảm khi dùng model lớn hơn, feature engineering phong phú hơn, regularization yếu hơn, huấn luyện lâu hơn và boosting—phương pháp bổ sung các model để sửa lỗi của ensemble hiện tại. Tinh chỉnh hyperparameter và cross-validation giúp chọn cấu hình cân bằng hai thành phần trên dữ liệu giữ lại.
Đường cong hình chữ U kinh điển của sai số kiểm thử theo độ phức tạp đúng với một họ model cố định, chẳng hạn đa thức có bậc tăng dần. Mạng neural có số tham số vượt mức rất lớn có thể vượt qua quy luật này: sai số kiểm thử tăng khi model tiến gần đến kích thước có thể khớp chính xác mọi điểm huấn luyện, rồi lại giảm khi model tiếp tục lớn hơn; hiện tượng này gọi là double descent. Bias và variance vẫn cộng thành sai số, nhưng variance không còn tăng đều theo số lượng tham số.
Bias thống kê và các dạng bias khác#
Bias trong sự đánh đổi này là thuộc tính của thuật toán học trên một tác vụ. Bias trong AI đề cập đến sự bất công có hệ thống đối với các nhóm người, còn bias của dataset là tình trạng dữ liệu huấn luyện mô tả sai môi trường triển khai, chẳng hạn khi thiếu video giao thông ban đêm. Model có thể có bias thống kê thấp nhưng vẫn bất công, vì model có thể khớp chính xác một dataset lệch, bao gồm cả độ lệch đó.










