日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

划重点!十分钟掌握牛顿法凸优化

發布時間:2025/3/15 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 划重点!十分钟掌握牛顿法凸优化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

AI有道

一個有情懷的公眾號

之前,我發過一篇文章,通俗地解釋了梯度下降算法的數學原理和推導過程,推薦一看。鏈接如下:

簡單的梯度下降算法,你真的懂了嗎?

我們知道,梯度下降算法是利用梯度進行一階優化,而今天我介紹的牛頓優化算法采用的是二階優化。本文將重點講解牛頓法的基本概念和推導過程,并將梯度下降與牛頓法做個比較。

1

牛頓法求解方程的根

有時候,在方程比較復雜的情況下,使用一般方法求解它的根并不容易。牛頓法通過迭代的方式和不斷逼近的思想,可以近似求得方程較為準確的根。

牛頓法求根的核心思想是泰勒一階展開。例如對于方程 f(x) = 0,我們在任意一點 x0 處,進行一階泰勒展開:

令 f(x) = 0,帶入上式,即可得到:

注意,這里使用了近似,得到的 x 并不是方程的根,只是近似解。但是,x 比 x0 更接近于方程的根。效果如下圖所示:

然后,利用迭代方法求解,以 x 為 x0,求解下一個距離方程的根更近的位置。迭代公式可以寫成:

經過一定次數的有效迭代后,一般都能保證在方程的根處收斂。下面給出整個迭代收斂過程的動態演示。

2

牛頓法凸優化

上一部分介紹牛頓法如何求解方程的根,這一特性可以應用在凸函數的優化問題上。

機器學習、深度學習中,損失函數的優化問題一般是基于一階導數梯度下降的。現在,從另一個角度來看,想要讓損失函數最小化,這其實是一個最值問題,對應函數的一階導數 f'(x) = 0。也就是說,如果我們找到了能讓 f'(x) = 0 的點 x,損失函數取得最小值,也就實現了模型優化目標。

現在的目標是計算 f'(x) = 0 對應的 x,即 f'(x) = 0 的根。轉化為求根問題,就可以利用上一節的牛頓法了。

與上一節有所不同,首先,對 f(x) 在 x0 處進行二階泰勒展開:

上式成立的條件是 f(x) 近似等于 f(x0)。令 f(x) = f(x0),并對 (x - x0) 求導,可得:

同樣,雖然 x 并不是最優解點,但是 x 比 x0 更接近?f'(x) = 0 的根。這樣,就能得到最優化的迭代公式:

通過迭代公式,就能不斷地找到 f'(x) = 0 的近似根,從而也就實現了損失函數最小化的優化目標。

3

梯度下降 VS 牛頓法

現在,分別寫出梯度下降和牛頓法的更新公式:

梯度下降算法是將函數在 xn 位置進行一次函數近似,也就是一條直線。計算梯度,從而決定下一步優化的方向是梯度的反方向。而牛頓法是將函數在 xn 位置進行二階函數近似,也就是二次曲線。計算梯度和二階導數,從而決定下一步的優化方向。一階優化和二階優化的示意圖如下所示:

梯度下降:一階優化

牛頓法:二階優化

以上所說的是梯度下降和牛頓法的優化方式差異。那么誰的優化效果更好呢?

首先,我們來看一下牛頓法的優點。第一,牛頓法的迭代更新公式中沒有參數學習因子,也就不需要通過交叉驗證選擇合適的學習因子了。第二,牛頓法被認為可以利用到曲線本身的信息, 比梯度下降法更容易收斂(迭代更少次數)。如下圖是一個最小化一個目標方程的例子, 紅色曲線是利用牛頓法迭代求解, 綠色曲線是利用梯度下降法求解。顯然,牛頓法最優化速度更快一些。

然后,我們再來看一下牛頓法的缺點。我們注意到牛頓法迭代公式中除了需要求解一階導數之外,還要計算二階導數。從矩陣的角度來說,一階導數和二階導數分別對應雅可比矩陣(Jacobian matrix)和海森矩陣(Hessian matrix)。

Jacobian 矩陣

Hessian 矩陣

牛頓法不僅需要計算?Hessian 矩陣,而且需要計算?Hessian 矩陣的逆。當數據量比較少的時候,運算速度不會受到大的影響。但是,當數據量很大,特別在深度神經網絡中,計算?Hessian 矩陣和它的逆矩陣是非常耗時的。從整體效果來看,牛頓法優化速度沒有梯度下降算法那么快。所以,目前神經網絡損失函數的優化策略大多都是基于梯度下降。

值得一提的是,針對牛頓法的缺點,目前已經有一些改進算法。這類改進算法統稱擬牛頓算法。比較有代表性的是 BFGS 和 L-BFGS。

BFGS 算法使用近似的方法來計算?Hessian 矩陣的逆,有效地提高了運算速度。但是仍然需要將整個?Hessian 近似逆矩陣存儲起來,空間成本較大。

L-BFGS 算法是對BFGS 算法的改進,不需要存儲 Hessian 近似逆矩陣, 而是直接通過迭代算法獲取本輪的搜索方向,空間成本大大降低。

總的來說,基于梯度下降的優化算法,在實際應用中更加廣泛一些,例如 RMSprop、Adam等。但是,牛頓法的改進算法,例如 BFGS、L-BFGS 也有其各自的特點,也有很強的實用性。

推薦閱讀:

【1】通俗易懂!機器學習中 L1 和 L2 正則化的直觀解釋

【2】簡單的交叉熵損失函數,你真的懂了嗎?

【3】三分鐘帶你對 Softmax 劃重點

【4】一看就懂的感知機算法PLA

【5】通俗解釋優化的線性感知機算法:Pocket PLA

總結

以上是生活随笔為你收集整理的划重点!十分钟掌握牛顿法凸优化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。