Gọi lại
Khám phá vai trò thiết yếu của lệnh gọi lại trong học máy—các công cụ giám sát, kiểm soát và tự động hóa quá trình đào tạo mô hình để cải thiện độ chính xác, tính linh hoạt và hiệu quả.
Trong học máy, callback là một tập lệnh hoặc hàm tự động được thực thi tại các điểm cụ thể trong quá trình huấn luyện mô hình. Hãy hình dung nó như một tập hợp các hướng dẫn mà khung huấn luyện tuân theo ở các giai đoạn được xác định trước, chẳng hạn như khi bắt đầu hoặc kết thúc một epoch , một đợt huấn luyện, hoặc toàn bộ phiên huấn luyện . Callback cung cấp một cơ chế mạnh mẽ cho các nhà phát triển để giám sát, kiểm soát và tự động hóa các khía cạnh khác nhau của quá trình huấn luyện mà không cần phải thay đổi mã lõi của mô hình hoặc vòng lặp huấn luyện. Chúng là những công cụ thiết yếu để xây dựng các quy trình học máy (ML) hiệu quả và mạnh mẽ.
Cách thức hoạt động của Callback
Khi bạn đào tạo một mạng lưới nơ-ron (NN), quá trình này bao gồm việc lặp lại một tập dữ liệu cho nhiều kỷ nguyên. Một vòng lặp đào tạo quản lý quá trình này, bao gồm việc cung cấp dữ liệu cho mô hình, tính toán chức năng mất mátvà cập nhật trọng lượng mô hình bởi vì truyền ngược. Các lệnh gọi lại được nối vào vòng lặp này tại các sự kiện cụ thể. Ví dụ, một on_epoch_end
callback sẽ thực thi mã của nó chính xác sau khi mỗi epoch hoàn tất. Điều này cho phép can thiệp động, chẳng hạn như điều chỉnh tỷ lệ học tập, lưu phiên bản tốt nhất của mô hình hoặc dừng đào tạo sớm nếu hiệu suất không đạt yêu cầu. Tự động hóa này là một phần quan trọng của một hệ thống được cấu trúc tốt quy trình học máy.
Ví dụ trong thực tế
Gọi lại được sử dụng rộng rãi trong nhiều tác vụ thị giác máy tính (CV) khác nhau để cải thiện kết quả đào tạo.
- Lưu Mô hình Phát hiện Đối tượng Tốt nhất: Khi huấn luyện mô hình Ultralytics YOLO để phát hiện đối tượng , bạn có thể sử dụng hàm gọi lại ModelCheckpoint. Hàm gọi lại này sẽ theo dõi Độ chính xác Trung bình (mAP) trung bình trên tập dữ liệu xác thực . Hàm này chỉ lưu trọng số của mô hình vào một tệp khi điểm mAP cải thiện so với điểm tốt nhất đã lưu trước đó, đảm bảo bạn giữ lại được mô hình chính xác nhất. Bạn có thể xem hiệu suất của các mô hình khác nhau trên trang so sánh mô hình của chúng tôi.
- Ngăn ngừa hiện tượng quá khớp trong phân loại ảnh: Hãy tưởng tượng việc huấn luyện một mô hình phân loại ảnh trên một tập dữ liệu phức tạp như ImageNet . Một hàm gọi lại EarlyStopping có thể được cấu hình để theo dõi tổn thất xác thực. Nếu tổn thất xác thực không giảm sau một số kỷ nguyên nhất định, hàm gọi lại sẽ tự động dừng quá trình huấn luyện. Điều này ngăn mô hình bị quá khớp với dữ liệu huấn luyện và tiết kiệm đáng kể thời gian huấn luyện cũng như chi phí tính toán. Bạn có thể tìm hiểu thêm về các tác vụ phân loại ảnh và cách triển khai chúng.
Gọi lại so với các khái niệm khác
Sẽ rất hữu ích khi phân biệt các lệnh gọi lại với các thuật ngữ liên quan:
- Hàm: Mặc dù callback là một kiểu hàm, nhưng đặc điểm nổi bật của nó là được truyền dưới dạng đối số cho một hàm khác (vòng lặp huấn luyện) và được hàm đó gọi nội bộ tại một thời điểm cụ thể. Một hàm chuẩn thường được lập trình viên gọi trực tiếp.
- Hook: Trong kỹ thuật phần mềm, hook là thuật ngữ chung hơn để chỉ một vị trí trong mã cho phép chèn logic tùy chỉnh. Callback trong các khuôn khổ học máy là một triển khai cụ thể của khái niệm hook, được điều chỉnh theo các sự kiện trong vòng đời đào tạo của mô hình.
- Điều chỉnh Siêu tham số: Đây là quá trình tìm kiếm các siêu tham số tối ưu (như tốc độ học hoặc kích thước lô ) cho một mô hình. Các lệnh gọi lại có thể hỗ trợ điều chỉnh siêu tham số , ví dụ, bằng cách triển khai một bộ lập lịch tốc độ học, nhưng chúng không phải là quá trình điều chỉnh. Quá trình điều chỉnh là một quy trình tìm kiếm hoặc tối ưu hóa ở cấp độ cao hơn.
Lợi ích của việc sử dụng Callback
Việc tích hợp các cuộc gọi lại vào quá trình đào tạo mang lại một số lợi thế đáng kể:
- Tự động hóa: Lệnh gọi lại tự động hóa các tác vụ lặp đi lặp lại như lưu mô hình, ghi nhật ký số liệu bằng các công cụ như TensorBoard và điều chỉnh các tham số, giảm nhu cầu can thiệp thủ công trong quá trình đào tạo kéo dài.
- Tính linh hoạt và khả năng tùy chỉnh: Cho phép các nhà phát triển chèn logic tùy chỉnh vào vòng lặp đào tạo mà không cần sửa đổi mã khung cốt lõi, cho phép các hành vi đào tạo được thiết kế riêng biệt. Điều này đặc biệt hữu ích cho các thí nghiệm phức tạp hoặc triển khai các kỹ thuật đào tạo nâng cao.
- Hiệu quả: Các lệnh gọi lại như Dừng sớm và điều chỉnh tốc độ học động có thể giúp đào tạo hiệu quả hơn bằng cách tiết kiệm tài nguyên tính toán và có khả năng tăng tốc độ hội tụ của mô hình .
- Thông tin chi tiết và giám sát: Chúng cung cấp thông tin chi tiết sâu sắc về động lực đào tạo bằng cách cho phép ghi nhật ký và trực quan hóa chi tiết các số liệu theo thời gian, điều này rất quan trọng để đánh giá mô hình .
- Khả năng tái tạo: Bằng cách chuẩn hóa các hành động được thực hiện trong quá trình đào tạo (ví dụ: tiêu chí lưu, điều kiện dừng), các lệnh gọi lại góp phần tạo ra các thử nghiệm học máy có khả năng tái tạo cao hơn.
Các khuôn khổ như Keras và PyTorch Lightning cung cấp bộ sưu tập lớn các lệnh gọi lại tích hợp và giao diện đơn giản để tạo ra các lệnh tùy chỉnh. Ultralytics cũng tận dụng các lệnh gọi lại nội bộ trong các đường ống đào tạo của mình, góp phần vào tính mạnh mẽ và thân thiện với người dùng của các công cụ như Ultralytics YOLO11 và nền tảng Ultralytics HUB . Tham khảo tài liệu của Ultralytics có thể cung cấp các ví dụ cụ thể hơn liên quan đến đào tạo mô hình YOLO.