Lịch learning rate
Lịch learning rate
Nóng lên rồi nguội dần: đường learning rate thay đổi theo bước huấn luyện.
Learning rate là độ dài mỗi bước gradient descent bước đi. Giữ nó cố định suốt quá trình nghe có vẻ gọn, nhưng thường không phải lựa chọn tốt: lúc đầu tham số còn ở rất xa vùng tốt nên một learning rate lớn giúp đi nhanh, còn về cuối khi đã tới gần đáy thì bước lớn lại làm mô hình nảy quanh đáy mà không lắng xuống được. Một learning rate không thể vừa đủ lớn cho lúc đầu vừa đủ nhỏ cho lúc cuối.
Cách giải quyết là cho learning rate thay đổi theo bước, gọi là một lịch. Hai ý tưởng hay đi cùng nhau. Thứ nhất là decay: hạ dần learning rate về sau để mô hình lắng xuống đáy thay vì nảy quanh. Thứ hai là warmup: những bước đầu tăng learning rate từ gần 0 lên dần, tránh cú sốc khi trọng số khởi tạo ngẫu nhiên gặp ngay một bước quá lớn làm hỏng quá trình. Ghép hai ý này lại được đường quen thuộc: đi lên một đoạn rồi cong xuống.
Thử ngay
Thử điều này:
- Để ở lịch
warmup + cosine, kéo con trỏ dọc từ trái sang phải và nhìn sốlrtrong ô đọc: nó tăng trong đoạn warmup rồi giảm dần về gần 0. - Kéo bước warmup lên cao rồi xuống 0, xem đỉnh của đường dịch chuyển và biến mất.
- Đổi sang
giảm bậc thangrồi kéo hệ số giảm: mỗi nấc thang tụt sâu hơn khi hệ số nhỏ, so vớigiảm mũhạ trơn cùng hệ số. - Chọn
hằng sốvà để ý learning rate ở bước đầu bằng đúng bước cuối, đường nằm ngang, đây chính là cái mà các lịch kia muốn tránh.
Warmup và cosine
Warmup chỉ là một đường thẳng: trong warmup bước đầu, learning rate đi từ 0
lên tới giá trị nền theo tỷ lệ bước / warmup. Sau đó cosine annealing lấy nửa
chu kỳ của hàm cosine để kéo learning rate từ nền về 0 một cách trơn tru, dốc thoải ở đầu
và cuối, dốc nhất ở giữa. Nhờ vậy mô hình giảm bước từ tốn ngay khi sắp chạm đáy.
Một learning rate cố định phải chọn giữa nhanh lúc đầu và mượt lúc cuối, còn một lịch cho phép có cả hai: warmup tránh sốc mở màn, rồi decay hạ dần để hội tụ êm.
- 1Vì sao thường không nên giữ learning rate cố định suốt quá trình huấn luyện?
- 2Đoạn warmup ở đầu lịch warmup + cosine có tác dụng gì?
- 3Trong sim, kéo hệ số giảm nhỏ lại ở lịch giảm mũ thì learning rate ở bước cuối thay đổi ra sao?