Gradient Descent là thuật toán tối ưu hóa cốt lõi trong Machine Learning. Hãy cùng tìm hiểu toán học đằng sau nó.
Ý tưởng cơ bản
Cho hàm mất mát L(θ), ta muốn tìm θ∗ sao cho:
θ∗=argminθL(θ)
Gradient Descent cập nhật tham số theo hướng ngược gradient:
θt+1=θt−η∇L(θt)
trong đó η>0 là learning rate (tốc độ học).
Tại sao đi ngược gradient?
Khai triển Taylor bậc nhất của L tại θt:
L(θt+Δθ)≈L(θt)+∇L(θt)TΔθ
Để L giảm nhiều nhất, ta cần:
Δθ=−η∇L(θt)
Đây chính là hướng đi dốc nhất (steepest descent).
Điều kiện hội tụ
Nếu L là hàm lồi và có gradient Lipschitz liên tục với hằng số M:
∥∇L(x)−∇L(y)∥≤M∥x−y∥
thì với learning rate η≤M1, Gradient Descent hội tụ với tốc độ:
L(θt)−L(θ∗)≤2ηt∥θ0−θ∗∥2
Tức là tốc độ hội tụ là O(1/t).
Các biến thể
Stochastic Gradient Descent (SGD)
Thay vì tính gradient trên toàn bộ dữ liệu, SGD chỉ dùng một mẫu ngẫu nhiên:
θt+1=θt−η∇Li(θt)
trong đó i được chọn ngẫu nhiên. Ưu điểm: nhanh hơn nhiều cho bộ dữ liệu lớn.
Adam Optimizer
Adam kết hợp momentum và adaptive learning rate:
mt=β1mt−1+(1−β1)∇L(θt)
vt=β2vt−1+(1−β2)[∇L(θt)]2
θt+1=θt−ηv^t+ϵm^t
trong đó m^t và v^t là các ước lượng đã hiệu chỉnh bias.