Đường cong học
Đường cong học
Chỉnh learning rate, batch size và số epoch rồi nhìn lỗi tụt xuống qua từng vòng huấn luyện.
Huấn luyện một mô hình là lặp đi lặp lại: đưa dữ liệu vào, đo xem đoán sai bao nhiêu, rồi nhích các tham số một chút cho lần sau đỡ sai hơn. Một lần đi hết toàn bộ dữ liệu gọi là một epoch. Trong mỗi epoch ta không tính gradient trên cả bộ dữ liệu cùng lúc mà chia nhỏ thành các mini-batch, mỗi batch cập nhật tham số một lần. Kích thước batch là số mẫu trong một lần cập nhật đó: batch bằng 1 là cập nhật sau mỗi mẫu, batch bằng cả bộ dữ liệu là cập nhật một lần cho mỗi epoch.
Sau mỗi epoch ta đo lại lỗi trên toàn bộ dữ liệu và chấm một điểm. Nối các điểm đó lại thành đường cong học, và đường cong này là bảng theo dõi sức khỏe của cả quá trình. Nó đi xuống đều và phẳng dần nghĩa là mô hình đang học tốt. Nó gợn sóng nghĩa là mỗi bước còn nhiều nhiễu. Nó leo ngược lên nghĩa là bước đi quá đà và mô hình đang hỏng. Chỉ cần liếc hình dạng đường cong là biết nên tăng hay giảm tốc độ học, nên gom batch to hơn hay chạy thêm epoch.
Thử ngay
Thử điều này:
- Kéo
tốc độ họclên trên1.0rồi bấm Chạy: đường cong vọt lên trên, chạm nhãn phân kỳ vì mỗi bước nhích quá đà. - Kéo
batchvề1rồi Chạy: đường cong gợn sóng răng cưa vì mỗi bước chỉ nhìn một mẫu nên rất nhiễu. - Kéo
batchlên hết cỡ: đường cong mượt hẳn, gần như đi xuống trơn tru vì mỗi cập nhật dùng cả bộ dữ liệu. - Đặt tốc độ học vừa phải, ví dụ
0.3, rồi tăngsố epoch: đường cong bò dần tới sát đườngsàn lỗimàu xanh rồi nằm yên ở đó.
Đọc đường cong
Một đường cong khỏe đi xuống nhanh ở những epoch đầu rồi thoải dần và ép sát vào sàn lỗi. Nếu nó gợn sóng mạnh mà vẫn giảm về trung bình thì thường chỉ cần tăng batch cho mượt hoặc giảm nhẹ tốc độ học. Nếu nó đi ngang cao hơn sàn lỗi khá xa thì mô hình chưa học đủ, hãy cho thêm epoch hoặc tăng tốc độ học một chút. Còn nếu nó quay đầu leo lên thì tốc độ học đang quá lớn, phải kéo xuống ngay trước khi mọi thứ phân kỳ.
Đường cong học cho biết sức khỏe của cả quá trình huấn luyện: tốc độ học quyết định nó tụt xuống hay leo lên phân kỳ, còn batch size quyết định nó mượt hay gợn sóng.
- 1Vì sao đường cong học với batch nhỏ lại gợn sóng hơn batch lớn?
- 2Đẩy tốc độ học lên quá cao rồi Chạy thì đường cong làm gì?
- 3Đường cong đi ngang ở mức cao hơn hẳn sàn lỗi và vẫn còn giảm nhẹ. Nên làm gì trước tiên?