Gradient Descent: Thuật Toán Tối Ưu Hóa Cốt Lõi Trong Học Máy

Gradient Descent: Thuật Toán Tối Ưu Hóa Cốt Lõi Trong Học Máy

Gradient Descent là một thuật toán tối ưu hóa lặp đi lặp lại được sử dụng để tìm cực tiểu của một hàm số. Trong học máy, nó đóng vai trò quan trọng trong việc điều chỉnh các tham số của mô hình để giảm thiểu hàm mất mát, từ đó cải thiện độ chính xác của dự đoán. src='https://developers.google.com/static/machine-learning/crash-course/linear-regression/images/gradient-descent.png?hl=vi' alt='Hình minh họa phương pháp giảm độ dốc trong học máy' />
Hình 11. Hình minh họa phương pháp giảm độ dốc (Gradient Descent).

Trong thế giới học máy và trí tuệ nhân tạo, việc xây dựng các mô hình có khả năng học hỏi từ dữ liệu là yếu tố then chốt. Tuy nhiên, để mô hình hoạt động hiệu quả, chúng ta cần một phương pháp để tinh chỉnh các tham số của nó sao cho nó có thể đưa ra những dự đoán chính xác nhất. Đây chính là lúc Gradient Descent, hay còn gọi là phương pháp giảm độ dốc, phát huy vai trò của mình.

Gradient Descent là gì và tại sao nó quan trọng?

Gradient Descent là một thuật toán tối ưu hóa cơ bản nhưng vô cùng mạnh mẽ, được sử dụng rộng rãi trong các lĩnh vực như học máy, mạng nơ-ron và nhiều bài toán tối ưu hóa khác. Mục tiêu chính của Gradient Descent là tìm ra giá trị của các tham số sao cho một hàm số mục tiêu (thường là hàm mất mát hay hàm chi phí) đạt giá trị cực tiểu.

Hàm mất mát đo lường sự khác biệt giữa giá trị dự đoán của mô hình và giá trị thực tế. Càng giảm thiểu hàm mất mát, mô hình của chúng ta càng trở nên chính xác. Gradient Descent giúp chúng ta đạt được điều này bằng cách điều chỉnh các tham số theo hướng ngược lại với gradient (đạo hàm) của hàm mất mát tại điểm hiện tại.

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

Quá trình hoạt động của Gradient Descent có thể được hình dung như việc đi xuống một ngọn đồi trong sương mù. Bạn không thể nhìn thấy toàn bộ con đường, nhưng bạn biết mình đang ở đâu và có thể cảm nhận được độ dốc của mặt đất dưới chân. Ý tưởng là:

  1. Bắt đầu từ một điểm bất kỳ trên bề mặt hàm mất mát (thường là các giá trị tham số ngẫu nhiên).
  2. Tính toán gradient của hàm mất mát tại điểm hiện tại. Gradient cho biết hướng có độ dốc tăng nhanh nhất.
  3. Di chuyển một bước nhỏ theo hướng ngược lại với gradient. Hướng này đảm bảo chúng ta đang đi xuống dốc, tức là giảm giá trị của hàm mất mát.
  4. Lặp lại các bước trên cho đến khi đạt đến điểm cực tiểu hoặc một ngưỡng hội tụ mong muốn.

Tốc độ di chuyển (độ lớn của mỗi bước) được kiểm soát bởi tốc độ học (learning rate). Tốc độ học quá lớn có thể khiến thuật toán 'nhảy' qua điểm cực tiểu, trong khi tốc độ học quá nhỏ có thể khiến quá trình hội tụ diễn ra rất chậm.

Hình 18. Bề mặt tổn thất lồi 3D với các điểm phương pháp giảm độ dốc di chuyển đến điểm thấp nhất.

Công thức Gradient Descent

Công thức cập nhật tham số (ví dụ cho tham số $w$) trong thuật toán Gradient Descent được biểu diễn như sau:

$$w_{new} = w_{old} - \alpha \ abla J(w)$$

Trong đó:

  • $w_{new}$ là giá trị tham số mới sau bước cập nhật.
  • $w_{old}$ là giá trị tham số hiện tại.
  • $\( \alpha \)$ là tốc độ học (learning rate), một hằng số dương nhỏ.
  • $ abla J(w)$ là gradient của hàm mất mát $J(w)$ theo tham số $w$. Gradient là một vector chứa các đạo hàm riêng của hàm mất mát theo từng tham số.

Việc tính toán gradient đòi hỏi phải có đạo hàm của hàm mất mát. Đối với các mô hình phức tạp, việc tính toán đạo hàm này thường được thực hiện tự động bằng các kỹ thuật như lan truyền ngược (backpropagation) trong mạng nơ-ron.

Các biến thể của Gradient Descent

Để cải thiện hiệu suất và tốc độ hội tụ, nhiều biến thể của Gradient Descent đã được phát triển:

1. Batch Gradient Descent

Đây là phiên bản gốc, tính toán gradient dựa trên toàn bộ tập dữ liệu huấn luyện trong mỗi lần cập nhật. Mặc dù đảm bảo hội tụ về cực tiểu toàn cục (đối với hàm lồi), nó rất tốn kém về mặt tính toán với các tập dữ liệu lớn.

2. Stochastic Gradient Descent (SGD)

SGD cập nhật tham số sau mỗi lần xem xét một điểm dữ liệu duy nhất. Cách tiếp cận này nhanh hơn nhiều so với Batch Gradient Descent nhưng có thể dao động mạnh quanh điểm cực tiểu do tính chất ngẫu nhiên.

Hình 12. Biểu đồ đường cong tổn thất cho thấy mức giảm mạnh rồi giảm nhẹ, đặc trưng của SGD.

3. Mini-batch Gradient Descent

Là sự kết hợp giữa hai phương pháp trên. Mini-batch Gradient Descent cập nhật tham số dựa trên một nhóm nhỏ (mini-batch) các điểm dữ liệu. Nó cân bằng giữa tốc độ tính toán và sự ổn định của quá trình hội tụ, trở thành phương pháp được sử dụng phổ biến nhất.

4. Gradient Descent with Momentum

Biến thể này sử dụng