EPOCH LÀ GÌ

  -  

“Nearly all of deep learning is powered by one very important algorithm: Stochastic Gradient Descent (SGD)” — Goodfellow.Bạn đã xem: Epoch là gì

Trong nội dung bài viết này mình đang đề cập mang lại một thuật toán rất quan trọng đặc biệt cho các bài toán về tối ưu trong Machine Learning, Neural Network với Deep Learning mà bất kể Data Scientist, Computer Vision xuất xắc AI Engineer đều buộc phải biết, đó là Gradient Descent (GD). Đồng thời họ sẽ phân minh và làm rõ một số khái niệm có liên quan tới GD thường tuyệt lẫn lộn là Sample, Epoch, Batch cùng Iterations, tương tự như một số vụ việc có tương quan tới GD.

Bạn đang xem: Epoch là gì

Trước lúc đi vào tìm hiểu về GD, chúng ta cần hiểu cố gắng nào là thuật toán về tối ưu (Optimization Algorithm) trong Artificial Neural Networks (ANN). Về cơ bản, những thuật toán buổi tối ưu đó là các engine cửa hàng để phát hành các quy mô neural network với kim chỉ nam là “học” được các điểm lưu ý (features tuyệt patterns) từ tài liệu đầu vào, từ bỏ đó hoàn toàn có thể tìm một tập các weights W cùng bias b (hay internal model parameters) để buổi tối ưu hóa độ đúng đắn của models (obtaining a high accuracy models).

Nhưng vụ việc là “học” như vậy nào? rõ ràng hơn là làm sao để tìm W với b một bí quyết hiệu quả! gồm phải chỉ cần random W với b một số trong những lần hữu hạn và “hy vọng” tại một bước làm sao đó bọn họ sẽ tìm thấy được tập lời giải. Rõ ràng là không khả thi và lãng phí tài nguyên! bọn họ cần một thuật toán để nâng cao W với b theo mỗi bước (iterative improving), với đó là tại sao GD ra đời.

1. Gradient Descent là gì?

Gradient Descent là 1 thuật toán buổi tối ưu lặp (iterative optimization algorithm) được sử dụng trong những bài toán Machine Learning cùng Deep Learning (thường là những bài toán buổi tối ưu lồi — Convex Optimization) với phương châm là search một tập các biến nội trên (internal parameters) cho vấn đề tối ưu models. Vào đó:

● Gradient: là tỷ lệ độ nghiêng của con đường dốc (rate of inclination or declination of a slope). Về khía cạnh toán học, Gradient của một hàm số là đạo hàm của hàm số đó khớp ứng với mỗi đổi mới của hàm. Đối với hàm số solo biến, họ sử dụng có mang Derivative nỗ lực cho Gradient.

● Descent: là tự viết tắt của descending, nghĩa là bớt dần.

Gradient Descent có không ít dạng khác nhau như Stochastic Gradient Descent (SGD), Mini-batch SDG. Nhưng mà về cơ phiên bản thì gần như được thực hiện như sau:

Khởi tạo biến hóa nội tại.Đánh giá model nhờ vào biến nội tại với hàm mất non (Loss function).Cập nhật những biến nội tại theo phía tối ưu hàm mất đuối (finding optimal points).Lặp lại cách 2, 3 cho tới khi thỏa đk dừng.

Công thức cập nhật cho GD có thể được viết là:


*

*

*

*

*

Điều kiện giới hạn của GD rất có thể là:

● hoàn thành tất cả những epochs đã được định sẵn.

● quý hiếm của hàm mất đuối đủ nhỏ và độ đúng chuẩn của mã sản phẩm đủ lớn.

● Hàm mất mát có giá trị không biến hóa sau một số lần hữu hạn epochs.

Các việc trong thực tiễn áp dụng GD hay khó tìm kiếm được các global minimum points, nhiều phần rơi vào các local minimum points hoặc chưa phải các optimal points (not converging), mặc dù nhiên chúng ta vẫn bao gồm thể gật đầu các hiệu quả của GD trả về khi mã sản phẩm đã đủ tốt (good enough).

“ optimization algorithm may not be guaranteed khổng lồ arrive at even a local minimum in a reasonable amount of time, but it often finds a very low value of the function quickly enough khổng lồ be useful.” — Goodfellow.

2. Sample, Epoch, Batch cùng Iterations2.1 Sample2.2 Epoch

Epoch là 1 trong hyperparameter trong ANN, được dùng để làm định nghĩa số lần learning algorithm chuyển động trên model, một epoch xong là khi tất cả tài liệu training được đưa vào mạng neural network một lần (đã bao gồm cả 2 bước forward cùng backward đến việc update internal model parameters).

