Gradient descent, hay còn gọi là hạ gradient, là một thuật toán tối ưu hóa được sử dụng rộng rãi trong học máy và học sâu. Mục tiêu của nó là tìm ra tập hợp các tham số (ví dụ: trọng số và độ lệch) của một mô hình để giảm thiểu hàm mất mát (loss function). Về cơ bản, nó hoạt động giống như việc bạn đi xuống một ngọn đồi trong sương mù dày đặc và muốn tìm điểm thấp nhất: bạn sẽ dò dẫm xung quanh và đi từng bước nhỏ theo hướng dốc nhất xuống dưới.
Cách thức hoạt động
Gradient descent hoạt động dựa trên việc tính toán gradient (đạo hàm của hàm mất mát) so với các tham số của mô hình. Gradient cho biết độ dốc của hàm mất mát tại vị trí hiện tại và chỉ ra hướng “dốc lên” nhanh nhất. Do mục tiêu của chúng ta là giảm thiểu hàm mất mát, chúng ta sẽ di chuyển ngược lại với hướng của gradient.
Quá trình này được lặp lại nhiều lần cho đến khi đạt được một điểm tối thiểu (hoặc một điểm gần tối thiểu):
- Khởi tạo: Bắt đầu với các tham số (trọng số) ngẫu nhiên.
- Tính toán hàm mất mát: Tính toán giá trị của hàm mất mát cho các tham số hiện tại.
- Tính toán gradient: Tính toán gradient của hàm mất mát theo từng tham số.
- Cập nhật tham số: Cập nhật các tham số bằng cách di chuyển ngược lại với hướng của gradient, với một “bước nhảy” có kích thước được xác định bởi tốc độ học (learning rate).
Các loại Gradient Descent
Có ba biến thể chính của thuật toán này, được phân biệt bởi số lượng dữ liệu mà chúng sử dụng để tính toán gradient trong mỗi lần lặp:
- Batch Gradient Descent:
- Sử dụng toàn bộ tập dữ liệu huấn luyện để tính toán gradient và cập nhật tham số.
- Ưu điểm: Hướng di chuyển chính xác và ổn định hơn. Đảm bảo tìm được điểm tối thiểu toàn cục (global minimum) cho các hàm lồi.
- Nhược điểm: Rất chậm và tốn tài nguyên tính toán với các tập dữ liệu lớn.
- Stochastic Gradient Descent (SGD):
- Chỉ sử dụng một mẫu dữ liệu ngẫu nhiên duy nhất tại mỗi lần lặp để tính toán và cập nhật gradient.
- Ưu điểm: Nhanh hơn nhiều so với Batch Gradient Descent. Có thể thoát khỏi các điểm tối thiểu cục bộ (local minimum).
- Nhược điểm: Quá trình cập nhật rất “ồn ào” và không ổn định, có thể làm cho hàm mất mát dao động.
- Mini-batch Gradient Descent:
- Là sự kết hợp giữa hai loại trên, sử dụng một tập con (mini-batch) của dữ liệu để tính toán gradient.
- Ưu điểm: Đạt được sự cân bằng tốt giữa hiệu suất và tốc độ. Giảm được nhiễu so với SGD nhưng nhanh hơn Batch Gradient Descent. Đây là phương pháp được sử dụng phổ biến nhất hiện nay.