Curriculum Learning
Học theo chương trình huấn luyện model bằng các ví dụ dễ trước, rồi dần bổ sung ví dụ khó hơn, dựa trên điểm độ khó và hàm điều chỉnh nhịp độ.
Học theo chương trình giảng dạy là chiến lược huấn luyện machine learning, trong đó các ví dụ được đưa vào theo một thứ tự có ý nghĩa, thường từ dễ đến khó, thay vì lấy mẫu ngẫu nhiên đồng đều. Tương tự chương trình học ở trường, phương pháp này giúp mạng nơ-ron học các quy luật tổng quát, đơn giản từ ví dụ rõ ràng trước khi gặp ví dụ mơ hồ, lộn xộn hoặc nhiễu. Bengio và cộng sự đề xuất ý tưởng này cho deep learning vào năm 2009, lập luận rằng bắt đầu từ ví dụ dễ giúp tối ưu hóa hàm loss phi lồi hướng tới các cực tiểu tốt hơn; họ báo cáo mức cải thiện đáng kể về khả năng tổng quát hóa trong các tác vụ nhận dạng hình dạng và mô hình hóa ngôn ngữ.
Cách thức hoạt động của học theo chương trình#
Chương trình học cần hai thành phần mà Hacohen và Weinshall gọi là hàm chấm điểm và hàm điều tiết tiến độ. Hàm chấm điểm xếp hạng dữ liệu huấn luyện theo độ khó, dựa trên các tiêu chí kinh nghiệm của con người như kích thước đối tượng, mức độ che khuất hoặc độ dài câu; độ tin cậy của model teacher đã tiền huấn luyện; hoặc loss của model đang được huấn luyện. Hàm điều tiết tiến độ quyết định tốc độ bổ sung các ví dụ khó hơn vào tập dữ liệu huấn luyện, chẳng hạn bắt đầu với 20% ví dụ dễ nhất rồi tăng tuyến tính lên toàn bộ tập dữ liệu. Đoạn mã dưới đây dùng model teacher chấm điểm một tập dữ liệu mẫu và huấn luyện model student trên tập dữ liệu tăng dần, ưu tiên ví dụ dễ nhất, bằng scikit-learn:
import numpy as np
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression, SGDClassifier
# A toy dataset with 10% flipped labels, so some samples are genuinely hard
X, y = make_classification(n_samples=2000, n_features=20, flip_y=0.1, random_state=0)
# Scoring function: a teacher's confidence in each true label, sorted easiest first
teacher = LogisticRegression(max_iter=1000).fit(X, y)
confidence = teacher.predict_proba(X)[np.arange(len(y)), y]
order = np.argsort(-confidence)
# Pacing function: start with the easiest 20% and add 20% more each epoch
student = SGDClassifier(random_state=0)
for epoch in range(5):
pool = order[: int((0.2 + 0.2 * epoch) * len(order))]
student.partial_fit(X[pool], y[pool], classes=[0, 1])
print(f"Epoch {epoch}: {len(pool)} samples, mean teacher confidence {confidence[pool].mean():.2f}")Tập dữ liệu tăng từ 400 lên 2.000 mẫu, còn độ tin cậy trung bình của teacher giảm từ 0.99 xuống 0.89 khi 20% mẫu cuối cùng, khó nhất, được đưa vào ở epoch cuối.
Học theo nhịp độ tự điều chỉnh loại bỏ nhu cầu về teacher bằng cách để model tự xây dựng chương trình học dựa trên loss hiện tại; đây là một trong những nhóm phương pháp chính trong bài khảo sát của Soviany và cộng sự. Ở mỗi vòng, các mẫu mà model đã xử lý tốt sẽ được đưa vào tập huấn luyện, còn ngưỡng loss tăng dần cho đến khi tất cả mẫu được đưa vào.
Khi nào học theo chương trình giảng dạy hữu ích#
Chương trình học ít hữu ích hơn so với trực giác thường gợi ý. Qua hàng nghìn lần chạy huấn luyện, Wu, Dyer và Neyshabur chỉ tìm thấy lợi ích nhỏ trên các benchmark ảnh tiêu chuẩn, nơi dữ liệu được sắp xếp ngẫu nhiên trong tập dữ liệu tăng dần cũng cho kết quả tương đương thứ tự từ dễ đến khó. Chương trình học cải thiện kết quả khi ngân sách thời gian huấn luyện bị giới hạn hoặc nhãn bị nhiễu — những trường hợp mà người thực hành thường áp dụng phương pháp này nhất.
Ứng dụng thực tế#
Trong học tăng cường cho robot, chương trình học tăng độ khó của tác vụ khi agent tiến bộ. OpenAI huấn luyện một bàn tay robot giải khối Rubik bằng ngẫu nhiên hóa miền tự động, mở rộng phạm vi vật lý và diện mạo mô phỏng mỗi khi policy thực hiện đủ tốt trong phạm vi hiện tại.
Trong thị giác máy tính, chương trình học cho phát hiện đối tượng có thể bắt đầu với các đối tượng lớn, không bị che khuất, rồi bổ sung các cảnh có đối tượng nhỏ, đông đúc hoặc thiếu sáng ở giai đoạn sau. Quá trình huấn luyện Ultralytics YOLO26 cũng thay đổi trọng tâm theo thời gian: loss end-to-end thay đổi trọng số ở mỗi epoch từ head one-to-many dày đặc sang head one-to-one được nms=False sử dụng, còn close_mosaic=10 tắt mosaic, mixup, CutMix và copy-paste tăng cường dữ liệu trong 10 epoch cuối để quá trình huấn luyện kết thúc với những ảnh giống đầu vào thực tế. Với phân tích ảnh y tế, quá trình huấn luyện có thể bắt đầu bằng các ảnh quét được chuyên gia chú giải đồng thuận, rồi bổ sung các trường hợp mơ hồ sau; cách này phù hợp với tình huống nhãn nhiễu, nơi chương trình học phát huy hiệu quả nhất.
Học theo chương trình giảng dạy và các khái niệm liên quan#
- Học liên tục: Học liên tục bổ sung các tác vụ hoặc phân phối dữ liệu mới theo thời gian và phải tránh quên các tác vụ cũ. Học theo chương trình giảng dạy sắp xếp lại dữ liệu của một tác vụ cố định duy nhất.
- Học chủ động: Học chủ động chọn các ví dụ chưa gán nhãn để gửi đi gán nhãn, còn học theo chương trình giảng dạy sắp xếp các ví dụ đã có nhãn.
- Học chuyển giao: Học chuyển giao tiền huấn luyện trên một tập dữ liệu tổng quát lớn rồi fine-tune trên một tác vụ đích khác, tức bản thân tác vụ thay đổi giữa các giai đoạn.
- Khai thác mẫu âm khó: Khai thác ví dụ khó tập trung vào những ví dụ mà model dự đoán sai nhiều nhất, trái ngược với chương trình học ưu tiên ví dụ dễ. Phương pháp khai thác ví dụ khó trực tuyến (OHEM) cho detector Fast R-CNN chỉ lan truyền ngược qua các region proposal có loss cao nhất trong mỗi ảnh.