Xem thêm: Game Làm Bánh Pizza Socola, Trò Chơi Lam Bánh Pizza Miễn Phí

Tuy nhiên khi dữ liệu training là quá rộng (ví dụ training images từ ImageNet, Google open Images), vấn đề đưa toàn bộ training data vào trong 1 epoch là ko khả thi với không hiệu quả. Trường thích hợp số epoch bé dại thì dễ dẫn mang đến underfitting vì model không “học” được rất nhiều từ GD để update các biến chuyển nội tại. Đối với các trường hợp này thì chiến thuật là chia nhỏ tuổi training dataset ra thành những batches cho mỗi epoch thì thời cơ model học tập được tự GD sẽ nhiều hơn thế nữa và tốc độ giám sát và đo lường sẽ tối ưu hơn.

Chọn số epoch như thế nào? Thường bọn họ cần một vài lượng khủng epoch để training đến ANN (10, 100, 500, 1000…) tuy vậy cũng còn tùy trực thuộc vào bài toán và tài nguyên máy tính. Một phương pháp khác là áp dụng Learning Curve để tìm số epoch.

2.3 Batch

Như đã nói, một tập training dataset rất có thể được chia nhỏ thành những batches (sets, parts). Một batch vẫn chứa các training samples, và số lượng các samples này được hotline là batch size. Cần để ý có 2 khái niệm khác biệt là batch size cùng number of batches (số lượng những batches) or iterations. Tùy trực thuộc vào batch size nhưng mà GD sẽ sở hữu được các biến đổi thể khác nhau:

Batch Gradient Descent: Batch size = kích cỡ of Training Dataset

Stochastic Gradient Descent: Batch form size = 1

Mini-Batch Gradient Descent: 1 2.4 IterationsIteration là số lượng batches (number of batches) quan trọng để xong một epoch. Phương pháp tính là iterations = training samples/batch size. Ví dụ: một dataset có 200 samples, lựa chọn batch size là 5, số epochs là 1000 thì trong 1 epoch số iterations vẫn là 200/5 = 40, mã sản phẩm sẽ tất cả cơ hội cập nhật các đổi mới nội trên 40 lần, nhân cùng với số epochs thì số lần cập nhật của model sẽ là 40*1000 = 40000 lần (tương ứng cùng với 40000 batches).

3. Một số vấn đề vào Gradient Descent3.1 Momentum với Nesterov’s Acceleration

Nhắc lại công thức update của GD, một tham số rất quan trọng cần suy xét là vận tốc học η (learning rate), η sẽ chế độ số cách “học” cần thiết cho models. Việc chọn η tương xứng sẽ tùy trực thuộc vào mã sản phẩm và dataset. Nếu như η quá nhỏ dại thì mã sản phẩm sẽ mất không hề ít steps tốt iterations để tiến tới các điểm optimal points. Trường thích hợp η quá béo thì biến cập nhật sẽ “nhảy” xung quanh (bounding around) những điểm optimal points với không hội tụ. Rất có thể minh hoạt như vào hình:

Có 2 cách để điều chỉnh quá trình cập nhật của GD:

Sử dụng Momentum: ý tưởng phát minh cơ bạn dạng của momentum là gia tốc học khi thuộc hướng cùng với chiều của gradient và giảm tốc học lúc ngược phía với gradient. Lúc momentum của GD đủ mập thì những biến cập nhật có thể “vượt” qua những local optimal points để đào bới các điểm global như trong hình. Một tham số quan trọng khi áp dụng momentum là γ, γ trong thực nghiệm thường được lựa chọn là 0.9, hoặc lúc đầu chọn γ = 0.5 cho tới khi định hình và tăng đột biến lên 0.9.

Trong các bài toán thực tiễn với large-scale dataset như ImageNet tốt Google xuất hiện Images thì GD with momentum hay được sử dụng nhiều hơn so cùng với Nesterov’s Acceleration. Còn so với những dataset nhỏ dại hơn thì bạn cũng có thể sử dụng Nesterov’s Acceleration.

3.2 Vanishing cùng Exploding Gradient

Thuật toán viral ngược (Backpropagation Algorithm) là một thuật toán thường được sử dụng trong quá trình huấn luyện các quy mô học sâu. Ý tưởng cơ bạn dạng là thuật toán sẽ từ output layer đi ngược quay trở về input layer, đo lường và tính toán gradient của hàm mất mất tương ứng với các biến nội trên (weight, bias) cho những hidden layers rồi cần sử dụng GD để cập nhật lại các biến này. Thuật toán được mong muốn đợi sẽ quy tụ sau một số lần hữu hạn epochs tuy nhiên thường sẽ có sự đánh đổi giữa độ đúng chuẩn của model và thời gian training.

