Khi bắt đầu khám phá thế giới Machine Learning (ML) và Deep Learning (DL), bạn sẽ sớm gặp các thuật ngữ Epoch, Batch Size và Iterations. Thoạt nhìn, chúng có vẻ khá giống nhau, dễ gây nhầm lẫn. Tuy nhiên, trên thực tế, chúng lại đóng vai trò khác nhau trong quá trình huấn luyện mô hình.
Để hiểu rõ sự khác biệt giữa Epoch, Batch Size và Iterations, bạn cần nắm vững một số khái niệm cơ bản trong Machine Learning, đặc biệt là thuật toán Gradient Descent.
Gradient Descent là một thuật toán lặp tối ưu (iterative optimization algorithm) được sử dụng rộng rãi trong Machine Learning để tìm điểm cực tiểu của một hàm số (minima of a curve). Trong bối cảnh huấn luyện mô hình, điểm cực tiểu này thường tương ứng với giá trị tham số mô hình cho kết quả dự đoán tốt nhất.
Hiểu một cách đơn giản:
- Gradient: Thể hiện độ dốc của đường cong tại một điểm.
- Descent: “Đi xuống”, ám chỉ việc di chuyển theo hướng giảm dần của độ dốc để tìm điểm cực tiểu.
Thuật toán Gradient Descent hoạt động bằng cách lặp đi lặp lại nhiều lần, mỗi lần điều chỉnh các tham số của mô hình theo hướng ngược lại với gradient của hàm mất mát (loss function). Hàm mất mát đo lường sự khác biệt giữa dự đoán của mô hình và giá trị thực tế. Mục tiêu là giảm thiểu hàm mất mát, từ đó cải thiện độ chính xác của mô hình.
Thuật toán Gradient Descent có một tham số quan trọng là learning rate (tốc độ học). Learning rate quyết định kích thước của bước nhảy trong mỗi lần lặp. Nếu learning rate quá lớn, thuật toán có thể “nhảy” qua điểm cực tiểu và không hội tụ. Nếu learning rate quá nhỏ, thuật toán có thể hội tụ rất chậm. Như hình trên, ban đầu bước nhảy khá lớn (learning rate lớn), sau đó nhỏ dần khi tiến gần đến điểm cực tiểu.
Các thuật ngữ Epoch, Batch Size và Iterations đặc biệt quan trọng khi làm việc với tập dữ liệu lớn (ví dụ: hàng triệu mẫu). Trong trường hợp dữ liệu nhỏ, sự khác biệt giữa chúng có thể không rõ ràng.
Mục Lục
Epoch là gì?
Một Epoch là một chu trình huấn luyện đầy đủ, trong đó toàn bộ tập dữ liệu được đưa vào mạng Neural Network một lần.
Khi dữ liệu quá lớn, việc đưa toàn bộ tập dữ liệu vào để huấn luyện trong một lần duy nhất là không khả thi, do giới hạn về bộ nhớ và khả năng tính toán. Vì vậy, chúng ta cần chia nhỏ tập dữ liệu thành các batch (lô) có kích thước nhỏ hơn.
Tại sao cần nhiều hơn một Epoch?
Lý do chính là chúng ta đang sử dụng thuật toán tối ưu Gradient Descent. Thuật toán này yêu cầu phải đưa toàn bộ dữ liệu qua mạng nhiều lần để tìm được kết quả tối ưu. Một Epoch duy nhất thường không đủ để đạt được kết quả tốt nhất.
Việc chỉ sử dụng một lần lặp có thể dẫn đến tình trạng Underfitting (mô hình chưa học đủ từ dữ liệu).
Khi số lần lặp tăng lên, mô hình sẽ dần chuyển từ trạng thái Underfitting sang trạng thái tối ưu (Optimal) và sau đó là Overfitting (mô hình học quá tốt trên dữ liệu huấn luyện, nhưng lại kém hiệu quả trên dữ liệu mới). Tuy nhiên, điều này chỉ đúng khi mô hình của bạn đủ phức tạp (có đủ số lượng tham số). Nếu mô hình quá đơn giản, nó có thể không bao giờ đạt được trạng thái Overfitting.
Bạn có thể sử dụng một Epoch duy nhất để huấn luyện mô hình, nhưng chỉ khi bạn sử dụng một thuật toán tối ưu khác không phải là Gradient Descent.
Số lượng Epoch tối ưu là bao nhiêu?
Rất tiếc, không có câu trả lời chính xác cho câu hỏi này. Số lượng Epoch tối ưu phụ thuộc hoàn toàn vào đặc điểm của tập dữ liệu bạn đang sử dụng. Bạn cần thử nghiệm và theo dõi hiệu suất của mô hình trên tập dữ liệu kiểm tra (validation set) để tìm ra số lượng Epoch phù hợp.
Batch Size là gì?
Batch Size là số lượng mẫu dữ liệu được sử dụng trong một batch (lô).
Cần phân biệt rõ ràng giữa Batch Size và số lượng batch (Number of Batches).
Như đã đề cập ở trên, do hạn chế về tài nguyên, chúng ta thường không thể đưa toàn bộ dữ liệu vào huấn luyện trong một Epoch. Vì vậy, chúng ta chia tập dữ liệu thành nhiều phần (Number of Batches), mỗi phần có kích thước bằng Batch Size.
Iterations là gì?
Iterations là số lượng batch cần thiết để hoàn thành một Epoch.
Ví dụ: Nếu bạn có một tập dữ liệu gồm 20,000 mẫu và Batch Size là 500, bạn sẽ cần 40 Iterations để hoàn thành một Epoch (20,000 / 500 = 40).
Tóm lại:
- Epoch: Một chu trình huấn luyện đầy đủ trên toàn bộ tập dữ liệu.
- Batch Size: Số lượng mẫu dữ liệu trong một batch.
- Iterations: Số lượng batch cần thiết để hoàn thành một Epoch.
Hiểu rõ sự khác biệt giữa Epoch, Batch Size và Iterations là rất quan trọng để bạn có thể kiểm soát và tối ưu hóa quá trình huấn luyện mô hình Machine Learning.
