Ultralytics YOLO27: Đăng ký vào danh sách chờ.
Cấp phép YOLO
Quay lại Bảng thuật ngữ Ultralytics

Epoch

Một epoch là một lượt model duyệt qua toàn bộ dữ liệu huấn luyện. Tìm hiểu mối liên hệ giữa epoch, batch và iteration, cũng như cần huấn luyện bao nhiêu epoch.

Một epoch là một lần model học máy duyệt toàn bộ tập dữ liệu huấn luyện. Trong một epoch, mỗi mẫu huấn luyện đóng góp chính xác một lần vào quá trình cập nhật trọng số của model. Các model học sâu hiếm khi học đủ chỉ sau một lượt duyệt, vì vậy quá trình huấn luyện thường kéo dài qua nhiều epoch và sai số trên dữ liệu huấn luyện thường giảm qua từng epoch khi mạng tinh chỉnh các dự đoán.

Epoch, batch và iteration#

Ba thuật ngữ mô tả cấu trúc của một lượt huấn luyện, trong đó mỗi thuật ngữ nằm bên trong thuật ngữ đứng trước nó:

  • Epoch: Một lượt duyệt toàn bộ dataset huấn luyện.
  • Batch: Nhóm ví dụ được xử lý cùng nhau trong một bước. Dataset hiếm khi vừa với bộ nhớ GPU cùng lúc, vì vậy mỗi epoch được chia thành các batch, thường là sau khi xáo trộn dữ liệu.
  • Iteration: Một lần cập nhật trọng số, được thực hiện sau khi tính hàm loss trên một batch và gradient của batch đó được lan truyền ngược qua lan truyền ngược. "Step" là từ đồng nghĩa.

Số iteration mỗi epoch bằng kích thước dataset chia cho kích thước batch, làm tròn lên. Dataset gồm 1,000 ảnh với batch size 100 cần 10 iteration mỗi epoch, vì vậy 50 epoch tạo ra 500 lần cập nhật trọng số. Trong PyTorch, cấu trúc này thể hiện qua hai vòng lặp lồng nhau: vòng ngoài duyệt các epoch và vòng trong duyệt các batch do DataLoader cung cấp.

import torch
from torch.utils.data import DataLoader, TensorDataset

torch.manual_seed(0)

# 1,000 noisy samples of the line y = 3x + 2, served in shuffled batches of 100
x = torch.rand(1000, 1)
y = 3 * x + 2 + 0.1 * torch.randn(1000, 1)
loader = DataLoader(TensorDataset(x, y), batch_size=100, shuffle=True)

model = torch.nn.Linear(1, 1)
optimizer = torch.optim.SGD(model.parameters(), lr=0.5)

for epoch in range(5):  # one epoch = one full pass over all 1,000 samples
    for xb, yb in loader:  # 1,000 / 100 = 10 iterations per epoch
        loss = torch.nn.functional.mse_loss(model(xb), yb)
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    print(f"Epoch {epoch + 1}: {len(loader)} iterations, last batch loss {loss.item():.4f}")

Mỗi epoch chạy 10 iteration; loss trên batch cuối giảm từ 0.1096 sau epoch đầu tiên xuống 0.0088 sau epoch thứ năm khi model hội tụ về đường thẳng thực. Khi quá trình huấn luyện sử dụng tăng cường dữ liệu, mỗi epoch sẽ xem một phiên bản mới được biến đổi của từng ảnh, nên các epoch sau bổ sung tính đa dạng thay vì lặp lại y nguyên.

Chọn số epoch#

Số epoch là một trong những thiết lập chính khi tinh chỉnh siêu tham số. Quá ít epoch khiến model underfit, với lỗi cao trên cả dữ liệu huấn luyện lẫn dữ liệu xác thực. Quá nhiều epoch khiến model có xu hướng overfit: loss huấn luyện tiếp tục giảm trong khi điểm số xác thực chững lại hoặc giảm vì model bắt đầu ghi nhớ các ví dụ huấn luyện. Số epoch phù hợp phụ thuộc vào kích thước dataset, kích thước model, lịch learning rate và việc quá trình huấn luyện có bắt đầu từ trọng số đã huấn luyện trước thông qua transfer learning hay không. Quy mô cũng làm thay đổi lựa chọn: các dataset thị giác nhỏ thường được huấn luyện hàng trăm epoch, trong khi model ngôn ngữ lớn thường xem phần lớn dữ liệu chưa đến một lần; GPT-3 đã hoàn thành 0.44 epoch trên dữ liệu Common Crawl đã lọc.

Dừng sớm tự động hóa việc lựa chọn này. Model được đánh giá trên dữ liệu xác thực sau mỗi epoch, checkpoint tốt nhất được giữ lại và quá trình huấn luyện kết thúc khi điểm xác thực không cải thiện trong một số epoch đã định, gọi là patience.

Lịch huấn luyện dựa trên epoch#