Thực tế khi triển khai training cùng với backpropagation thì gradient của hàm mất mất sẽ nhỏ tuổi dần do triển khai nhân những số hạng nhỏ tuổi liên tiếp với nhau, nếu mô hình đủ “sâu” (nhiều hidden layers) thì cực hiếm gradient vẫn tiến dần mang lại 0 sau một vài layers nhất thiết và có tác dụng cho mã sản phẩm không thể quy tụ -> không thể cập nhật được những biến nội trên như ước ao đợi. Hiện tượng này gọi là Vanishing Gradient.

Tuy nhiên gradient cũng có tác dụng lớn dần dần trong quy trình backpropagation (như mô hình RNNs) vị nhân các số hạng lớn tiếp tục nhau dẫn tới các giá trị update quá to và cũng làm cho cho model không thể hội tụ (bounding around). Hiện tượng này điện thoại tư vấn là Exploding Gradient.

Có 2 tại sao chính dẫn tới những hiện tượng trên là do việc khởi tạo các biến nội tại (weight initialization) và việc chọn activation function cho những layers. Có nhiều kỹ thuật khác nhau để bớt thiểu 2 hiện tượng kỳ lạ này như Xavier và He Initialization Techniques, Nonsaturating Activation Functions, Batch Normalization Gradient Clipping.

3.3 Regularization

“Many strategies used in machine learning are explicitly designed to reduce the kiểm tra error, possibly at the expense of increased training error. These strategies are collectively known as regularization.” — Goodfellow

Regularization được dùng làm điều chỉnh khả năng “học” của mã sản phẩm để đảm bảo an toàn rằng model của chúng ta đủ tốt để mang ra dự đoán cho những dữ liệu new (control the ability to generalize). Nếu như không sử dụng regularization thì model rất dễ dàng trở nên tinh vi (complex) với overfitting training data và chính vì thế không có khả năng tổng quan tiền hóa cho tài liệu mới. Nhưng lại nếu sử dụng rất nhiều regularization thì mã sản phẩm sẽ trở nên đơn giản và dễ dàng (simple) cùng không “học” được rất nhiều từ tài liệu training.

Trong quá trình update biến của GD, regularization thường được cùng vào hàm mất mất bên dưới dạng L1 regularization, L2 regularization (còn gọi là weight decay) hoặc Elastic Net để gia công cho những giá trị trong weights matrix không quá lớn, vì thế sẽ hạn chế năng lực bị overfitting của model. Trong khi còn có những kỹ thuật regularization khác như dropout, data augmentation early stopping.

Xem thêm: Cách Dùng Ứng Dụng Faceart Tạo Ảnh Ghép Với Người Nổi Tiếng Với Phần Mềm

Conclusion

Trong bài viết này mình đã reviews cho chúng ta về Gradient Descent — thuật toán buổi tối ưu rất đặc biệt dùng vào các mô hình học sâu. Đây là nền tảng để các bạn cũng có thể hiểu thêm về những thuật toán tối ưu khác ví như AdaGrad, AdaDelta, RMSProp, Adam. Đồng thời họ đã làm rõ một số khái niệm cũng tương tự một số vụ việc có tương quan tới GD. Với những kiến thức này mình có niềm tin rằng các các bạn sẽ đủ tự tin để triển khai việc trên các quy mô học sâu về sau! Happy Learning!

References

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

https://machinelearningmastery.com/difference-between-a-batch-and-an-epoch/

https://machinelearningmastery.com/gradient-descent-for-machine-learning/

https://viviancosmetics.vn/onfido-tech/machine-learning-101-be2e0a86c96a

https://developers.google.com/machine-learning/crash-course/reducing-loss/gradient-descent

https://cs231n.github.io/neural-networks-3/

https://www.jeremyjordan.me/nn-learning-rate/

https://towardsdatascience.com/types-of-optimization-algorithms-used-in-neural-networks-and-ways-to-optimize-gradient-95ae5d39529f

https://towardsdatascience.com/demystifying-optimizations-for-machine-learning-c6c6405d3eea

https://www.quora.com/What-is-the-local-minimum-and-global-minimum-in-machine-learning-Why-are-these-important-in-machine-learning

Adrian Rosebrock (2017). Deep Learning for Computer Vision with Python. Starter Bundle: PyImageSearch.com

Aurélien Géron (2017). Hands-On Machine Learning with Scikit-Learn & TensorFlow. Sebastopol: O’Reilly Media.