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

Trong bài viết này mình sẽ đề cập đến một thuật toán rất quan trọng cho các bài toán tối ưu trong Machine Learning, Neural Network và Deep Learning mà bất cứ Data Scientist, Computer Vision hay AI Engineer đều phải biết, đó là Gradient Descent (GD). Đồng thời chúng ta sẽ phân biệt và làm rõ một số khái niệm có liên quan tới GD thường hay lẫn lộn là Sample, Epoch, Batch và Iterations, cũng như một số vấn đề có liên quan tới GD.

Trước khi đi vào tìm hiểu về GD, chúng ta cần hiểu thế nào là thuật toán tối ưu (Optimization Algorithm) trong Artificial Neural Networks (ANN). Về cơ bản, các thuật toán tối ưu chính là các engine cơ sở để xây dựng các mô hình neural network với mục tiêu là “học” được các đặc điểm (features hay patterns) từ dữ liệu đầu vào, từ đó có thể tìm một tập các weights W và bias b (hay internal model parameters) để tối ưu hóa độ chính xác của models (obtaining a high accuracy models).

Nhưng vấn đề là “học” như thế nào? Cụ thể hơn là làm sao để tìm Wb một cách hiệu quả! Có phải chỉ cần random Wb một số lần hữu hạn và “hy vọng” ở một bước nào đó chúng ta sẽ tìm ra được tập lời giải. Rõ ràng là không khả thi và lãng phí tài nguyên! Chúng ta cần một thuật toán để cải thiện Wb theo từng bước (iterative improving), và đó là lý do GD ra đời.

1. Gradient Descent là gì?1. Gradient Descent là gì ?Gradient Descent là một thuật toán tối ưu lặp ( iterative optimization algorithm ) được sử dụng trong những bài toán Machine Learning và Deep Learning ( thường là những bài toán tối ưu lồi — Convex Optimization ) với tiềm năng là tìm một tập những biến nội tại ( internal parameters ) cho việc tối ưu models. Trong đó :● Gradient : là tỷ suất độ nghiêng của đường dốc ( rate of inclination or declination of a slope ). Về mặt toán học, Gradient của một hàm số là đạo hàm của hàm số đó tương ứng với mỗi biến của hàm. Đối với hàm số đơn biến, tất cả chúng ta sử dụng khái niệm Derivative thay cho Gradient .● Descent : là từ viết tắt của descending, nghĩa là giảm dần .Gradient Descent có nhiều dạng khác nhau như Stochastic Gradient Descent ( SGD ), Mini-batch SDG. Nhưng về cơ bản thì đều được thực thi như sau :Khởi tạo biến nội tại.Đánh giá model dựa vào biến nội tại và hàm mất mát (Loss function).Cập nhật các biến nội tại theo hướng tối ưu hàm mất mát (finding optimal points).Lặp lại bước 2, 3 cho tới khi thỏa điều kiện dừng.Khởi tạo biến nội tại. Đánh giá Model dựa vào biến nội tại và hàm mất mát ( Loss function ). Cập nhật những biến nội tại theo hướng tối ưu hàm mất mát ( finding optimal points ). Lặp lại bước 2, 3 cho tới khi thỏa điều kiện kèm theo dừng .Công thức update cho GD hoàn toàn có thể được viết là :
*
*
*
*

Tối ưu hàm mất mát là việc tìm các điểm optimal points mà ở đó hàm mất mát đạt cực đại (maximum) hoặc cực tiểu (minimum). Nếu hàm mất mát không phải là hàm lồi thì sẽ có các local maximum hoặc local minimum points bên cạnh các global maximum hoặc global minimum points như hình bên dưới. Mục tiêu của GD là tìm được các global minimum points. Tuy nhiên trong các bài toán tối ưu lồi áp dụng GD thì các local minimum points của hàm mất mát cũng chính là global minimum points của nó.

*
Điều kiện dừng của GD hoàn toàn có thể là :● Kết thúc tổng thể những epochs đã được định sẵn .● Giá trị của hàm mất mát đủ nhỏ và độ đúng chuẩn của Model đủ lớn .● Hàm mất mát có giá trị không biến hóa sau một số ít lần hữu hạn epochs .

Các bài toán trong thực tế áp dụng GD thường khó tìm được các global minimum points, đa phần rơi vào các local minimum points hoặc không phải các optimal points (not converging), tuy nhiên chúng ta vẫn có thể chấp nhận các kết quả của GD trả về khi model đã đủ tốt (good enough).

“ optimization algorithm may not be guaranteed to 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 to be useful. ” — Goodfellow .2. Sample, Epoch, Batch và Iterations2.1 Sample2. Sample, Epoch, Batch và Iterations2. 1 SampleSample là một dòng tài liệu gồm có những inputs để đưa vào thuật toán, một output ( ground-truth ) để so sánh với giá trị Dự kiến và tính giá trị của hàm mất mát. Dữ liệu giảng dạy thường gồm có nhiều samples. Sample còn được gọi là instance, an observation, an input vector, hay a feature vector .Xem thêm : Rn Là Gì ? Nghĩa Của Từ Rn Trong Tiếng Việt Rn Có Nghĩa Là Gì2.2 Epoch2.2 Epoch

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

