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. Độ dốc dựa trên quan sát nếu hàm đa biến F ( x ) {\displaystyle 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 a {\displaystyle \mathbf {a} } , sau đó F ( x ) {\displaystyle F(\mathbf {x} )} giảm nhanh nhất nếu đi từ a {\displaystyle \mathbf {a} } theo hướng của độ dốc âm của F {\displaystyle F} tại a , − ∇ F ( a ) {\displaystyle \mathbf {a} ,-\nabla F(\mathbf {a} )} . Nó theo sau nếu a n + 1 = a n − γ ∇ F ( a n ) {\displaystyle \mathbf {a} _{n+1}=\mathbf {a} _{n}-\gamma \nabla F(\mathbf {a} _{n})} đối với γ ∈ R + {\displaystyle \gamma \in \mathbb {R} _{+}} đủ nhỏ, khi đó F ( a n ) ≥ F ( a n + 1 ) {\displaystyle F(\mathbf {a_{n}} )\geq F(\mathbf {a_{n+1}} )} . Theo cách nói khác, giá trị γ ∇ F ( a ) {\displaystyle \gamma \nabla F(\mathbf {a} )} được trừ bớt khỏi a {\displaystyle \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 x 0 {\displaystyle \mathbf {x} _{0}} đối với một cực tiểu cục bộ của F {\displaystyle F} , và xem chuỗi x 0 , x 1 , x 2 , … {\displaystyle \mathbf {x} _{0},\mathbf {x} _{1},\mathbf {x} _{2},\ldots } là x n + 1 = x n − γ n ∇ F ( x n ) ,   n ≥ 0. {\displaystyle \mathbf {x} _{n+1}=\mathbf {x} _{n}-\gamma _{n}\nabla F(\mathbf {x} _{n}),\ n\geq 0.} Khi đó, chúng ta có một chuỗi hàm số đơn điệu F ( x 0 ) ≥ F ( x 1 ) ≥ F ( x 2 ) ≥ ⋯ , {\displaystyle F(\mathbf {x} _{0})\geq F(\mathbf {x} _{1})\geq F(\mathbf {x} _{2})\geq \cdots ,} vì vậy hi vọng chuỗi ( x n ) {\displaystyle (\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) γ {\displaystyle \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 {\displaystyle F} (ví dụ, hàm lồi F {\displaystyle F} và Lipschitz ∇ F {\displaystyle \nabla F} ) và các lựa chọn cụ thể của γ {\displaystyle \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), γ n = | ( x n − x n − 1 ) T [ ∇ F ( x n ) − ∇ F ( x n − 1 ) ] | ‖ ∇ F ( x n ) − ∇ F ( x n − 1 ) ‖ 2 {\displaystyle \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 {\displaystyle 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 {\displaystyle F} là được xác định trên mặt phẳng, và đồ thị của nó có hình bát ăn. 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 {\displaystyle 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 {\displaystyle 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. 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 ^ Lemaréchal, C. (2012). “Cauchy and the Gradient Method” (PDF). Doc Math Extra: 251–254. ^ Curry, Haskell B. (1944). “The Method of Steepest Descent for Non-linear Minimization Problems”. Quart. Appl. Math. 2 (3): 258–261. doi:10.1090/qam/10667. ^ Barzilai, Jonathan; Borwein, Jonathan M. (1988). “Two-Point Step Size Gradient Methods”. IMA Journal of Numerical Analysis. 8 (1): 141–148. doi:10.1093/imanum/8.1.141. ^ Fletcher, R. (2005). “On the Barzilai–Borwein Method”. Trong Qi, L.; Teo, K.; Yang, X. (biên tập). Optimization and Control with Applications. Applied Optimization. 96. Boston: Springer. tr. 235–256. ISBN 0-387-24254-6. Boyd, Stephen; Vandenberghe, Lieven (2004). “Unconstrained Minimization” (PDF). Convex Optimization. New York: Cambridge University Press. tr. 457–520. ISBN 0-521-83378-7. 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 “Gradient Descent, How Neural Networks Learn”. 3Blue1Brown. ngày 16 tháng 10 năm 2017 – qua YouTube.