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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

AI有道

一個有情懷的公眾號

之前,我發(fā)過一篇文章,通俗地解釋了梯度下降算法的數(shù)學(xué)原理和推導(dǎo)過程,推薦一看。鏈接如下:

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

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

1

牛頓法求解方程的根

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

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

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

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

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

經(jīng)過一定次數(shù)的有效迭代后,一般都能保證在方程的根處收斂。下面給出整個迭代收斂過程的動態(tài)演示。

2

牛頓法凸優(yōu)化

上一部分介紹牛頓法如何求解方程的根,這一特性可以應(yīng)用在凸函數(shù)的優(yōu)化問題上。

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

現(xiàn)在的目標(biāo)是計算 f'(x) = 0 對應(yīng)的 x,即 f'(x) = 0 的根。轉(zhuǎn)化為求根問題,就可以利用上一節(jié)的牛頓法了。

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

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

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

通過迭代公式,就能不斷地找到 f'(x) = 0 的近似根,從而也就實現(xiàn)了損失函數(shù)最小化的優(yōu)化目標(biāo)。

3

梯度下降 VS 牛頓法

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

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

梯度下降:一階優(yōu)化

牛頓法:二階優(yōu)化

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

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

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

Jacobian 矩陣

Hessian 矩陣

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

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

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

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

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

推薦閱讀:

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

【2】簡單的交叉熵?fù)p失函數(shù),你真的懂了嗎?

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

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。