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: mỗi lần là một mạng con khác, cùng bộ trọng số nhưng khác hình. - Đẩ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 khớp nhau, đầu ra được nhân với hệ số scale 1/(1-p). Đó chính là con số scale trong sim.
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?