Tuy nhiên khi tài liệu training là quá lớn ( ví dụ training images từ ImageNet, Google Open Images ), việc đưa tổng thể training data vào trong 1 epoch là không khả thi và không hiệu suất cao. Trường hợp số epoch nhỏ thì dễ dẫn đến underfitting vì Model không “ học ” được nhiều từ GD để update những biến nội tại. Đối với những trường hợp này thì giải pháp là chia nhỏ training dataset ra thành những batches cho mỗi epoch thì thời cơ Mã Sản Phẩm học được từ GD sẽ nhiều hơn và vận tốc thống kê giám sát sẽ tối ưu hơn .Chọn số epoch như thế nào ? Thường tất cả chúng ta cần một số lượng lớn epoch để training cho ANN ( 10, 100, 500, 1000 … ) tuy nhiên cũng còn tùy thuộc vào bài toán và tài nguyên máy tính. Một cách khác là sử dụng Learning Curve để tìm số epoch .2.3 Batch2.3 Batch

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

Batch Gradient Descent: Batch Size = Size of Training Dataset

Stochastic Gradient Descent: Batch Size = 1

Mini-Batch Gradient Descent: 1 2.4 Iterations

Iteration là số lượng batches (number of batches) cần thiết để hoàn thành một epoch. Công thức tính là iterations = training samples/batch size. Ví dụ: một dataset có 200 samples, chọn batch size là 5, số epochs là 1000 thì trong 1 epoch số iterations sẽ là 200/5 = 40, model sẽ có cơ hội cập nhật các biến nội tại 40 lần, nhân 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 với 40000 batches).

3. Một số vấn đề trong Gradient Descent3.1 Momentum và Nesterov’s Acceleration3. Một số yếu tố trong Gradient Descent3. 1 Momentum và Nesterov’s AccelerationNhắc lại công thức update của GD, một tham số rất quan trọng cần chú ý quan tâm đến là vận tốc học η ( learning rate ), η sẽ lao lý số bước “ học ” thiết yếu cho models. Việc chọn η tương thích sẽ tùy thuộc vào Model và dataset. Nếu η quá nhỏ thì Model sẽ mất rất nhiều steps hay iterations để tiến tới những điểm optimal points. Trường hợp η quá lớn thì biến update sẽ “ nhảy ” quanh ( bounding around ) những điểm optimal points và không quy tụ. Có thể minh hoạt như trong hình :
Có 2 cách để kiểm soát và điều chỉnh quy trình update của GD :

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

Trong các bài toán thực tế với large-scale dataset như ImageNet hay Google Open Images thì GD with momentum thường được sử dụng nhiều hơn so với Nesterov’s Acceleration. Còn đối với những dataset nhỏ hơn thì chúng ta có thể sử dụng Nesterov’s Acceleration.

3.2 Vanishing và Exploding Gradient3.2 Vanishing và Exploding Gradient

Thuật toán lan truyền 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 mô hình học sâu. Ý tưởng cơ bản là thuật toán sẽ từ output layer đi ngược trở lại input layer, tính toán gradient của hàm mất mất tương ứng với các biến nội tại (weight, bias) cho các hidden layers rồi dùng GD để cập nhật lại các biến này. Thuật toán được mong đợi sẽ hội tụ sau một số lần hữu hạn epochs nhưng thường sẽ có sự đánh đổi giữa độ chính xác của model và thời gian training.

Thực tế khi tiến hành training với backpropagation thì gradient của hàm mất mất sẽ nhỏ dần do tiến hành nhân các số hạng nhỏ liên tiếp với nhau, nếu mô hình đủ “sâu” (nhiều hidden layers) thì giá trị gradient sẽ tiến dần đến 0 sau một số layers nhất định và làm cho model không thể hội tụ -> không thể cập nhật được các biến nội tại như mong đợi. Hiện tượng này gọi là Vanishing Gradient.

Tuy nhiên gradient cũng có khả năng lớn dần trong quá trình backpropagation (như mô hình RNNs) do nhân nhiều số hạng lớn liên tiếp nhau dẫn tới các giá trị cập nhật quá lớn và cũng làm cho model không thể hội tụ (bounding around). Hiện tượng này gọi là Exploding Gradient.

Có 2 nguyên nhân chính dẫn tới các 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 các layers. Có nhiều kỹ thuật khác nhau để giảm thiểu 2 hiện tượng này như Xavier and He Initialization Techniques, Nonsaturating Activation Functions, Batch Normalization Gradient Clipping.

3.3 Regularization3.3 Regularization“ Many strategies used in machine learning are explicitly designed to reduce the test error, possibly at the expense of increased training error. Thes e strategies are collectively known as regularization. ” — Goodfellow

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

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

ConclusionConclusionTrong bài viết này mình đã ra mắt cho những bạn về Gradient Descent — thuật toán tối ưu rất quan trọng dùng trong những mô hình học sâu. Đây là nền tảng để những bạn hoàn toàn có thể hiểu thêm về những thuật toán tối ưu khác như AdaGrad, AdaDelta, RMSProp, Adam. Đồng thời tất cả chúng ta đã làm rõ 1 số ít khái niệm cũng như 1 số ít yếu tố có tương quan tới GD. Với những kiến thức và kỹ năng này mình tin rằng những bạn sẽ đủ tự tin để thao tác trên những mô hình học sâu về sau ! Happy Learning !ReferencesReferenceshttps://towardsdatascience.com/epoch-vs-iterations-vs-batch-size-4dfb9c7ce9c9https://machinelearningmastery.com/difference-between-a-batch-and-an-epoch/https://machinelearningmastery.com/gradient-descent-for-machine-learning/http://139.180.218.5/onfido-tech/machine-learning-101-be2e0a86c96ahttps://developers.google.com/machine-learning/crash-course/reducing-loss/gradient-descenthttps://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-learningAdrian Rosebrock ( 2017 ). Deep Learning for Computer Vision with Python. Starter Bundle : PyImageSearch. comAurélien Géron ( 2017 ). Hands-On Machine Learning with Scikit-Learn and TensorFlow. Sebastopol : O’Reilly Media .

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *