應用於最優化的牛頓法

牛頓法是微積分學中, 通過疊代以求解可微函數 f {\displaystyle f} 的零點的一種算法 (即求 x {\displaystyle x} 使得 f ( x ) = 0 {\displaystyle f(x)=0} ). 而在最佳化中, 牛頓法通常被運用於求解一個二次可微函數 f {\displaystyle f} 的一階導數 f ′ {\displaystyle f^{\prime }} 的零點 (即求 x {\displaystyle x} 使得 f ′ ( x ) = 0 {\displaystyle f^{\prime }(x)=0} ), 同時也是 f {\displaystyle f} 的駐點. 因此從另一個角度而言，應用於最佳化的牛頓法是搜索函數 f ( x ) {\displaystyle f(x)} 的最小值或最大值的一種算法。 一維問題的牛頓法主要步驟如下: 取一個點 x 0 {\displaystyle x_{0}} 為初值, 依如下公式疊代: x n + 1 = x n − f ′ ( x n ) f ′ ′ ( x n ) , {\displaystyle x_{n+1}=x_{n}-{\frac {f^{\prime }(x_{n})}{f^{\prime \prime }(x_{n})}},} 直至滿足一定條件 (如 f ′ ( x n ) = 0 {\displaystyle f^{\prime }(x_{n})=0} 或 x n + 1 − x n < ε {\displaystyle x_{n+1}-x_{n}<\varepsilon } , 其中 ε {\displaystyle \varepsilon } 為一個給定的足夠小的常數) 後, 算法終止。 在一維問題中, 牛頓法將構造一個以 x 0 {\displaystyle x_{0}} 為首項, 收斂到 x ∗ {\displaystyle x^{*}} 的數列 { x n } {\displaystyle \{x_{n}\}} , 其中 x ∗ {\displaystyle x^{*}} 使得 f ′ ( x ∗ ) = 0 {\displaystyle f^{\prime }(x^{*})=0} 成立. f ( x ) {\displaystyle f(x)} 在 x = x n {\displaystyle x=x_{n}} 處的二階泰勒展開式 f T ( x ) {\displaystyle f_{T}(x)} 為: f T ( x ) = f T ( x n + Δ x ) ≈ f ( x n ) + f ′ ( x n ) Δ x + 1 2 f ′ ′ ( x n ) Δ x 2 . {\displaystyle f_{T}(x)=f_{T}(x_{n}+\Delta x)\approx f(x_{n})+f^{\prime }(x_{n})\Delta x+{\frac {1}{2}}f^{\prime \prime }(x_{n})\Delta x^{2}.} 我們希望找到 Δ x {\displaystyle \Delta x} 使 x n + Δ x {\displaystyle x_{n}+\Delta x} 為 f T ( x ) {\displaystyle f_{T}(x)} 的一個駐點。則將上式對 Δ x {\displaystyle \Delta x} 進行求導: 0 = d d Δ x ( f ( x n ) + f ′ ( x n ) Δ x + 1 2 f ′ ′ ( x n ) Δ x 2 ) = f ′ ( x n ) + f ′ ′ ( x n ) Δ x . {\displaystyle 0={\frac {\text{d}}{{\text{d}}\Delta x}}(f(x_{n})+f^{\prime }(x_{n})\Delta x+{\frac {1}{2}}f^{\prime \prime }(x_{n})\Delta x^{2})=f^{\prime }(x_{n})+f^{\prime \prime }(x_{n})\Delta x.} 上述方程的解 Δ x = − f ′ ( x n ) f ′ ′ ( x n ) {\displaystyle \Delta x=-{\frac {f^{\prime }(x_{n})}{f^{\prime \prime }(x_{n})}}} 滿足 x n + 1 = x n + Δ x = x n − f ′ ( x n ) f ′ ′ ( x n ) {\displaystyle x_{n+1}=x_{n}+\Delta x=x_{n}-{\frac {f^{\prime }(x_{n})}{f^{\prime \prime }(x_{n})}}} 收斂於 f T ( x ) {\displaystyle f_{T}(x)} 的駐點 x ∗ {\displaystyle x^{*}} . 牛頓法的幾何意義為: 在每一次疊代中，均以一個二次函數去逼近 f ( x ) {\displaystyle f(x)} . 具體而言: 在一維問題中，已知 x n {\displaystyle x_{n}} , f ( x n ) {\displaystyle f(x_{n})} , f ′ ( x n ) {\displaystyle f^{\prime }(x_{n})} 及 f ′ ′ ( x n ) {\displaystyle f^{\prime \prime }(x_{n})} , 設二次函數表逹式為 a x 2 + b x + c {\displaystyle ax^{2}+bx+c} , 依下列方程求解未知數 a ,   b ,   c , {\displaystyle a,\ b,\ c,} a x n 2 + b x n + c = f ( x n ) , {\displaystyle ax_{n}^{2}+bx_{n}+c=f(x_{n}),} 2 a x n + b = f ′ ( x n ) , {\displaystyle 2ax_{n}+b=f^{\prime }(x_{n}),} 2 a = f ′ ′ ( x n ) . {\displaystyle 2a=f^{\prime \prime }(x_{n}).} 然後二次函數 a x 2 + b x + c {\displaystyle ax^{2}+bx+c} 的極值點即為下一個疊代點, x n + 1 = − b 2 a . {\displaystyle x_{n+1}=-{\frac {b}{2a}}.} 而在高維問題中, 上述的極值點也可以是鞍點. 值得一提的是, 如果 f ( x ) {\displaystyle f(x)} 恰為一個二次函數, 則其極值點只需一次疊代中即可找到. 上述的一維問題的疊代法可以被推廣至多維問題. 只需將導數替換為梯度 ( ∇ f ( x ) {\displaystyle \nabla f(x)} ), 並將二階導數的倒數替換為Hessian矩陣的逆矩陣 ( H f ( x ) {\displaystyle \mathbf {H} f(x)} ), 即: x n + 1 = x n − [ H f ( x n ) ] − 1 ∇ f ( x n ) , n ≥ 0. {\displaystyle x_{n+1}=x_{n}-[\mathbf {H} f(x_{n})]^{-1}\nabla f(x_{n}),n\geq 0.} 通常, 使用牛頓法時會加入一個步長變量 γ ∈ ( 0 , 1 ) {\displaystyle \gamma \in (0,1)} 作微調以使每一步疊代都滿足Wolfe條件, 即, x n + 1 = x n − γ [ H f ( x n ) ] − 1 ∇ f ( x n ) . {\displaystyle x_{n+1}=x_{n}-\gamma [\mathbf {H} f(x_{n})]^{-1}\nabla f(x_{n}).} 這個方法被稱為無約束牛頓法, 通常用於第一步之後的疊代. 只要牛頓法適用, 其收斂於最小值或最大值的速度均頗快於最速下降法. 事實上, 對於每一個極小值, 都存在一個鄰域 N {\displaystyle N} 使得, 只要Hessian矩陣是可逆的且是一個關於 x ∈ N {\displaystyle x\in N} 的Lipschitz連續函數, 以 x 0 ∈ N {\displaystyle x_{0}\in N} 為初值, 步長 γ = 1 {\displaystyle \gamma =1} 的牛頓法是二次收斂的. 求一個高維問題的Hessian矩陣的逆矩陣是一件頗費工夫的事情. 在實際應用中, 通常會用向量 Δ x = x n + 1 − x n {\displaystyle \Delta x=x_{n+1}-x_{n}} 作為線性方程組 [ H f ( x n ) ] Δ x = − ∇ f ( x n ) {\displaystyle [\mathbf {H} f(x_{n})]\Delta x=-\nabla f(x_{n})} 的解. 這個求解過程中, 透過使用各種矩陣分解方法同近似求解方法, 求解速度可以大大提升. 然而, 這些矩陣分解方法或近似求解方法的使用需要滿足一定條件; 例如, Cholesky分解同共軛梯度法只有在 H f ( x ) {\displaystyle \mathbf {H} f(x)} 是正定矩陣時才適用. 這看似是一個限制, 但有時也能充當檢驗答案的工具; 例如, 在一個最小化問題 ( min  f ( x ) {\displaystyle {\text{min }}f(x)} ) 中, 求出一個 x ′ {\displaystyle x^{\prime }} 使得 ∇ f ( x ′ ) = 0 {\displaystyle \nabla f(x^{\prime })=0} 但 H f ( x ) {\displaystyle \mathbf {H} f(x)} 不是正定矩陣, 那麽 ( x ′ , f ( x ′ ) ) {\displaystyle (x^{\prime },f(x^{\prime }))} 只是 f ( x ) {\displaystyle f(x)} 的一個鞍點而非極小值點. 另一方面, 一個有約束的問題的求解過程可能會遇到當前解陷入一個鞍點的情況, 這時的Hessian矩陣是對稱不定的; 此時則要使用其他方法, 例如Cholesky分解的 L D L T {\displaystyle \mathbf {LDL} ^{\mathbf {T} }} 變形或共軛梯度法等的方法, 來疊代得出 x n + 1 {\displaystyle x_{n+1}} . 此外, 為規避求Hessian矩陣的繁瑣, 也存在多種擬牛頓法, 通過調整梯度以求出Hessian矩陣的近似. 如果Hessian矩陣 H f ( x ) {\displaystyle \mathbf {H} f(x)} 接近一個奇異矩陣, 則其逆矩陣會變得數值不穩定且疊代不會收斂. 此種情形下, 前人探索出了很多成功的方法來解決問題. 目標之一是通過引入修正矩陣 B n {\displaystyle B_{n}} 使得 H f ( x n ) := H f ( x n ) + B n {\displaystyle \mathbf {H} f(x_{n}):=\mathbf {H} f(x_{n})+B_{n}} 是對稱正定的. 其中一種方法是將 H f ( x n ) {\displaystyle \mathbf {H} f(x_{n})} 對角化, 選擇 B n {\displaystyle B_{n}} 使 H f ( x n ) + B n {\displaystyle \mathbf {H} f(x_{n})+B_{n}} 有相同的特徵向量, 但每一個 H f ( x n ) {\displaystyle \mathbf {H} f(x_{n})} 的負特徵值都被替換成 ϵ > 0. {\displaystyle \epsilon >0.} 一個應用於萊文貝格－馬夸特方法 (其中用到了近似的Hessian矩陣) 的方法是引入一個帶係數的單位矩陣 μ I {\displaystyle \mu \mathbf {I} } , 係數在每一步疊代中調整. 對於較大的 μ {\displaystyle \mu } 及較小的Hessian矩陣, 疊代將變得與以 μ − 1 {\displaystyle \mu ^{-1}} 為步長的最速下降法相似, 這將使得疊代收斂變慢, 但在Hessian矩陣不定或半定的情況下, 收斂更穩定. 擬牛頓法 最速下降法 高斯–牛頓算法 萊文貝格－馬夸特方法 置信域方法 最佳化 Nelder–Mead方法 Avriel, Mordecai. Nonlinear Programming: Analysis and Methods. Dover Publishing. 2003. ISBN 0-486-43227-0.  Bonnans, J. Frédéric; Gilbert, J. Charles; Lemaréchal, Claude; Sagastizábal, Claudia A. Numerical optimization: Theoretical and practical aspects. Universitext Second revised ed. of translation of 1997 French. Berlin: Springer-Verlag. 2006: xiv+490 [2017-08-07]. ISBN 3-540-35445-X. MR 2265882. doi:10.1007/978-3-540-35447-5. （原始内容存档于2013-07-19）.  Fletcher, Roger. Practical methods of optimization 2nd. New York: John Wiley & Sons. 1987. ISBN 978-0-471-91547-8.  Nocedal, Jorge; Wright, Stephen J. Numerical Optimization. Springer-Verlag. 1999. ISBN 0-387-98793-2.  Korenblum, Daniel. Newton-Raphson visualization (1D). Bl.ocks. Aug 29, 2015 [2017-08-07]. ffe9653768cb80dfc0da. （原始内容存档于2014-07-14）.