Suy giảm độ dốc

Suy giảm độ dốc (còn gọi là giảm độ dốc, tiếng Anh: gradient descent) là một thuật toán tối ưu hóa lặp bậc nhất để tìm một cực trị của một hàm khả vi. Để tìm cực tiểu cục bộ của một hàm sử dụng suy giảm độ dốc, người ta có thể thực hiện các bước tỷ lệ thuận với âm của gradient (hoặc độ dốc xấp xỉ) của hàm tại điểm hiện tại. Nhưng nếu thực hiện các bước tương ứng với dương của gradient thì tiếp cận được một cực đại cục bộ của hàm số đó; phương pháp này được gọi là tăng độ dốc (gradient ascent). Nói chung, Augustin-Louis Cauchy được ghi công là người gợi ý về vấn đề suy giảm độ dốc vào năm 1847, nhưng các tính chất hội tụ của nó cho các bài toán tối ưu hóa phi tuyến tính được Haskell Curry nghiên cứu lần đầu tiên năm 1944.

Mô tả
. Điểm x0, x1,... là các điểm trực giao với các đường đồng mức (màu xanh) trong quá trình thực hiện thuật toán suy giảm độ dốc cho đến khi tìm được các điểm cực tiểu.]]

Độ dốc dựa trên quan sát nếu hàm đa biến F(\mathbf{x}) là chưa xác định và khả vi trong một vùng lân cận của một điểm \mathbf{a}, sau đó F(\mathbf{x}) giảm nhanh nhất nếu đi từ \mathbf{a} theo hướng của độ dốc âm của F tại \mathbf{a}, -\nabla F(\mathbf{a}). Nó theo sau nếu

: \mathbf{a}_{n+1} = \mathbf{a}_n-\gamma\nabla F(\mathbf{a}_n)

đối với \gamma \in \R_{+} đủ nhỏ, khi đó F(\mathbf{a_n})\geq F(\mathbf{a_{n+1}}). Theo cách nói khác, giá trị \gamma\nabla F(\mathbf{a}) được trừ bớt khỏi \mathbf{a} bởi vì chúng ta muốn di chuyển ngược lại độ dốc, hướng đến cực tiểu cục bộ. Với quan sát này, bắt đầu với một phỏng đoán \mathbf{x}_0 đối với một cực tiểu cục bộ của F, và xem chuỗi \mathbf{x}_0, \mathbf{x}_1, \mathbf{x}_2, \ldots là

:\mathbf{x}_{n+1}=\mathbf{x}_n-\gamma_n \nabla F(\mathbf{x}_n),\ n \ge 0.

Khi đó, chúng ta có một chuỗi hàm số đơn điệu

:F(\mathbf{x}_0)\ge F(\mathbf{x}_1)\ge F(\mathbf{x}_2)\ge \cdots,

vì vậy hi vọng chuỗi (\mathbf{x}_n) hội tụ ở mức tối thiểu cục bộ mong muốn. Chú ý rằng giá trị kích thước nhảy (step size) \gamma được phép thay đổi ở mỗi lần lặp. Với các giả định nhất định về hàm F (ví dụ, hàm lồi F và Lipschitz \nabla F) và các lựa chọn cụ thể của \gamma (ví dụ, được chọn thông qua một tìm kiếm dòng (line search) mà thỏa mãn các điều kiện Wolfe, hoặc phương pháp Barzilai–Borwein được nêu như sau),

: \gamma_{n} = \frac{ \left | \left (\mathbf x_{n} - \mathbf x_{n-1} \right)^T \left [\nabla F (\mathbf x_{n}) - \nabla F (\mathbf x_{n-1}) \right ] \right |}{\left \|\nabla F(\mathbf{x}_{n}) - \nabla F(\mathbf{x}_{n-1}) \right \|^2}

Chuỗi hội tụ ở mức tối thiểu cục bộ có thể được đảm bảo. Khi hàm F là hàm lồi, tất cả các cực tiểu cục bộ cũng là cực tiểu toàn cục, vì vậy trong trường hợp này, độ dốc giảm có thể hội tụ về giải pháp toàn cục.

Quá trình này được phác họa như trong hình bên cạnh. Với giả định F là được xác định trên mặt phẳng, và đồ thị của nó có dạng lồi. Các đường cong màu xanh là các đường đồng mức, nghĩa là, các vùng mà giá trị của F là không đổi (hằng số). Mũi tên màu đỏ bắt nguồn từ một điểm cho biết hướng của độ dốc âm tại điểm đó. Lưu ý độ dốc (âm) tại một điểm là trực giao (orthogonality, vuông góc) với các đường đồng mức đi qua điểm đó. Độ dốc suy giảm (rơi xuống) dẫn đường màu đỏ đến đáy của cái tô, tức là, đến điểm mà giá trị của hàm F là nhỏ nhất. Điểm này là điểm cần tìm trong các bài toán về suy giảm độ dốc.

Xem thêm

Backtracking line search
Conjugate gradient method
Stochastic gradient descent
Rprop
Luật Delta
Điều kiện Wolfe
Preconditioner
Thuật toán Broyden–Fletcher–Goldfarb–Shanno
Công thức Davidon–Fletcher–Powell
Phương pháp Nelder–Mead
Thuật toán Gauss–Newton
Hill climbing
Quantum annealing

Tham khảo

Đọc thêm

Liên kết ngoài

Using gradient descent in C++, Boost, Ublas for linear regression
Series of Khan Academy videos discusses gradient ascent
Online book teaching gradient descent in deep neural network context