優化演算法知識點整理

2021-09-12 17:16:50 字數 3319 閱讀 1986

幾種優化演算法,梯度下降的種類 

考慮無約束優化問題 

minxf(x)

minxf(x)

梯度下降

梯度下降法是一種常用的一階優化方法,是求解無約束優化問題最簡單、最經典的方法之一。

其中,f(x)連續可微。若能構造乙個序列x0,x1,x2,...x0,x1,x2,...滿足

f(xt+1)根據泰勒一階展開:

f(x+δx)≈f(x)+δxt∇f(x)

f(x+δx)≈f(x)+δxt∇f(x)

要滿足f(x+δx)δx=−γ∇f(x)δx=−γ∇f(x)

選擇合適的步長,就能通過梯度下降法收斂到區域性最小

(1) 批梯度下降

原始的梯度下降演算法

(2) 隨機梯度下降

每次梯度計算只使用乙個樣本:

避免在類似樣本上計算梯度造成的冗餘計算

增加了跳出當前的區域性最小值的潛力

在逐漸縮小學習率的情況下,有與批梯度下降法類似的收斂速度

(3) 小批量梯度下降

每次梯度計算使用乙個小批量的樣本:

梯度計算比單樣本更加穩定

可以很好的利用現成的高度優化的矩陣運算工具

. 2. 牛頓法

若f(x)二階連續可微,則f(x)的二階泰勒展開:

f(x)=f(x(k))+gkt(x−x(k))+12(x−x(k))th(x(k))(x−x(k))

f(x)=f(x(k))+gkt(x−x(k))+12(x−x(k))th(x(k))(x−x(k))

其中gk=g(x(k))=∇f(x(k))gk=g(x(k))=∇f(x(k))

上式表示f(x)的梯度向量在點x(k)x(k)處的值

定義海塞矩陣

h(x)=[∂2f∂xi∂xj]n×n

h(x)=[∂2f∂xi∂xj]n×n

h(x(k))h(x(k))為海塞矩陣在x(k)x(k)處的值

牛頓法利用極小點的必要條件∇f(x)=0∇f(x)=0,每次迭代中從點x(k)x(k)開始,求目標函式的極小點,作為第k+1次迭代值x(k+1)x(k+1)。

假設x(k+1)x(k+1)滿足∇f(x(k+1))=0∇f(x(k+1))=0

對f(x)的二階泰勒展開求一階偏導數

∇f(x)=gk+h(x(k))(x−x(k))

∇f(x)=gk+h(x(k))(x−x(k))

令上式為0即可求x(k+1)x(k+1)

x(k+1)=−x(k)−h(x(k))−1gk

x(k+1)=−x(k)−h(x(k))−1gk

牛頓法的優缺點總結:

優點:二階收斂,收斂速度快;

缺點:牛頓法是一種迭代演算法,每一步都需要求解目標函式的hessian矩陣的逆矩陣,計算比較複雜;

使用小批量的情形下,牛頓法對於二階導數的估計噪音太大

在目標函式非凸時,牛頓法更容易受到暗點甚至最大值點的吸引 

.3.擬牛頓 

在牛頓迭代中,需要計算海塞矩陣的逆矩陣h−1h−1,這一計算比較複雜,考慮使用乙個n階的矩陣gk=g(x(k))gk=g(x(k))來近似代替h(x(k))−1h(x(k))−1。這就是擬牛頓法的基本想法。 

- 擬牛頓條件 

由海塞矩陣h_k滿足的條件: 

∇f(x)=gk+h(x(k))(x−x(k))

∇f(x)=gk+h(x(k))(x−x(k))

令x=x(k+1)x=x(k+1),即 

gk+1=gk+h(x(k))(x(k+1)−x(k))

gk+1=gk+h(x(k))(x(k+1)−x(k))

記yk=gk+1−gk,δk=(x(k+1)−x(k))yk=gk+1−gk,δk=(x(k+1)−x(k)),則擬牛頓條件表示為: 

yk=hkδkyk=hkδk 或者hk−1yk=δkhk−1yk=δk 

用乙個n階的矩陣gk=g(x(k))gk=g(x(k))來近似代替 h(x(k))−1h(x(k))−1,則gkgk也滿足擬牛頓條件 

gk+1yk=δk

gk+1yk=δk

每次更新:gk+1=gk+δgkgk+1=gk+δgk 

(1) dfp演算法 

dfp演算法選擇用gk+1gk+1的方法是,假設每一步迭代中矩陣gk+1gk+1是由gkgk加上兩個附加項構成的,即 

gk+1=gk+pk+qk

gk+1=gk+pk+qk

其中pk,qkpk,qk是待定矩陣,兩邊同時右乘ykyk 

gk+1yk=gkyk+pkyk+qkyk

gk+1yk=gkyk+pkyk+qkyk

為使gk+1gk+1滿足擬牛頓條件,可使pk,qkpk,qk滿足: 

pkyk=δkqkyk=−gkyk

pkyk=δkqkyk=−gkyk

取: pk=δkδktδktykqk=−gkykyktgkyktgkyk

pk=δkδktδktykqk=−gkykyktgkyktgkyk

(2)bfgs演算法

最流行的擬牛頓演算法,考慮使用b_k逼近海塞矩陣h,這時,相應的擬牛頓條件是

bk+1δk=ykbk+1δk=yk

首先令 

bk+1=bk+pk+qk bk+1δk=bkδk+pkδk+qkδk

bk+1=bk+pk+qk bk+1δk=bkδk+pkδk+qkδk

考慮使pkpk和qkqk滿足: 

pkδk=yk qkδk=−bkδk

pkδk=yk qkδk=−bkδk

找出合適條件的pkpk和qkqk,得到bfgs演算法矩陣bk+1bk+1的迭代公式: 

bk+1=bk+ykyktyktδk−bkδkδktbkδkkbkδk

bk+1=bk+ykyktyktδk−bkδkδktbkδkkbkδk

4 三種求解無約束優化問題的方法的比較

梯度下降法並不是下降最快的方向,它只是目標函式在當前的點的切面上下降最快的方向;牛頓法下降的方向一般被認為是下降最快的方向。

梯度下降不一定能夠找到全域性最優解,也有可能只是乙個區域性最優解。如果損失函式是凸函式,梯度下降法得到的解就一定是全域性最優解。

從收斂速度上看 ,牛頓法是二階收斂,梯度下降是一階收斂,前者牛頓法收斂速度更快。但牛頓法仍然是區域性演算法,只是在區域性上看的更細緻,梯度法僅考慮方向,牛頓法不但考慮了方向還兼顧了步子的大小,其對步長的估計使用的是二階逼近。

根據wiki上的解釋,從幾何上說,牛頓法就是用乙個二次曲面去擬合你當前所處位置的區域性曲面,而梯度下降法是用乙個平面去擬合當前的區域性曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。

文字內容**大萍的部落格

知識點整理

一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...

知識點整理

一 標準庫容器和演算法 1.順序容器 與前面類似 2.關聯容器 map和multimap 元素包含key 鍵 和值 value 兩部分 按照鍵對元素排序 map不允許重複元素出現,但multimap可以 set和multliset 是包含已排序物件的關聯容器 只是單純的鍵的集合 set不允許重複鍵出...

知識點整理

一 狀態控制碼 code,control flag 標誌位欄位 u a p r s f 佔6位元。各 位元的含義如下 ack 確認位元 acknowledge 只有當ack 1時確認號字段才有效,代表這個封包為確認封包。當ack 0時,確認號無效。psh push function 若為1時,代表要...