Optimizers Trong Deep Learning: Từ SGD Đến Adam

Picsum Id: 217

Series: Machine Learning Fundamentals – Bài 41

Ở bài trước, chúng ta đã tìm hiểu Transfer Learning (Học chuyển giao) – kỹ thuật giúp tái sử dụng các mô hình đã được huấn luyện trước để tiết kiệm thời gian và tài nguyên.

Tuy nhiên, dù bạn huấn luyện một mô hình từ đầu (Train from Scratch) hay thực hiện Fine-Tuning, một yếu tố quyết định mô hình có thể học hiệu quả và hội tụ hay không chính là Optimizers (Thuật toán tối ưu).

Nếu Loss Function là “thước đo” độ sai lệch của mô hình, thì Optimizer chính là “người dẫn đường”, giúp điều chỉnh các trọng số (Weights) để đưa Loss về giá trị nhỏ hơn.

Optimizers trong Deep Learning là gì?

Optimizer là thuật toán được sử dụng để cập nhật các tham số của mạng nơ-ron, chẳng hạn như Weights (W)Bias (b), nhằm tối thiểu hóa giá trị của Loss Function.

Dữ liệu → Neural Network → Dự đoán → Loss Function

Optimizer → Cập nhật Weights & Bias → Huấn luyện tiếp

Trong quá trình huấn luyện, Optimizer sử dụng Gradient của Loss theo các tham số để xác định hướng và mức độ cần điều chỉnh ở mỗi bước cập nhật.

Tốc độ học (Learning Rate) – Tham số quan trọng

Learning Rate (η) quyết định kích thước của mỗi bước cập nhật.

Learning Rate quá lớn

Bước cập nhật quá lớn → dễ vượt qua vùng tối ưu → Loss có thể dao động hoặc tăng.

Learning Rate quá nhỏ

Bước cập nhật quá nhỏ → quá trình học chậm → cần nhiều thời gian để hội tụ.

Sự phát triển của các thuật toán Optimizers

1. Stochastic Gradient Descent (SGD)

SGD là một trong những phương pháp tối ưu cơ bản nhất. Thay vì sử dụng toàn bộ dữ liệu, SGD thường cập nhật trọng số dựa trên từng mẫu hoặc Mini-batch.

Wt+1 = Wt − η × ∇L(Wt)

Ưu điểm:

  • Đơn giản và dễ hiểu.
  • Sử dụng tương đối ít bộ nhớ.
  • Có thể cho khả năng tổng quát hóa tốt trong nhiều bài toán.

Nhược điểm:

  • Quá trình tối ưu có thể dao động.
  • Có thể hội tụ chậm.
  • Learning Rate thường cần được điều chỉnh cẩn thận.

2. Momentum

Momentum bổ sung thông tin từ các bước cập nhật trước đó. Có thể hình dung nó giống như việc thêm “quán tính” vào quá trình di chuyển của trọng số.

vt = γvt−1 + η × ∇L(Wt)

Wt+1 = Wt − vt

Momentum giúp giảm dao động theo những hướng không cần thiết và tăng tốc quá trình di chuyển theo hướng có lợi.

3. RMSprop

RMSprop sử dụng trung bình trượt của bình phương Gradient để điều chỉnh Learning Rate cho từng tham số.

st = βst−1 + (1 − β)(∇L(Wt))2


Wt+1 =
Wt
[η / (√st + ε)] × ∇L(Wt)

Điểm đặc biệt của RMSprop là Learning Rate hiệu dụng có thể thay đổi theo từng tham số thay vì sử dụng một bước nhảy giống nhau cho toàn bộ mạng.

4. Adam – Adaptive Moment Estimation

Adam kết hợp hai ý tưởng quan trọng:

  • Momentum: theo dõi trung bình của Gradient.
  • RMSprop: theo dõi trung bình của bình phương Gradient.

mt = β1mt−1 + (1 − β1)gt


vt = β2vt−1 + (1 − β2)gt2

Adam còn sử dụng cơ chế Bias Correction trước khi thực hiện bước cập nhật cuối cùng.

