Dropout
Dropout
Tắt ngẫu nhiên một phần nơ-ron ở mỗi lượt huấn luyện, để mạng học bền hơn thay vì học vẹt.
Một mạng lớn dễ tìm ra vài nơ-ron cùng nhau ghi nhớ đúng tập huấn luyện: chúng bắt tay thành một đường tắt, cho điểm đẹp trên dữ liệu đã thấy nhưng hỏng ngay khi gặp dữ liệu mới. Đó là overfit, và gốc rễ là mạng dựa dẫm quá nhiều vào vài đường cố định.
Dropout phá thói dựa dẫm đó bằng cách rất thô: ở mỗi lượt huấn luyện, mỗi nơ-ron có xác suất p bị tắt hẳn, dây của nó coi như không tồn tại trong lượt đó. Nơ-ron không biết trước bạn nào sẽ còn mặt, nên không thể trông cậy vào một đường duy nhất, buộc phải học tín hiệu hữu ích một cách phân tán.
Thử ngay
Thử điều này:
- Bấm
Đổi mẫunhiều lần ở cùng mộtp: hầu như lần nào cũng ra một mạng con khác, cùng bộ trọng số nhưng khác hình. Lớp ẩn chỉ có6nơ-ron nên tổng cộng chỉ có64mặt nạ, vì vậy thỉnh thoảng hai lượt liên tiếp rút trúng cùng một mặt nạ và màn hình đứng yên. Đo trên1000cú bấm ởpmặc định thì chuyện đó xảy ra45lần, sớm nhất là ngay cú bấm thứ ba tính từ lúc mở bài. - Đẩy
plên cao dần và xem số nơ-ron giữ tụt xuống, hệ số scale phình to. - Kéo
pvề0: không nơ-ron nào bị tắt, mạng trở lại đầy đủ như khi suy luận. - So một
pnhỏ với mộtplớn:pquá cao thì mạng con còn quá ít nơ-ron, gần như không học nổi.
Vì sao chống overfit
Mỗi lượt tắt một tập nơ-ron khác nhau nghĩa là bạn đang huấn luyện rất nhiều mạng con mảnh, tất cả dùng chung một bộ trọng số. Kết quả cuối giống như lấy trung bình cả một tập hợp mạng, mà tập hợp thì luôn ổn định hơn một mô hình đơn lẻ hay học vẹt. Vì bất kỳ nơ-ron nào cũng có thể vắng mặt, không nơ-ron nào được phép trở thành đường tắt không thể thiếu.
Khi suy luận thì ngược lại: ta bật hết mọi nơ-ron cho ổn định, không tắt gì nữa. Nhưng lúc huấn luyện trung bình chỉ có 1-p phần nơ-ron hoạt động, nên tổng tín hiệu hai giai đoạn sẽ lệch nhau nếu không bù. Có đúng hai cách bù, và chúng bù ở hai chỗ khác nhau. Cách cổ điển để nguyên lúc huấn luyện rồi nhân đầu ra với 1-p lúc suy luận. Cách đảo, tức cách mọi thư viện ngày nay dùng, nhân ngay lúc huấn luyện với 1/(1-p) rồi lúc suy luận không làm gì cả. Sim này làm theo cách đảo, nên con số scale 1/(1-p) bạn thấy là hệ số của giai đoạn huấn luyện. Nhân 1/(1-p) lúc suy luận thì không thuộc cách nào: nó thổi tín hiệu lên đúng cái lượng đáng lẽ phải bù xuống.
Dropout huấn luyện vô số mạng con dùng chung trọng số bằng cách tắt ngẫu nhiên nơ-ron mỗi lượt, nên không đường nào thành chỗ dựa duy nhất và mạng bớt overfit.
- 1Trong lúc huấn luyện, dropout với tỉ lệ p làm gì ở mỗi lượt?
- 2Vì sao dropout giúp giảm overfit?
- 3Khi suy luận (dự đoán), mạng dùng dropout xử lý thế nào?