Unsupervised Domain Adaptation (UDA)
Thích ứng miền không giám sát điều chỉnh model được huấn luyện trên dữ liệu nguồn có nhãn sang miền đích mới chỉ có dữ liệu chưa gán nhãn, giúp thu hẹp khoảng cách miền.
Thích ứng miền không giám sát (UDA) điều chỉnh một model được huấn luyện trên dữ liệu có nhãn từ một bối cảnh, gọi là miền nguồn, để model hoạt động trong bối cảnh khác, gọi là miền đích, nơi chỉ có dữ liệu không nhãn. Hai miền có chung tác vụ và lớp, nhưng đầu vào trông khác nhau: ảnh dựng tổng hợp so với ảnh chụp thực, máy quét của bệnh viện này so với bệnh viện khác, đường phố ban ngày so với ban đêm, hoặc model camera này so với model khác. Model chỉ được huấn luyện trên miền nguồn thường mất nhiều độ chính xác trên miền đích; UDA khôi phục độ chính xác mà không phải trả chi phí gán nhãn dữ liệu ở miền mới. Đây là một nhánh của học chuyển giao, và từ “không giám sát” chỉ việc thiếu nhãn ở miền đích.
Vì sao dịch chuyển miền làm giảm hiệu năng#
Shai Ben-David cùng các cộng sự đưa ra lý thuyết chuẩn cho vấn đề này vào năm 2010. Lỗi của bộ phân loại trên miền đích được chặn bởi ba thành phần: lỗi trên miền nguồn, thước đo mức khác biệt giữa hai miền theo họ bộ phân loại, và lỗi của bộ phân loại đơn tốt nhất cho cả hai miền. Thành phần đầu tiên được giảm bằng cách huấn luyện thông thường trên nhãn miền nguồn. Hầu hết phương pháp UDA xử lý thành phần thứ hai, học các đặc trưng sao cho đầu vào miền nguồn và miền đích trông giống nhau; thành phần thứ ba nhắc rằng thích ứng sẽ thất bại khi quan hệ nhãn giữa các miền thay đổi.
Các phương pháp chính#
- Ghép thống kê: Căn chỉnh các thống kê đơn giản của đặc trưng miền nguồn và miền đích. Maximum mean discrepancy và CORAL, phương pháp ghép hiệp phương sai đặc trưng, bổ sung một thành phần phạt vào loss huấn luyện; còn AdaBN, do Yanghao Li cùng các cộng sự đề xuất năm 2016, chỉ tính lại giá trị trung bình và phương sai của từng lớp batch normalization trên dữ liệu đích.
- Căn chỉnh đối kháng: Mạng nơ-ron đối kháng miền (DANN), do Yaroslav Ganin và Victor Lempitsky giới thiệu năm 2015, huấn luyện một bộ phân loại miền để phân biệt đặc trưng nguồn với đặc trưng đích; lớp đảo ngược gradient khiến bộ trích xuất đặc trưng đánh lừa bộ phân loại đó.
- Chuyển đổi ảnh: Các model sinh như CycleGAN thay đổi phong cách ảnh nguồn để chúng trông giống miền đích, nhờ đó ảnh huấn luyện có nhãn gần giống dữ liệu triển khai, như trong CyCADA cho cảnh giao thông.
- Tự huấn luyện: Model nguồn gán nhãn cho ảnh đích, các dự đoán có độ tin cậy cao trở thành nhãn giả, rồi model được huấn luyện lại trên các nhãn đó; thường sử dụng model giáo viên được cập nhật chậm để giữ nhãn ổn định.
- Thích ứng không cần miền nguồn và thích ứng lúc kiểm thử: SHOT điều chỉnh model đã huấn luyện mà không cần truy cập dữ liệu nguồn; TENT chỉ cập nhật các tham số batch normalization trong khi suy luận bằng cách làm cho dự đoán trên các batch kiểm thử có độ tin cậy cao hơn.
AdaBN cho thấy khoảng cách miền có thể nằm nhiều đến mức nào trong các thống kê của lớp batch normalization. Ví dụ PyTorch này huấn luyện mạng nhỏ trên 1.000 chữ số viết tay và kiểm thử trên các chữ số còn lại được biến đổi giống như ảnh chụp bằng camera bị bạc màu, với độ tương phản thấp hơn và độ sáng cao hơn:
import torch
from sklearn.datasets import load_digits
from torch import nn
torch.manual_seed(0)
X, y = load_digits(return_X_y=True)
X, y = torch.tensor(X / 16, dtype=torch.float32), torch.tensor(y)
target_x = 0.3 * X[1000:] + 0.6 # target domain: the last 797 digits as a washed-out camera would capture them
# Train on the labeled source domain, the first 1,000 digits
model = nn.Sequential(nn.Linear(64, 64), nn.BatchNorm1d(64), nn.ReLU(), nn.Linear(64, 10))
optimizer = torch.optim.Adam(model.parameters(), lr=1e-2)
for _ in range(200):
optimizer.zero_grad()
nn.functional.cross_entropy(model(X[:1000]), y[:1000]).backward()
optimizer.step()
model.eval()
print(f"Target accuracy before adaptation: {(model(target_x).argmax(1) == y[1000:]).float().mean():.3f}")
# AdaBN: replace the source BatchNorm statistics with those of the unlabeled target images
model[1].reset_running_stats()
model[1].momentum = None # use a plain average over the target batch
model.train()
with torch.no_grad():
model(target_x)
model.eval()
print(f"Target accuracy after adaptation: {(model(target_x).argmax(1) == y[1000:]).float().mean():.3f}")Độ chính xác trên các chữ số đã dịch chuyển tăng từ 0,290 lên 0,940 mà không cần một nhãn đích nào, gần với mức 94% mà cùng model đạt được trên các chữ số đó trước khi dịch chuyển. Mức cải thiện lớn như vậy là do thay đổi độ tương phản và độ sáng biến thành dịch chuyển và tỷ lệ theo từng đặc trưng sau lớp tuyến tính đầu tiên, đúng với những gì việc chuẩn hóa lại loại bỏ; các dịch chuyển về hình dạng hoặc nội dung cần đến những phương pháp mạnh hơn nêu trên.
Benchmark và ứng dụng#
Office-31, do Kate Saenko cùng các cộng sự công bố năm 2010, gồm 4.110 ảnh của 31 vật thể văn phòng thuộc ba miền: ảnh sản phẩm Amazon, ảnh webcam và ảnh DSLR. VisDA-2017 yêu cầu model được huấn luyện trên ảnh dựng 3D tổng hợp của 12 danh mục vật thể phân loại ảnh thực; GTA5-to-Cityscapes huấn luyện phân đoạn ngữ nghĩa trên 24.966 khung hình từ một trò chơi điện tử rồi kiểm thử trên đường phố thực.
Mẫu hình tương tự thúc đẩy các ứng dụng thực tế. Xe tự hành bổ sung cảnh quay lái xe thực bằng dữ liệu tổng hợp và ảnh dựng từ trình mô phỏng; model phân tích ảnh y tế phải hoạt động với nhiều nhà cung cấp máy quét và bệnh viện; còn model nông nghiệp phải thích nghi với cánh đồng, giống cây trồng và mùa vụ mới. Detector thường được điều chỉnh bằng tự huấn luyện: hàm auto_annotate trong gói Python Ultralytics chạy detector YOLO26 trên một thư mục ảnh chưa gán nhãn, dùng từng box phát hiện được để đưa prompt vào Segment Anything Model (SAM) của Meta, rồi ghi nhãn phân đoạn theo định dạng YOLO; nhờ vậy, detector được huấn luyện trên miền nguồn có thể tạo nhãn giả cho ảnh miền đích để xem xét và tinh chỉnh.
UDA và các bối cảnh liên quan#
Tinh chỉnh có giám sát cần nhãn từ miền đích, còn học bán giám sát giả định dữ liệu có nhãn và không nhãn đến từ cùng một phân phối. Khái quát hóa miền hoàn toàn không có dữ liệu đích, thay vào đó huấn luyện để tăng độ vững trước các miền chưa thấy bằng tăng cường dữ liệu và ngẫu nhiên hóa miền. Tối ưu hóa vững với phân phối chuẩn bị cho một tập hợp các dịch chuyển có thể xảy ra, trong khi UDA điều chỉnh theo một miền đích mà model đã thấy ảnh của miền đó; còn giám sát độ lệch dữ liệu cho biết khi nào model đã triển khai đi vào một miền mới cần được điều chỉnh.










