Optimization
為什麼二階導數在凸優化中有用?
我想這是一個基本問題,它與梯度本身的方向有關,但我正在尋找二階方法(例如BFGS)比簡單梯度下降更有效的示例。
這是解釋梯度下降和牛頓方法的通用框架,這可能是將差異視為@Sycorax答案的補充的有用方法。(BFGS近似牛頓法,這裡不特別講了。)
我們正在最小化函數,但我們不知道如何直接做到這一點。因此,相反,我們在當前點進行局部近似並將其最小化。
牛頓法使用二階泰勒展開近似函數:
在哪裡表示梯度在這一點上和黑森州在. 然後它會執行並重複。 梯度下降,只有梯度而不是 Hessian,不能只進行一階近似並將其最小化,因為正如@Hurkyl 指出的那樣,它沒有最小值。相反,我們定義了一個步長並邁向. 但請注意
因此梯度下降最小化了一個函數
因此梯度下降有點像使用牛頓法,但我們不採用二階泰勒展開式,而是假設 Hessian 是. 這通常是一個更差的近似值比,因此梯度下降通常比牛頓方法採取更糟糕的步驟。當然,這可以通過梯度下降的每一步計算比牛頓方法的每一步便宜得多來抵消。哪個更好完全取決於問題的性質、您的計算資源和您的準確性要求。
查看@Sycorax最小化二次方 的示例
有一段時間,值得注意的是,這種觀點有助於理解這兩種方法。 使用牛頓法,我們將有以便它在一個步驟中以準確的答案(直至浮點精度問題)終止。
另一方面,梯度下降使用
其切平面在是正確的,但其曲率是完全錯誤的,並且當變化很大。