Khám phá cách các lớp dropout ngăn chặn overfitting trong mạng neural bằng cách cải thiện khả năng tổng quát hóa, tính mạnh mẽ và hiệu suất của mô hình.
Lớp dropout là một kỹ thuật điều chỉnh cơ bản được sử dụng trong mạng nơ-ron (NN) để ngăn ngừa vấn đề thường gặp là quá khớp . Khi một mô hình được huấn luyện trên một tập dữ liệu, nó có nguy cơ học nhiễu và các chi tiết cụ thể của dữ liệu huấn luyện thay vì các mẫu chung cơ bản. Việc ghi nhớ này dẫn đến hiệu suất kém trên dữ liệu mới, chưa được biết đến. Dropout giải quyết vấn đề này bằng cách vô hiệu hóa ngẫu nhiên—hay còn gọi là "dropout"—một phần nhỏ các nơ-ron trong một lớp trong mỗi bước của quá trình huấn luyện. Chiến lược đơn giản nhưng hiệu quả này đã được giới thiệu trong một bài báo nghiên cứu quan trọng của Geoffrey Hinton và các đồng nghiệp, góp phần đáng kể vào sự phát triển của lĩnh vực học sâu (DL) .
Cơ chế đằng sau lớp dropout khá đơn giản nhưng mạnh mẽ. Trong giai đoạn huấn luyện mô hình , lớp này tạo ra một mặt nạ gồm các số 0 và 1 dựa trên một xác suất xác định, được gọi là tỷ lệ dropout. Nếu tỷ lệ được đặt thành 0,5, khoảng 50% số nơ-ron sẽ tạm thời bị bỏ qua trong quá trình chuyển tiếp và chuyển ngược đó. Điều này buộc các nơ-ron hoạt động còn lại phải tăng tốc và học các đặc điểm mạnh mẽ một cách độc lập, ngăn không cho mạng lưới phụ thuộc quá nhiều vào bất kỳ nơ-ron đơn lẻ nào - một hiện tượng được gọi là đồng thích ứng .
Trong quá trình suy luận , hay giai đoạn kiểm thử, lớp dropout thường bị tắt. Tất cả các neuron đều hoạt động để tận dụng tối đa khả năng của mô hình đã được huấn luyện. Để đảm bảo tổng giá trị kích hoạt luôn nhất quán với giai đoạn huấn luyện, các trọng số thường được khung tự động điều chỉnh tỷ lệ. Các thư viện hiện đại như PyTorch xử lý các thao tác này một cách liền mạch trong quá trình triển khai dropout .
Đối với người dùng ultralytics gói, áp dụng dropout cho một mô hình như
YOLO11 đơn giản như việc điều chỉnh một lập luận đào tạo.
from ultralytics import YOLO
# Load a standard YOLO11 model
model = YOLO("yolo11n.pt")
# Train the model on a dataset with a custom dropout rate of 0.2
# This helps prevent overfitting on smaller datasets
results = model.train(data="coco8.yaml", epochs=10, dropout=0.2)
Dropout là điều không thể thiếu trong nhiều lĩnh vực của trí tuệ nhân tạo (AI), nơi các mô hình dễ bị quá khớp do số lượng tham số lớn hoặc dữ liệu hạn chế.
Hiểu được sự khác biệt giữa dropout và các kỹ thuật khác là rất quan trọng để điều chỉnh siêu tham số hiệu quả.