Phân Biệt Epoch – Batch Size Và Iterations

Khi mới bắt đầu khám phá thế giới của Máy học/Deep learning, bạn sẽ gặp những thuật ngữ như Epoch – Batch size và Iterations. Và có thể bạn sẽ cảm thấy khá bối rối vì chúng có vẻ giống nhau, nhưng thực tế thì chúng khác nhau.

Để giải thích dễ hiểu, hãy cùng nhìn vào việc ăn cơm. Chúng ta không thể ăn hết một chén cơm trong một lần, mà phải xúc từng muỗn cơm. Ta xúc từng muỗn cho đến khi hết chén thứ nhất, sau đó chúng ta ăn chén thứ hai, chén thứ ba… và tiếp tục cho đến khi no.

Theo như sự tương ứng giữa việc ăn cơm và các thuật ngữ epoch, batch size, iteration như sau:

  • Batch size: Số muỗn cơm trong một lần xúc.
  • Iteration: Số lần xúc cơm để hết một chén.
  • Epoch: Số chén cơm bạn ăn trong một bữa ăn.

Qua ví dụ trên, chúng ta đã hiểu được cách phân biệt giữa các thuật ngữ này. Bây giờ, hãy tìm hiểu một khái niệm quan trọng trong machine learning, đó là Gradient Descent.

Gradient Descent là thuật toán tối ưu được sử dụng trong machine learning để tìm ra kết quả tối ưu (minima của đường cong). Thuật toán này sẽ lặp đi lặp lại nhiều lần để tìm ra được điểm cực tiểu.

Hình ảnh

Trên hình ảnh bên trái, ban đầu, bước nhảy khá lớn, tức là giá trị cost lớn và sau một số lần lặp, điểm chấm đen đi xuống dần và giá trị cost cũng giảm dần. Mô hình dần hội tụ đến khi giá trị cost nhỏ hơn hoặc bằng epsilon.

Khi có dữ liệu huấn luyện lớn (ví dụ: 10 triệu mẫu), chúng ta không thể đưa toàn bộ dữ liệu vào mô hình một lúc, do đó chúng ta phải chia nhỏ dữ liệu thành các batch.

Batch size là số lượng mẫu dữ liệu trong một lần huấn luyện. Ví dụ, trong bài toán phân loại chó mèo, chúng ta có thể chọn batch size là 32. Điều này có nghĩa là mỗi lần lặp, chúng ta sẽ cho ngẫu nhiên 32 bức ảnh chó hoặc mèo vào mạng neural network để lan truyền tiến. Tiếp theo, chúng ta sẽ thay thế 32 bức ảnh hiện tại bằng 32 bức ảnh mới và tiếp tục quá trình này cho đến khi không còn bức ảnh nào để quăng vào mạng. Khi đó, chúng ta đã hoàn thành một epoch.

Iterations là số lượng batch cần để hoàn thành một epoch. Ví dụ, nếu chúng ta có một tập dữ liệu gồm 20,000 mẫu và batch size là 500, thì chúng ta cần 40 lần lặp (40 iterations) để hoàn thành một epoch.

Vậy tại sao chúng ta cần nhiều hơn một epoch? Điều này liên quan đến việc chúng ta sử dụng thuật toán tối ưu là Gradient Descent. Thuật toán này yêu cầu chúng ta đưa toàn bộ dữ liệu qua mạng nhiều lần để tìm ra kết quả tối ưu. Vì vậy, chỉ sử dụng một epoch không đủ để tìm ra kết quả tốt nhất.

Khi chỉ sử dụng một lần lặp, rất có thể dữ liệu sẽ không đủ và kết quả sẽ bị underfitting (như hình mô tả dưới đây).

Hình ảnh

Khi số lần lặp tăng lên, trạng thái của mô hình sẽ chuyển từ underfitting sang optimal và sau đó là overfitting. Thông thường, điều này xảy ra trừ khi mô hình đang sử dụng quá ít trọng số.

Tất nhiên, chúng ta không thể xác định số lần lặp tối ưu là bao nhiêu mà phụ thuộc vào nhiều yếu tố. Mục tiêu chung là lặp đến khi chúng ta thấy mô hình hội tụ. Có một số phương pháp giúp xác định mô hình đã đạt đến ngưỡng cực tiểu cục bộ, không thể giảm giá trị cost thêm nữa. Một trong những phương pháp đó là “early stopping”.

Hy vọng bài viết đã giúp các bạn hiểu rõ hơn về các thuật ngữ Epoch – Batch size và Iterations trong machine learning.

Nguồn: https://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9

FEATURED TOPIC