Semi-Supervised Learning
Học bán giám sát huấn luyện model trên một số ví dụ có nhãn cùng nhiều ví dụ chưa có nhãn để giảm chi phí gán nhãn. Bài viết đề cập đến gán nhãn giả, tính nhất quán và mã nguồn.
Học bán giám sát huấn luyện model đồng thời trên một tập nhỏ mẫu có nhãn và tập lớn hơn nhiều gồm các mẫu chưa gắn nhãn, khai thác dữ liệu chưa gắn nhãn để đạt độ chính xác cao hơn mức nhãn đơn thuần cho phép. Phương pháp này nằm giữa học có giám sát, trong đó mọi mẫu huấn luyện đều có nhãn, và học không giám sát, trong đó không mẫu nào có nhãn. Cách tiếp cận này phù hợp với thị giác máy tính vì camera thu thập ảnh với chi phí thấp, trong khi gắn nhãn dữ liệu, chẳng hạn vẽ hộp hoặc mask hay ghi nhận chẩn đoán, tốn thời gian của con người và thường đòi hỏi kiến thức chuyên môn. FixMatch đạt độ chính xác 88,61% trên benchmark ảnh CIFAR-10 chỉ với 4 ảnh có nhãn mỗi lớp; Noisy Student nâng độ chính xác top-1 trên ImageNet lên 88,4% bằng cách thêm pseudo-label cho 300 triệu ảnh chưa gắn nhãn.
Cách học bán giám sát hoạt động#
Dữ liệu chưa gắn nhãn hữu ích vì cho thấy hình dạng của phân phối dữ liệu. Các phương pháp giả định rằng những mẫu nằm gần nhau trong vùng có mật độ cao sẽ cùng nhãn, vì vậy ranh giới quyết định giữa các lớp nên đi qua những vùng thưa có ít mẫu. Ba họ phương pháp áp dụng nguyên tắc này.
Gán pseudo-label, còn gọi là tự huấn luyện, huấn luyện model trên dữ liệu có nhãn, chạy model trên dữ liệu chưa gắn nhãn, rồi giữ lại các dự đoán vượt ngưỡng độ tin cậy làm dữ liệu huấn luyện bổ sung. Trong các biến thể teacher-student, model đã huấn luyện trở thành teacher để gán nhãn cho tập dữ liệu; student, thường có kích thước bằng hoặc lớn hơn teacher, được huấn luyện trên cả dữ liệu thật và pseudo-label rồi trở thành teacher tiếp theo:
Điều chuẩn tính nhất quán yêu cầu model đưa ra cùng một dự đoán cho các biến đổi khác nhau của cùng một ảnh chưa gắn nhãn, chẳng hạn hai phép tăng cường dữ liệu khác nhau. FixMatch kết hợp hai ý tưởng: phương pháp tạo pseudo-label từ góc nhìn được tăng cường nhẹ chỉ khi model đủ tin cậy, rồi huấn luyện model dự đoán nhãn đó trên góc nhìn được tăng cường mạnh của cùng ảnh. Các phương pháp dựa trên đồ thị kết nối những mẫu tương tự thành đồ thị và lan truyền nhãn đã biết dọc theo các cạnh. Rủi ro chính là thiên lệch xác nhận: pseudo-label sai được dùng để huấn luyện, khiến model dự đoán chúng với độ tin cậy ngày càng cao; vì vậy các phương pháp sử dụng ngưỡng cao, tăng cường mạnh hoặc teacher có trọng số là trung bình trượt chậm của student.
Ví dụ scikit-learn này chỉ giữ nhãn của 2 ảnh cho mỗi chữ số và so sánh bộ phân loại có giám sát được huấn luyện trên 20 ảnh đó với phương pháp lan truyền nhãn dựa trên đồ thị, vốn cũng sử dụng 1.237 ảnh huấn luyện chưa gắn nhãn:
import numpy as np
from sklearn.datasets import load_digits
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.semi_supervised import LabelSpreading
X, y = load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X / 16, y, test_size=0.3, random_state=0, stratify=y)
# Keep the labels of only 2 training images per digit; -1 marks every other image as unlabeled
labeled = np.concatenate([np.flatnonzero(y_train == digit)[:2] for digit in range(10)])
y_partial = np.full_like(y_train, -1)
y_partial[labeled] = y_train[labeled]
# Supervised baseline trains on the 20 labeled images; label spreading also uses the unlabeled ones
supervised = LogisticRegression(max_iter=5000).fit(X_train[labeled], y_train[labeled])
semi_supervised = LabelSpreading(kernel="knn", n_neighbors=10).fit(X_train, y_partial)
print(f"Supervised, 20 labeled images: {supervised.score(X_test, y_test):.3f}")
print(f"Semi-supervised, 20 labeled + {(y_partial == -1).sum()} unlabeled: {semi_supervised.score(X_test, y_test):.3f}")Trên 540 chữ số được giữ lại để kiểm tra, bộ phân loại có giám sát đạt 0,800 còn phương pháp lan truyền nhãn đạt 0,919 với cùng 20 nhãn, vì các ảnh chưa gắn nhãn kết nối mỗi mẫu có nhãn với nhiều ảnh tương tự mang cùng chữ số.
Học bán giám sát trong thị giác máy tính#
Gán pseudo-label kiểu teacher-student mở rộng được sang các tác vụ có nhãn tốn công vẽ nhất, chẳng hạn mask phân đoạn đối tượng và bản đồ độ sâu. Các phương pháp phát hiện đối tượng bán giám sát như Unbiased Teacher giữ lại các pseudo-box có độ tin cậy cao từ teacher; Depth Anything huấn luyện model ước tính độ sâu đơn ảnh trên khoảng 62 triệu ảnh chưa gắn nhãn được model teacher tự động gán nhãn. Các model độ sâu Ultralytics YOLO26 cũng được pretrain theo cách tương tự: 1,281,167 ảnh huấn luyện ImageNet, không có ground truth về độ sâu, được gán pseudo depth map từ các model teacher Depth Anything 3 và chiếm khoảng 58% trong tập kết hợp 2,19 triệu ảnh, vốn cũng bao gồm các tập dữ liệu độ sâu có ground truth thực. Với tác vụ phát hiện, một model YOLO26 lớn có thể đóng vai trò teacher và ghi các dự đoán đủ tin cậy thành file nhãn định dạng YOLO, một hình thức đơn giản của tự động gắn nhãn:
from ultralytics import YOLO
from ultralytics.utils import ASSETS
# Một model YOLO26 lớn đã pretrain đóng vai trò teacher
teacher = YOLO("yolo26x.pt")
# Gắn nhãn một thư mục ảnh chưa gắn nhãn; chỉ các đối tượng phát hiện có độ tin cậy trên 0.5 mới trở thành pseudo-label
# save_txt=True ghi một file nhãn .txt định dạng YOLO cho mỗi ảnh, sẵn sàng để huấn luyện model student
results = teacher.predict(source=ASSETS, conf=0.5, save_txt=True)Học bán giám sát và các thuật ngữ liên quan#
- Học chủ động: Chọn những ảnh chưa gắn nhãn chứa nhiều thông tin nhất và gửi chúng cho người gắn nhãn. Học bán giám sát tự động gắn nhãn cho tập dữ liệu; nhiều pipeline gắn nhãn kết hợp cả hai phương pháp.
- Học tự giám sát: Chỉ pretrain trên dữ liệu chưa gắn nhãn, với mục tiêu được suy ra từ dữ liệu, rồi mới sử dụng nhãn trong quá trình fine-tune. Học bán giám sát dùng dữ liệu có nhãn và chưa gắn nhãn trong cùng một lần huấn luyện.
- Học chuyển giao: Bắt đầu từ model được pretrain trên tập dữ liệu khác. Phương pháp này kết hợp với học bán giám sát vì model đã pretrain giúp tạo teacher ban đầu tốt hơn.
- Chưng cất tri thức: Huấn luyện student khớp với đầu ra của teacher, thường để nén model. Gán pseudo-label dùng cùng cấu trúc teacher-student để bổ sung dữ liệu huấn luyện; Noisy Student huấn luyện student có kích thước bằng hoặc lớn hơn teacher, thêm nhiễu trong quá trình huấn luyện và vượt model ImageNet tốt nhất trước đó 2,0%; model trước đó được pretrain trên 3,5 tỷ ảnh Instagram gắn nhãn yếu.










