Gradient Descent
Gradient descent huấn luyện model bằng cách liên tục cập nhật trọng số theo gradient của hàm loss. Nội dung bao gồm learning rate, SGD, momentum và Adam.
Gradient descent là thuật toán tối ưu hóa lặp, dùng để huấn luyện hầu hết model học máy, từ hồi quy tuyến tính đến các mạng nơ-ron lớn. Ở mỗi bước, thuật toán tính gradient của hàm mất mát theo từng trọng số model, rồi dịch chuyển từng trọng số một bước nhỏ theo hướng ngược lại; đó là hướng làm hàm mất mát giảm nhanh nhất. Quy tắc cập nhật là w ← w − η∇L(w), trong đó η là learning rate. Một hình ảnh so sánh thường dùng là người đi bộ xuống núi trong màn sương dày: không nhìn thấy thung lũng, người đó cảm nhận độ dốc dưới chân rồi bước xuống dốc hết lần này đến lần khác cho đến khi mặt đất bằng phẳng.
Cách hạ gradient hoạt động#
Mỗi lần lặp gồm ba phần. Lượt truyền xuôi tính dự đoán và độ mất mát; lan truyền ngược tính gradient của độ mất mát theo từng trọng số; bộ tối ưu cập nhật các trọng số. Theo định nghĩa gradient trong giải tích nhiều biến, gradient hướng lên trên bề mặt hàm mất mát, nên trừ gradient sẽ dịch chuyển trọng số xuống phía dưới.
Các biến thể khác nhau ở lượng dữ liệu sử dụng trong mỗi bước. Batch gradient descent tính gradient chính xác trên toàn bộ dữ liệu huấn luyện, cho kết quả chuẩn xác nhưng chậm với tập dữ liệu lớn. Stochastic gradient descent (SGD) ước tính gradient từ một mẫu duy nhất; còn mini-batch gradient descent, phương pháp tiêu chuẩn trong học sâu, tính trung bình trên một batch size gồm hàng chục đến hàng nghìn mẫu để giữ cho GPU luôn hoạt động hiệu quả. Nhiễu trong gradient mini-batch cũng giúp trọng số vượt qua các điểm yên ngựa và cực tiểu sắc. Một lượt đi hết tập huấn luyện là một epoch.
Chọn learning rate#
Tốc độ học xác định kích thước bước và thường là siêu tham số đầu tiên cần tinh chỉnh trong phương pháp gradient descent. Tốc độ học quá nhỏ làm lãng phí tài nguyên tính toán khi tiến chậm về phía điểm cực tiểu, còn tốc độ quá lớn khiến thuật toán vượt quá điểm cực tiểu; với hàm mất mát bậc hai, mọi tốc độ học lớn hơn 2 chia cho độ cong của hàm mất mát đều khiến mỗi bước đi xa điểm cực tiểu hơn bước trước. Đoạn mã dưới đây tối thiểu hóa (w − 2)², có độ cong bằng 2, với ba tốc độ học trong PyTorch:
import torch
# Minimize loss(w) = (w - 2)^2, whose minimum is at w = 2, with three learning rates
for lr in [0.1, 0.5, 1.1]:
w = torch.tensor(5.0, requires_grad=True)
for step in range(20):
loss = (w - 2) ** 2
loss.backward() # w.grad now holds the slope 2 * (w - 2)
with torch.no_grad():
w -= lr * w.grad # step against the gradient
w.grad.zero_()
print(f"Learning rate {lr}: w = {w.item():.4f} after 20 steps")Với learning rate 0.1, trọng số vẫn ở mức 2.0346 sau 20 bước; learning rate 0.5 đưa trọng số chính xác đến 2.0000 vì bằng nghịch đảo độ cong; learning rate 1.1 vượt quá cực tiểu với khoảng cách ngày càng tăng qua mỗi bước cho đến khi w đạt 117.0129. Lịch huấn luyện thực tế thường bắt đầu bằng giai đoạn warmup ngắn rồi giảm learning rate, thường theo đường cong cosine, để các bước đầu ổn định và các bước cuối hội tụ chính xác.
Momentum, Adam và các bộ tối ưu hiện đại#
Gradient descent cơ bản di chuyển zíc zắc qua các thung lũng hẹp trên bề mặt loss, vì vậy phần lớn quá trình huấn luyện dùng các quy tắc cập nhật cải tiến. Momentum tích lũy trung bình trượt của các gradient trước đó rồi di chuyển theo hướng này, giúp giảm dao động và tăng tốc theo các hướng nhất quán. Optimizer Adam cũng theo dõi bình phương gradient của từng parameter để mỗi trọng số có kích thước bước thích ứng riêng; AdamW tách weight decay khỏi bước cập nhật đó. Muon trực giao hóa bước cập nhật momentum của mỗi ma trận trọng số 2D bằng các phép lặp Newton-Schulz, để không hướng nào chi phối bước cập nhật. Huấn luyện Ultralytics YOLO26 với optimizer="auto" chọn AdamW, dùng learning rate được điều chỉnh theo số lớp, cho các lần chạy tối đa 10.000 iteration; với các lần chạy dài hơn, MuSGD bổ sung các bước cập nhật trực giao kiểu Muon vào SGD cho trọng số tích chập và tuyến tính.
Ứng dụng thực tế#
Gradient descent là công cụ huấn luyện đứng sau gần như mọi hệ thống học sâu. Trong xe tự hành, thuật toán điều chỉnh mạng phát hiện đối tượng để thu hẹp khoảng cách giữa khung dự đoán và khung được gán nhãn cho người đi bộ, biển báo và phương tiện trên hàng triệu khung hình. Trong phân tích ảnh y khoa, thuật toán khớp các mạng nơ-ron tích chập để phân biệt khối u với mô khỏe mạnh trong ảnh MRI và CT. Mô hình ngôn ngữ lớn cũng được huấn luyện theo cách tương tự, thường dùng AdamW trên hàng nghìn tỷ token.
Gradient descent và các khái niệm liên quan#
- Lan truyền ngược: Lan truyền ngược tính gradient bằng quy tắc dây chuyền; gradient descent sử dụng các gradient đó để cập nhật trọng số. Hai bước diễn ra liên tiếp trong mỗi bước huấn luyện và thường được nhắc đến cùng nhau.
- Hàm mất mát: Hàm mất mát chấm mức độ sai lệch của dự đoán từ model; gradient descent là quy trình làm giảm điểm số đó.
- Gradient bùng nổ: Khi gradient tăng mất kiểm soát trong mạng sâu, gradient descent thực hiện các bước cập nhật phá hoại; clipping gradient ngăn điều này bằng cách giới hạn chuẩn gradient trước mỗi lần cập nhật.
- Thuật toán tiến hóa: Các phương pháp không dùng gradient này tìm kiếm bằng cách lấy mẫu và chọn các ứng viên mà không tính gradient, phù hợp với những hàm mục tiêu không khả vi, chẳng hạn như các lựa chọn siêu tham số.