Ngoài điểm dừng, nhiều thiết lập huấn luyện thay đổi theo lịch epoch, chẳng hạn khởi động và giảm learning rate hoặc cường độ tăng cường dữ liệu. Trong quy trình huấn luyện Ultralytics YOLO, epochs và patience đều mặc định là 100; learning rate được khởi động trong 3 epoch đầu tiên, còn tăng cường mosaic được tắt trong 10 epoch cuối (close_mosaic=10) để model kết thúc quá trình huấn luyện với những ảnh giống dữ liệu đầu vào thực tế. Công thức huấn luyện YOLO26 cho thấy số epoch thay đổi đáng kể theo kích thước model: sau 150 epoch tiền huấn luyện trên Objects365, quá trình tinh chỉnh trên COCO kéo dài 245 epoch với YOLO26n và 40 epoch với YOLO26x.

from ultralytics import YOLO

# Tải model YOLO26n đã tiền huấn luyện
model = YOLO("yolo26n.pt")

# Huấn luyện trong 50 epoch: 50 lượt duyệt đầy đủ qua các ảnh huấn luyện COCO8
results = model.train(data="coco8.yaml", epochs=50, imgsz=640)

Trong lượt chạy này, trainer xác thực model YOLO26 sau mỗi epoch, ghi đè last.pt mỗi lần và lưu best.pt bất cứ khi nào chỉ số fitness xác thực, là mAP50-95 đối với tác vụ phát hiện, đạt mức cao mới.

Khám phá các giải pháp

Thị giác máy tính trong thể thao

Thị giác máy tính trong thể thao

Khám phá cách Ultralytics YOLO thúc đẩy thị giác máy tính trong thể thao với khả năng theo dõi cầu thủ và bóng, phân tích hiệu suất, cung cấp thông tin chuyên sâu cho huấn luyện và hỗ trợ phục hồi cho vận động viên.
Tìm hiểu thêm
Thị giác máy tính cho ảnh hàng không

Thị giác máy tính cho ảnh hàng không

Chuyển hình ảnh từ drone và ảnh hàng không thành thông tin chuyên sâu theo thời gian thực cho nông nghiệp, nuôi trồng thủy sản, bảo tồn và phân tích không gian địa lý với Ultralytics YOLO.
Tìm hiểu thêm
Thị giác máy tính trong hàng không vũ trụ

Thị giác máy tính trong hàng không vũ trụ

Ứng dụng computer vision trong ngành hàng không vũ trụ với Ultralytics YOLO cho kiểm tra máy bay, phát hiện dị vật trên đường băng (FOD), vận hành mặt đất tại sân bay và phát hiện lỗi vật liệu composite.
Tìm hiểu thêm
Computer vision trong lĩnh vực an ninh

Computer vision trong lĩnh vực an ninh

Bảo vệ mọi địa điểm bằng model Ultralytics YOLO. Vision AI hỗ trợ giám sát vành đai, phát hiện mối đe dọa, nhận dạng biển số và an toàn nơi làm việc.
Tìm hiểu thêm
Computer vision trong robotics

Computer vision trong robotics

Tăng cường năng lực cho máy móc thông minh bằng model Ultralytics YOLO. Vision AI trong lĩnh vực robotics hỗ trợ điều hướng tự động, nhận thức, theo dõi đối tượng và điều khiển theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong logistics

Thị giác máy tính trong logistics

Tinh giản hoạt động logistics với các model Ultralytics YOLO. Vision AI hỗ trợ kiểm tra kiện hàng, phân loại, theo dõi phương tiện và giám sát an toàn kho hàng theo thời gian thực.
Tìm hiểu thêm
Thị giác máy tính trong bán lẻ

Thị giác máy tính trong bán lẻ

Định hình lại hoạt động bán lẻ với các model Ultralytics YOLO. Vision AI hỗ trợ theo dõi hàng tồn kho, giám sát kệ hàng, quản lý hàng chờ và phân tích khách hàng thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong chăm sóc sức khỏe

Thị giác máy tính trong chăm sóc sức khỏe

Xây dựng các giải pháp chăm sóc sức khỏe với model Ultralytics YOLO. Vision AI trong chăm sóc sức khỏe hỗ trợ xử lý hình ảnh y tế nhanh hơn, chẩn đoán thông minh hơn và theo dõi bệnh nhân.
Tìm hiểu thêm
Thị giác máy tính trong sản xuất

Thị giác máy tính trong sản xuất

Tối ưu hóa sản xuất bằng các model Ultralytics YOLO. Vision AI thúc đẩy kiểm soát chất lượng, phát hiện lỗi, tuân thủ PPE và tự động hóa dây chuyền lắp ráp.
Tìm hiểu thêm
Thị giác máy tính trong ngành ô tô

Thị giác máy tính trong ngành ô tô

Ứng dụng thị giác máy tính trong ngành ô tô với các model Ultralytics YOLO. Vision AI nâng cao an toàn giao thông, hỗ trợ người lái và tự động hóa phương tiện để tạo nên những tuyến đường thông minh hơn.
Tìm hiểu thêm
Thị giác máy tính trong nông nghiệp

Thị giác máy tính trong nông nghiệp

Ứng dụng AI thị giác vào nông nghiệp thông minh với các model Ultralytics YOLO. Hỗ trợ giám sát cây trồng, theo dõi vật nuôi và canh tác chính xác để nâng cao năng suất một cách thông minh hơn.
Tìm hiểu thêm

Hãy cùng nhau kiến tạo tương lai của AI!

Bắt đầu hành trình hướng đến tương lai của machine learning