Catastrophic Forgetting
Quên thảm họa là hiện tượng mất đột ngột các kỹ năng trước đó khi mạng nơ-ron được huấn luyện trên dữ liệu mới. Nội dung đề cập lý do xảy ra, ví dụ và biện pháp giảm thiểu.
Quên thảm họa, còn gọi là nhiễu loạn thảm họa, là sự mất đột ngột các kỹ năng đã học trước đó khi mạng nơ-ron được huấn luyện trên dữ liệu mới không còn chứa ví dụ của tác vụ cũ. Quá trình huấn luyện cập nhật cùng các trọng số model dùng chung, vốn lưu trữ kiến thức cũ; hàm loss mới không có thành phần nào khuyến khích duy trì kiến thức đó, nên độ chính xác trên tác vụ ban đầu có thể sụt giảm trong vài trăm lượt cập nhật. McCloskey và Cohen mô tả hiện tượng này vào năm 1989 trên các mạng học tuần tự các phép tính số học; đây vẫn là trở ngại trung tâm của học liên tục và là rủi ro thường gặp khi fine-tune.
Vì sao xảy ra hiện tượng quên thảm họa#
Kiến thức trong mạng nơ-ron được phân tán: mỗi trọng số đóng góp vào nhiều đầu ra, và mỗi đầu ra phụ thuộc vào nhiều trọng số. Khi huấn luyện trên tác vụ mới, trọng số dịch chuyển theo hướng làm loss giảm nhanh nhất mà không có thành phần đo lường tác vụ cũ, khiến model rời khỏi vùng hoạt động hiệu quả cho tác vụ cũ. Phân loại làm hiệu ứng này rõ hơn ở lớp đầu ra. Khi chỉ có các lớp mới xuất hiện trong dữ liệu huấn luyện, mỗi bước đều đẩy điểm số của các lớp vắng mặt xuống thấp cho đến khi model ngừng dự đoán các lớp đó. Một mạng nhỏ được huấn luyện trên chữ số viết tay 0–4 rồi tiếp tục huấn luyện trên chữ số 5–9 minh họa điều này, đồng thời cho thấy phát lại một mẫu nhỏ dữ liệu cũ giúp hạn chế hiện tượng ra sao:
import torch
from sklearn.datasets import load_digits
torch.manual_seed(0)
X, y = load_digits(return_X_y=True)
X, y = torch.tensor(X / 16, dtype=torch.float32), torch.tensor(y)
train = torch.arange(len(y)) < 1400 # hold out the last 397 images for testing
task_a, task_b, test_a = train & (y < 5), train & (y >= 5), ~train & (y < 5)
replay = task_a & (torch.rand(len(y)) < 0.1) # keep 10% of task A for replay
for name, second_task in [("task B only", task_b), ("task B + 10% replay", task_b | replay)]:
model = torch.nn.Sequential(torch.nn.Linear(64, 64), torch.nn.ReLU(), torch.nn.Linear(64, 10))
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)
# Train on digits 0-4 (task A), then on digits 5-9 (task B)
for mask in (task_a, second_task):
for _ in range(200):
loss = torch.nn.functional.cross_entropy(model(X[mask]), y[mask])
optimizer.zero_grad()
loss.backward()
optimizer.step()
accuracy = (model(X[test_a]).argmax(1) == y[test_a]).float().mean()
print(f"{name}: held-out digits 0-4 accuracy {accuracy:.1%}")Sau tác vụ A, mạng phân loại chính xác 92.4% trong số 198 chữ số 0–4 được giữ lại để đánh giá. Chỉ huấn luyện trên chữ số 5–9 làm tỷ lệ này giảm xuống 0.0% vì model giờ chỉ dự đoán các lớp mới. Trộn 66 ảnh của tác vụ A được phát lại vào giai đoạn thứ hai giúp duy trì độ chính xác 74.7%.
Quên thảm họa trong thực tế#
- Phát hiện đối tượng: Một bộ phát hiện được huấn luyện trên người đi bộ và biển báo giao thông, sau đó chỉ fine-tune trên ảnh các biển báo công trường mới, sẽ ngừng phát hiện người đi bộ. Mọi người đi bộ xuất hiện nhưng không được gắn nhãn trong ảnh mới đều bị xem như nền trong quá trình huấn luyện, khiến model quên nhanh hơn.
- Model ngôn ngữ lớn: Trong quá trình tinh chỉnh chỉ dẫn liên tục cho LLM từ 1 tỷ đến 7 tỷ tham số, kiến thức miền, năng lực suy luận và khả năng đọc hiểu đều suy giảm, và mức độ quên tăng lên theo quy mô model trong phạm vi đó. Fine-tune các model đã căn chỉnh, kể cả trên dữ liệu lành tính, có thể làm suy yếu hành vi an toàn của chúng.
Quên thảm họa và các thuật ngữ liên quan#
- Học liên tục: Lĩnh vực nghiên cứu cách học một chuỗi tác vụ mà không quên các tác vụ trước đó. Quên thảm họa là vấn đề mà lĩnh vực này hướng đến giải quyết.
- Sụp đổ model: Chất lượng và tính đa dạng giảm dần khi model được huấn luyện trên dữ liệu do các model trước đó tạo ra, kể cả khi cùng thực hiện một tác vụ.
- Quá khớp: Khớp quá sát với nhiễu trong dữ liệu huấn luyện hiện tại khiến hiệu năng trên dữ liệu mới thuộc cùng tác vụ suy giảm. Quên là mất đi năng lực của một tác vụ trước đó.
- Quên máy: Chủ động loại bỏ dữ liệu hoặc kiến thức cụ thể khỏi model đã huấn luyện; đây là mặt đối lập có chủ đích của việc quên.
- Thế lưỡng nan ổn định-tính mềm dẻo: Sự đánh đổi giữa việc giữ kiến thức cũ ổn định và duy trì đủ tính mềm dẻo để học tác vụ mới, được mỗi biện pháp giảm thiểu cân bằng theo cách khác nhau.
Cách giảm quên thảm họa#
Các biện pháp giảm thiểu thuộc ba nhóm: phát lại, chính quy hóa và cô lập tham số; các ràng buộc của dự án thường quyết định nhóm nào phù hợp:
- Phát lại: Trộn các ví dụ đã lưu của tác vụ trước vào quá trình huấn luyện mới là cách khắc phục đáng tin cậy nhất, như ví dụ về chữ số đã cho thấy. Với bộ phát hiện YOLO26, các tệp YAML dữ liệu của Ultralytics chấp nhận danh sách thư mục ảnh huấn luyện; vì vậy, phát lại nghĩa là liệt kê một mẫu ảnh gốc cùng ảnh mới dưới một danh sách lớp kết hợp.
- Chính quy hóa: Kết hợp đàn hồi các trọng số (EWC) phạt mức thay đổi của từng trọng số theo tầm quan trọng của trọng số đó đối với các tác vụ trước, được ước tính từ thông tin Fisher. Học mà không quên thay vào đó sử dụng chưng cất tri thức, huấn luyện model tiếp tục khớp với đầu ra cũ trên dữ liệu mới.
- Cô lập tham số: Đóng băng các lớp dùng chung, thêm các head riêng cho từng tác vụ hoặc huấn luyện adapter như LoRA giúp giữ nguyên các trọng số ban đầu. Trên các tác vụ lập trình và toán học, LoRA học ít hơn fine-tune toàn phần nhưng cũng quên ít hơn; fine-tune toàn phần học được các thay đổi trọng số có rank cao hơn từ 10 đến 100 lần so với cấu hình LoRA thông thường.