Nhờ khả năng tự điều chỉnh bước cập nhật cho từng tham số, Adam thường là một lựa chọn khởi đầu thuận tiện cho nhiều bài toán Deep Learning.

So sánh các Optimizers phổ biến

Thuật toán Cơ chế chính Ưu điểm Nhược điểm
SGD Gradient cơ bản Đơn giản, ít bộ nhớ Có thể hội tụ chậm
Momentum Thêm quán tính Giảm dao động, tăng tốc hội tụ Cần điều chỉnh thêm tham số
RMSprop Adaptive Learning Rate Điều chỉnh bước học theo từng tham số Cần lựa chọn Hyperparameter phù hợp
Adam Momentum + Adaptive Scaling Dễ sử dụng, thường hội tụ nhanh Không phải lúc nào cũng cho khả năng tổng quát hóa tốt nhất

Cách lựa chọn Optimizer phù hợp

🔵 Adam

Có thể sử dụng làm lựa chọn ban đầu cho nhiều bài toán Deep Learning, đặc biệt khi cần một Optimizer adaptive và muốn bắt đầu nhanh.

🟢 SGD + Momentum

Thường được sử dụng trong Computer Vision và các bài toán Fine-Tuning. Kết hợp với Learning Rate Schedule có thể mang lại khả năng tổng quát hóa tốt trong một số trường hợp.

🟣 RMSprop

Có lịch sử được sử dụng nhiều trong các bài toán có Gradient biến đổi mạnh, bao gồm một số bài toán xử lý chuỗi và RNN.

🟠 AdamW

Một biến thể của Adam sử dụng Weight Decay theo cách tách biệt với bước cập nhật Gradient, được sử dụng rộng rãi trong nhiều mô hình hiện đại.

Learning Rate quan trọng như thế nào?

Một Optimizer tốt nhưng Learning Rate không phù hợp vẫn có thể khiến mô hình học kém.

⬆️

Quá lớn

Loss dao động hoặc phân kỳ

🐢

Quá nhỏ

Học rất chậm

🎯

Phù hợp

Hội tụ ổn định

Optimizer hoạt động như thế nào?

1. Forward Pass

Dữ liệu → Mô hình → Dự đoán

2. Tính Loss

Dự đoán → So sánh với dữ liệu thật

3. Backpropagation

Tính Gradient

4. Optimizer

Cập nhật Weights & Bias

5. Lặp lại

Loss giảm dần → Mô hình học tốt hơn

Tóm tắt

  1. Optimizer điều chỉnh Weights và Bias để tối thiểu hóa Loss Function.
  2. Learning Rate quyết định kích thước bước cập nhật và là một Hyperparameter rất quan trọng.
  3. SGD là phương pháp tối ưu cơ bản và đơn giản.
  4. Momentum bổ sung quán tính để giảm dao động và hỗ trợ hội tụ.
  5. RMSprop điều chỉnh Learning Rate hiệu dụng dựa trên lịch sử Gradient.
  6. Adam kết hợp ý tưởng của Momentum và adaptive scaling, thường là lựa chọn khởi đầu tốt cho nhiều bài toán.
  7. AdamW là một biến thể đáng chú ý, đặc biệt phổ biến trong nhiều mô hình Deep Learning hiện đại.

Tài liệu tham khảo

  1. Kingma & Ba: Adam: A Method for Stochastic Optimization
  2. PyTorch Documentation: Torch Optim Package
  3. TensorFlow Documentation: Keras Optimizers Guide

Khóa học tại MCNA Technology School

Nếu bạn muốn thực hành Machine Learning, Python và xây dựng các mô hình trên dữ liệu thực tế, có thể tham khảo các khóa học tại MCNA Technology School.

Tác giả: Bùi Đình Tuyển – Data Analyst tại MCNA Technology School


📞 Hotline: 0939.866.825 (Mr. Khang)

🌐 Website: MCNA Technology School

📍 Hà Nội: 30 Trung Liệt, Đống Đa Liền kề 44B TT2 Văn Quán, Hà Đông

📍 TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu

Chỉ mục