Epoch
Tìm hiểu epoch trong machine learning là gì và cách nó ảnh hưởng đến quá trình training model. Khám phá các phương pháp tối ưu hóa, tránh overfitting và dễ dàng train Ultralytics YOLO26.
Một epoch đại diện cho một chu kỳ hoàn chỉnh đi qua toàn bộ tập dữ liệu huấn luyện của một thuật toán machine learning. Trong quá trình này, model có cơ hội cập nhật các tham số nội bộ dựa trên từng mẫu dữ liệu đúng một lần. Trong bối cảnh deep learning, một lượt truyền duy nhất hiếm khi đủ để một mạng neural học hiệu quả các mẫu phức tạp. Vì vậy, quá trình huấn luyện thường bao gồm nhiều epoch, cho phép thuật toán học lặp đi lặp lại tinh chỉnh mức độ hiểu biết và giảm thiểu sai số giữa các dự đoán của nó với ground truth thực tế.
Vai trò của Epoch trong quá trình tối ưu hóa#
Mục tiêu chính của quá trình huấn luyện là điều chỉnh trọng số model để giảm thiểu một hàm mất mát cụ thể. Các thuật toán tối ưu hóa, chẳng hạn như hạ gradient ngẫu nhiên (SGD) hoặc optimizer Adam, sử dụng sai số được tính trong mỗi epoch để định hướng cho những điều chỉnh này. Khi số lượng epoch tăng, model thường chuyển từ trạng thái sai số cao (đoán ngẫu nhiên) sang sai số thấp hơn (đã học được các mẫu).
Tuy nhiên, việc lựa chọn số lượng epoch phù hợp là một khía cạnh quan trọng của điều chỉnh hyperparameter.
- Quá ít epoch: Điều này có thể dẫn đến underfitting, khi model chưa nắm bắt được xu hướng tiềm ẩn của dữ liệu.
- Quá nhiều epoch: Điều này thường dẫn đến overfitting, khi model ghi nhớ nhiễu trong dữ liệu huấn luyện thay vì khái quát hóa sang dữ liệu mới. Để ngăn chặn điều này, các developer thường theo dõi hiệu năng trên dữ liệu validation và sử dụng các kỹ thuật như early stopping để dừng quá trình huấn luyện khi khả năng khái quát hóa không còn được cải thiện.
Epoch so với Batch và Iteration#
Người mới bắt đầu thường nhầm lẫn "epoch" với các thuật ngữ liên quan. Hiểu rõ thứ bậc của các khái niệm này là điều thiết yếu để cấu hình training loop chính xác:
- Epoch: Một lượt hoàn chỉnh qua toàn bộ tập dữ liệu.
- Batch: Một tập con của tập dữ liệu được xử lý đồng thời. Vì các tập dữ liệu thường quá lớn để vừa hoàn toàn trong bộ nhớ GPU cùng một lúc, chúng được chia thành các nhóm nhỏ hơn, được xác định bởi batch size.
- Iteration: Một lần cập nhật trọng số của model. Nếu một tập dữ liệu có 1.000 ảnh và batch size là 100, sẽ cần 10 iteration để hoàn thành một epoch.
Các ứng dụng trong thực tế#
Số lượng epoch cần thiết thay đổi đáng kể tùy thuộc vào độ phức tạp của tác vụ và kích thước dữ liệu.
- Phân tích hình ảnh y tế: Trong phân tích hình ảnh y tế, chẳng hạn như phát hiện khối u trong ảnh chụp MRI, độ chính xác là yếu tố tối quan trọng. Các model được huấn luyện cho những tác vụ này thường chạy qua hàng trăm epoch. Quá trình huấn luyện mở rộng này bảo đảm mạng neural tích chập (CNN) có thể phân biệt những bất thường tinh vi giúp phân biệt mô ác tính với mô khỏe mạnh, qua đó có khả năng cứu sống con người.
- Lái xe tự hành: Đối với phương tiện tự hành, các model phát hiện đối tượng phải xác định đáng tin cậy người đi bộ, biển báo và các phương tiện khác. Việc huấn luyện những hệ thống mạnh mẽ này thường sử dụng các tập dữ liệu khổng lồ như COCO hoặc Objects365. Mặc dù kích thước tập dữ liệu rất lớn, model vẫn cần nhiều epoch để hội tụ đến một nghiệm có khả năng khái quát hóa tốt trong các điều kiện thời tiết và ánh sáng đa dạng.
Quản lý chu kỳ huấn luyện bằng code#
Khi sử dụng các framework hiện đại như Ultralytics YOLO, việc xác định số lượng epoch là một tham số đơn giản trong lệnh huấn luyện. Các công cụ như Ultralytics Platform có thể giúp trực quan hóa các đường cong mất mát qua từng epoch để xác định thời điểm dừng tối ưu.
Ví dụ sau đây minh họa cách thiết lập số lượng epoch khi huấn luyện model YOLO26:
from ultralytics import YOLO
# Load the YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Train the model for 50 epochs
# The 'epochs' argument determines how many times the model sees the entire dataset
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)Trong đoạn mã này, tham số epochs=50 chỉ dẫn cho engine huấn luyện lặp qua tập dữ liệu coco8.yaml 50 lần riêng biệt. Trong mỗi chu kỳ, model thực hiện lan truyền xuôi và lan truyền ngược để tinh chỉnh khả năng phát hiện.









