Nếu bạn từng huấn luyện một mô hình AI mà loss dao động loạn nhịp hoặc mãi không chịu giảm, thì khả năng cao vấn đề không nằm ở dữ liệu mà nằm ở learning rate. Và giải pháp thường không phải là chọn ra một con số hoàn hảo, mà là thay đổi con số đó theo thời gian. Đó chính là Learning Rate Schedule, một trong những chi tiết nhỏ nhưng quyết định sự thành công của cả bản huấn luyện.
Learning Rate Schedule là gì?

Learning Rate Schedule là kế hoạch điều chỉnh tốc độ học theo thời gian trong suốt quá trình huấn luyện mô hình AI. Tốc độ học quyết định độ dài bước đi của mô hình sau mỗi lần cập nhật trọng số, còn schedule quyết định bước đi đó to hay nhỏ ở từng giai đoạn khác nhau.
Hãy tưởng tượng bạn tìm đỉnh núi trong sương mù. Lúc đầu bạn nên đi bước dài để nhanh chóng đến gần đỉnh. Nhưng khi đã gần đích, cứ bước quá rộng bạn sẽ lại bước qua đỉnh sang phía bên kia, qua lại mãi không dừng được. Learning Rate Schedule chính là nghệ thuật thu ngắn dần bước chân của mô hình.
Nếu bạn chưa nắm rõ khái niệm tốc độ học, mình đề nghị đọc trước bài Learning Rate là gì rồi quay lại đây, mọi thứ sẽ mượt hơn rất nhiều.
Vì sao không nên giữ learning rate cố định?
Giữ nguyên một learning rate cho cả quá trình giống như lái xe một tốc độ duy nhất từ cao tốc về đến ngõ hẹp. Learning rate lớn giúp mô hình học nhanh lúc đầu, nhưng về sau khi đã gần nghiệm tối ưu, cùng bước đi đó lại khiến mô hình nhảy loạn quanh đích mà không bao giờ chạm vào nó.
Ngược lại, learning rate quá nhỏ ngay từ đầu khiến huấn luyện cực kỳ chậm, đôi khi kẹt luôn tại một điểm không tốt. Mình từng thấy không ít bạn mới mất vài ngày train model với learning rate 0.00001 cho cả quá trình, trong khi biểu đồ loss gần như nằm im một chỗ.
Còn một lý do nữa: với các optimizer như Adam hay AdamW, những bước cập nhật đầu tiên rất ồn vì mô hình chưa biết gì và thống kê bên trong optimizer chưa ổn định. Điều chỉnh learning rate theo giai đoạn giúp tránh những cú giật mạnh ngay từ khởi động. Bạn có thể đọc thêm bài Adam Optimizer là gì để thấy hai cơ chế này phối hợp với nhau như thế nào.
Các loại Learning Rate Schedule phổ biến là gì?
Step Decay là kiểu đơn giản nhất: sau mỗi khoảng epoch cố định, learning rate giảm một lần, thường là chia đôi hoặc nhân 0.1. Ví dụ sau mỗi 30 epoch thì giảm 10 lần. Kiểu này dễ hiểu, dễ cài đặt, và tạo ra biểu đồ bậc thang quen thuộc trong các giáo trình deep learning.
Exponential Decay giảm learning rate liên tục theo hàm mũ, chẳng hạn nhân với 0.96 sau mỗi epoch. So với Step Decay, cách này mượt hơn vì learning rate giảm dần đều thay vì tụt dốc từng cú một.
Cosine Annealing hiện là lựa chọn phổ biến nhất khi huấn luyện các model lớn. Learning rate giảm theo đường cong cosine: chậm ở đầu, nhanh ở giữa, rồi lại chậm dần khi tiến về giá trị nhỏ nhất. Đường cong mượt, ít tham số cần chỉnh và cho kết quả ổn định trong thực tế, nên hầu hết config hiện đại đều dùng nó.
Warmup không phải một schedule hoàn chỉnh mà là giai đoạn khởi động: learning rate bắt đầu rất thấp, tăng dần lên đỉnh trong vài trăm đến vài nghìn bước đầu tiên, sau đó mới giảm theo kiểu khác. Gần như mọi mô hình ngôn ngữ lớn hiện nay đều dùng warmup kết hợp cosine decay làm công thức chuẩn.
Warmup quan trọng đến mức nào với model lớn?
Rất quan trọng. Với các mô hình transformer lớn, những batch đầu tiên tạo ra gradient rất lớn, trong khi optimizer như Adam chưa có đủ thống kê để cân bằng. Nếu learning rate đã cao ngay từ đầu, trọng số sẽ bị xô lệch mạnh, loss tăng vọt và nhiều khi cả bản huấn luyện không bao giờ hồi phục lại được.
Warmup cho mô hình thời gian ổn định các thống kê bên trong optimizer trước khi tăng tốc. Cũng giống như việc bạn để xe chạy ấm máy trước khi lên cao tốc. Linear warmup khoảng vài nghìn bước đầu rồi cosine decay về gần 0 là công thức kinh điển mà bạn sẽ gặp trong hầu hết config huấn luyện của các phòng lab lớn.
Nên chọn Learning Rate Schedule nào cho dự án của bạn?
Với mô hình nhỏ, dữ liệu vừa phải và bạn mới bắt đầu: Step Decay hoặc Exponential Decay là đủ dùng, đơn giản và dễ lý giải kết quả. Với việc fine-tuning các mô hình lớn, cosine decay kèm warmup ngắn thường là lựa chọn mặc định an toàn nhất.
Vài lời khuyên thực tế từ kinh nghiệm của mình. Thứ nhất, hãy luôn vẽ biểu đồ loss theo thời gian, schedule tốt hay xấu hiện rõ trên đó. Thứ hai, schedule tốt không cứu được dữ liệu tệ hay kiến trúc sai, đừng kỳ vọng ma thuật. Thứ ba, nếu loss giảm đều rồi đứng im, thử giảm learning rate thay vì liều thêm nhiều vòng huấn luyện, nên đọc lại bài Epoch là gì để cân đối số vòng hợp lý.
Cũng cần nhớ rằng learning rate và schedule đều là siêu tham số, không có công thức chung cho mọi bài toán. Cách làm việc hiệu quả nhất mà mình thấy: bắt đầu với cosine warmup, quan sát biểu đồ loss, rồi điều chỉnh dựa trên bằng chứng thay vì ngồi dò từng giá trị một cách mù quáng.
Kết luận
Learning Rate Schedule là bản đồ tốc độ cho hành trình học của mô hình: khởi động nhẹ nhàng, tăng tốc khi đã ổn định và chậm lại để dừng đúng chỗ. Đây là chi tiết tạo ra khác biệt lớn giữa một bản huấn luyện loss mượt mà và một bản loss loạn nhịp không thể đọc.
Nếu chỉ nhớ một điều từ bài này, hãy nhớ thế này: đừng để mô hình đi một tốc độ từ đầu đến cuối. Chọn cosine kèm warmup làm mặc định, quan sát biểu đồ loss, và chỉ điều chỉnh khi có bằng chứng. Phần còn lại là kinh nghiệm cộng dần qua từng bản huấn luyện.
Thuật ngữ liên quan
- Adam Optimizer Là Gì? Giải Thích Dễ Hiểu Về Bộ Tối Ưu Hàng Đầu Deep Learning
- Backpropagation Là Gì? Giải Thích Dễ Hiểu Cho Người Mới
- Batch Normalization Là Gì? Giải Thích Dễ Hiểu Cho Người Mới
- Batch Normalization Là Gì? Giải Thích Dễ Hiểu Cho Người Mới
- Batch Size Là Gì? Giải Thích Dễ Hiểu Cho Người Mới
Xem toàn bộ thư viện thuật ngữ AI & SEO A-Z.



