一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

模型優(yōu)化算法

 Clay*more 2022-03-23

一、 模型的優(yōu)化算法

原文鏈接

https://blog.csdn.net/blankit1/article/details/90412382

1.1 基于梯度下降的方法

1.1.1樣本量

  • 批量梯度下降BGD(Batch Gradient Dencent)

  • 隨機(jī)梯度下降SGD(Stochastic Gradient Descent)

  • mini-batch GD

1.1.2. 學(xué)習(xí)率的更新方法

  • 動(dòng)量法momentum(引入了動(dòng)量項(xiàng))

  • Nesterov accelerated gradient(NAG,預(yù)測(cè)下一時(shí)刻的位置)


二階方法,調(diào)整學(xué)習(xí)率

  • Adagrad(每個(gè)參數(shù)單獨(dú)調(diào)節(jié))

  • Adelta(防止Adagrad中的學(xué)習(xí)率一直減小)

  • RMSprop(Adelta實(shí)例化)

  • Adam(梯度、梯度方的歷史加權(quán)平均值)

  • Adamax(Adam的二范數(shù)變?yōu)闊o窮范數(shù),更穩(wěn)定)
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述
    在這里插入圖片描述

1.2. 牛頓法系列

1.2.1. 牛頓法
1.2.2. 擬牛頓法

  • DFP

  • BGFS

  • L-BGFS(待完成)

  • Broyden


二. 具體算法

2.1.1批量梯度下降

根據(jù)所有樣本的損失,更新模型參數(shù)。

以邏輯斯蒂回歸模型為例,訓(xùn)練集有m個(gè)樣本 X ( x 1 , x 2 , . . . , x m ) X({x_{1}},{x_{2}},...,{x_{m}}) X(x1,x2,...,xm),誤差函數(shù)是交叉熵誤差函數(shù),批量梯度下降法的計(jì)算過程如下:

  1. 對(duì)于每個(gè)輸入 x x x,計(jì)算模型輸出 y ^ \hat{y} y^. y ^ = σ ( w T x + b ) \hat{y} = \sigma (w^{T}x+b) y^=σ(wTx+b) .其中 σ ( z ) = 1 1 + e ? z \sigma (z) = \frac{1}{1+e^{-z}} σ(z)=1+e?z1.(注:初始化 w , b w,b w,b)

  2. 計(jì)算 m m m個(gè)樣本的交叉熵?fù)p失,取平均值,得到關(guān)于 w , b w,b w,b的損失值
    J ( w , b ) = 1 m ∑ i = 1 m ( L ( y ^ i ) , y i ) = ? 1 m ∑ i = 1 m ( y i l o g y ^ i + ( 1 ? y i ) l o g ( 1 ? y ^ i ) ) J(w,b) = \frac{1}{m} \sum_{i=1}^{m}(L(\hat{y}_{i}),y_{i}) = -\frac{1}{m}\sum_{i=1}^{m}(y_{i}log\hat{y}_{i}+(1-y_{i})log(1-\hat{y}_{i})) J(w,b)=m1i=1m(L(y^i),yi)=?m1i=1m(yilogy^i+(1?yi)log(1?y^i))

  3. 計(jì)算 J ( w , b ) J(w,b) J(w,b)關(guān)于 w , b w,b w,b的偏導(dǎo) d w = ? J ( w , b ) ? w dw = \frac{\partial J(w,b)}{\partial w} dw=?w?J(w,b), d b = ? J ( w , b ) ? b db = \frac{\partial J(w,b)}{\partial b} db=?b?J(w,b)

  4. 更新 w , b w,b w,b w = w ? l r ? d w , b = b ? l r ? d b w = w - lr * dw, b = b - lr*db w=w?lr?dw,b=b?lr?db, l r lr lr是學(xué)習(xí)率.

  5. 重復(fù)步驟1~4,達(dá)到終止條件結(jié)束算法。

2.1.2 隨機(jī)梯度下降

單個(gè)樣本輸入后,計(jì)算得到損失后,更新模型參數(shù)。

以邏輯斯蒂回歸模型為例,訓(xùn)練集有m個(gè)樣本 X ( x 1 , x 2 , . . . , x m ) X({x_{1}},{x_{2}},...,{x_{m}}) X(x1,x2,...,xm),誤差函數(shù)是交叉熵誤差函數(shù),隨機(jī)梯度下降法的計(jì)算過程如下:

  1. 對(duì)于任意一個(gè)輸入 x i x_{i} xi,計(jì)算模型輸出 y i ^ \hat{y_{i}} yi^. y i ^ = σ ( w T x i + b ) \hat{y_{i}} = \sigma (w^{T}x_{i}+b) yi^=σ(wTxi+b) .其中 σ ( z ) = 1 1 + e ? z \sigma (z) = \frac{1}{1+e^{-z}} σ(z)=1+e?z1.(注:初始化 w , b w,b w,b)

  2. 計(jì)算輸入 x i x_{i} xi的交叉熵?fù)p失 J i ( w , b ) = L ( y ^ i , y i ) = y i l o g y ^ i + ( 1 ? y i ) l o g ( 1 ? y ^ i ) J_{i}(w,b) = L(\hat{y}_{i},y_{i})= y_{i}log\hat{y}_{i}+(1-y_{i})log(1-\hat{y}_{i}) Ji(w,b)=L(y^i,yi)=yilogy^i+(1?yi)log(1?y^i)

  3. 計(jì)算 J i ( w , b ) J_{i}(w,b) Ji(w,b)關(guān)于 w , b w,b w,b的偏導(dǎo) d w = ? J i ( w , b ) ? w dw = \frac{\partial J_{i}(w,b)}{\partial w} dw=?w?Ji(w,b), d b = ? J i ( w , b ) ? b db = \frac{\partial J_{i}(w,b)}{\partial b} db=?b?Ji(w,b)

  4. 更新 w , b w,b w,b w = w ? l r ? d w , b = b ? l r ? d b w = w - lr * dw, b = b - lr*db w=w?lr?dw,b=b?lr?db, l r lr lr是學(xué)習(xí)率.

  5. 重復(fù)步驟1~4,達(dá)到終止條件結(jié)束算法。

2.1.3 mini-Batch梯度下降

根據(jù)小批量n個(gè)樣本的損失,更新模型參數(shù)。

以邏輯斯蒂回歸模型為例,訓(xùn)練集有m個(gè)樣本 X ( x 1 , x 2 , . . . , x m ) X({x_{1}},{x_{2}},...,{x_{m}}) X(x1,x2,...,xm),誤差函數(shù)是交叉熵誤差函數(shù),批量梯度下降法的計(jì)算過程如下:

  1. 對(duì)于小批量的n個(gè)樣本中的每個(gè)輸入 x x x,計(jì)算模型輸出 y ^ \hat{y} y^. y ^ = σ ( w T x + b ) \hat{y} = \sigma (w^{T}x+b) y^=σ(wTx+b) .其中 σ ( z ) = 1 1 + e ? z \sigma (z) = \frac{1}{1+e^{-z}} σ(z)=1+e?z1.(注:初始化 w , b w,b w,b)

  2. 計(jì)算 n n n個(gè)樣本的交叉熵?fù)p失,取平均值,得到關(guān)于 w , b w,b w,b的損失值
    J ( w , b ) = 1 n ∑ i = 1 n ( L ( y ^ i ) , y i ) = ? 1 n ∑ i = 1 n y i l o g y ^ i + ( 1 ? y i ) l o g ( 1 ? y ^ i ) J(w,b) = \frac{1}{n} \sum_{i=1}^{n}(L(\hat{y}_{i}),y_{i})\\ = -\frac{1}{n}\sum_{i=1}^{n}y_{i}log\hat{y}_{i}+(1-y_{i})log(1-\hat{y}_{i}) J(w,b)=n1i=1n(L(y^i),yi)=?n1i=1nyilogy^i+(1?yi)log(1?y^i)

  3. 計(jì)算 J ( w , b ) J(w,b) J(w,b)關(guān)于 w , b w,b w,b的偏導(dǎo) d w = ? J ( w , b ) ? w dw = \frac{\partial J(w,b)}{\partial w} dw=?w?J(w,b), d b = ? J ( w , b ) ? b db = \frac{\partial J(w,b)}{\partial b} db=?b?J(w,b)

  4. 更新 w , b w,b w,b w = w ? l r ? d w , b = b ? l r ? d b w = w - lr * dw, b = b - lr*db w=w?lr?dw,b=b?lr?db, l r lr lr是學(xué)習(xí)率.

  5. 重復(fù)步驟1~4,達(dá)到終止條件結(jié)束算法。

2.2 梯度更新算法1

2.2.1 動(dòng)量法

問題背景

下圖所示,紅點(diǎn)是最小值點(diǎn)。為了到達(dá)紅點(diǎn),如果使用較大的學(xué)習(xí)率,則會(huì)出現(xiàn)紫線畫出的發(fā)散現(xiàn)象,如果使用較小的學(xué)習(xí)率,如藍(lán)線所示,收斂的速度比較慢。因此,希望有種學(xué)習(xí)方法,能在縱軸上減小擺動(dòng),在橫軸上,希望加快學(xué)習(xí)。這里就需要每次橫軸和縱軸的更新量不同,如果使用 w = w ? l r ? d w w = w - lr * dw w=w?lr?dw,則達(dá)不到這種效果。

方法引入

動(dòng)量法在原始權(quán)值梯度 d w dw dw的基礎(chǔ)上,增加了上一時(shí)刻的更新量 υ t ? 1 \upsilon _{t-1} υt?1
υ t = γ υ t ? 1 + η ▽ θ J ( θ ) \upsilon _{t} = \gamma \upsilon _{t-1} + \eta \bigtriangledown _{\theta }J(\theta ) υt=γυt?1+ηθJ(θ)
θ = θ ? υ t \theta =\theta - \upsilon _{t} θ=θ?υt

在這里插入圖片描述

2.2.2 Nesterov 梯度加速法(Nesterov Accelerated Gradient)

問題背景

尋找最小值的過程,就像小球下山,小球在下山的過程中,速度會(huì)一直增加,這樣會(huì)沖過最低點(diǎn),然后又沖下來。我們希望小球到山底附近時(shí),會(huì)自動(dòng)減速,停在最小值處。

方法引入

θ ? υ t \theta - \upsilon _{t} θ?υt是下一時(shí)刻小球所在位置的近似估計(jì)。通過計(jì)算函數(shù)關(guān)于下一時(shí)刻的梯度表示參數(shù)的梯度方向。
υ t = γ υ t ? 1 + η ▽ θ J ( θ ? υ t ) \upsilon _{t} = \gamma \upsilon _{t-1} + \eta \bigtriangledown _{\theta }J(\theta -\upsilon _{t} ) υt=γυt?1+ηθJ(θ?υt)
θ = θ ? υ t \theta =\theta - \upsilon _{t} θ=θ?υt

在這里插入圖片描述
短的藍(lán)色 當(dāng)前梯度 棕色和長的藍(lán)色 更新的累積梯度 綠色 最終的更新值

這種更新方法可以阻止更新過快而越過最小值點(diǎn)而使響應(yīng)速度提高。

2.2.3 Adagrad

問題背景

我們能夠根據(jù)誤差函數(shù)的斜率調(diào)整更新量并加速SGD,我們還希望根據(jù)每個(gè)參數(shù)的重要性來調(diào)整每個(gè)參數(shù)的更新量

Adagrad 是一種基于梯度的優(yōu)化算法。它調(diào)整參數(shù)的學(xué)習(xí)率的規(guī)則: larger updates for infrequent and smaller updates for frequent parameters(怎么翻呢?)
SGD的更新規(guī)則如下:

g t , i = ▽ θ t J ( θ t , i ) g_{t,i} = \bigtriangledown _{\theta _{t}}J(\theta _{t,i}) gt,i=θtJ(θt,i)
θ t + 1 , i = θ t , i ? η ? g t , i \theta_{t+1,i} = \theta _{t,i} - \eta \cdot g_{t,i} θt+1,i=θt,i?η?gt,i
G t ∈ R d × d G_{t}\in R^{d\times d} GtRd×d是對(duì)角陣,對(duì)角上的元素 ( i , i ) (i,i) (i,i)是累積到 t t t時(shí)刻的梯度的平方。
其中 g t , i g_{t,i} gt,i表示參數(shù) θ i \theta _{i} θi在時(shí)間 t t t時(shí)的梯度。
Adagrad算法每次單獨(dú)更新每個(gè)參數(shù):
θ t + 1 , i = θ t , i ? η G t , i i + ε ? g t , i \theta_{t+1,i} = \theta _{t,i} - \frac{\eta}{\sqrt {G_{t,ii}+\varepsilon} } \cdot g_{t,i} θt+1,i=θt,i?Gt,ii+ε η?gt,i
其中 ε \varepsilon ε是平滑項(xiàng),防止除數(shù)為0.

向量化后:
在這里插入圖片描述

Adagrad的主要缺點(diǎn)是,訓(xùn)練過程中,分母中的梯度平方項(xiàng)一直在增加,這會(huì)使學(xué)習(xí)率越來越小,從而導(dǎo)致模型無法繼續(xù)學(xué)習(xí)。

2.2.4 Adadelta

當(dāng)前時(shí)刻參數(shù)梯度平方的均值
E [ g 2 ] t = γ E [ g 2 ] t ? 1 + ( 1 ? γ ) g t 2 E[g^{2}]_{t} = \gamma E[g^{2}]_{t-1} +(1-\gamma)g_{t}^{2} E[g2]t=γE[g2]t?1+(1?γ)gt2
Adagrad參數(shù)的更新量
在這里插入圖片描述
用 E [ g 2 ] t E[g^{2}]_{t} E[g2]t代替 G t G_{t} Gt,得
Δ θ t = ? η E [ g 2 ] t + ε g t \Delta \theta_{t} = - \frac{\eta }{\sqrt{E[g^{2}]_{t}+\varepsilon }} g_{t} Δθt=?E[g2]t+ε ηgt
分母是梯度RMSE的校正,用RMSE代替后:
Δ θ t = ? η R M S E ( [ g ] t ) g t \Delta \theta_{t} = - \frac{\eta }{RMSE([g]_{t})} g_{t} Δθt=?RMSE([g]t)ηgt
完整的Adadelta算法:
E [ g 2 ] t = γ E [ g 2 ] t ? 1 + ( 1 ? γ ) g t 2 ( 1 ) E[g^{2}]_{t} = \gamma E[g^{2}]_{t-1} +(1-\gamma)g_{t}^{2} \text(1) E[g2]t=γE[g2]t?1+(1?γ)gt2(1)
Δ θ t = ? η R M S E ( [ g ] t ) g t ( 2 ) \Delta \theta_{t} = - \frac{\eta }{RMSE([g]_{t})} g_{t} \text(2) Δθt=?RMSE([g]t)ηgt(2)

  • Adadelta 與 Adagrad相比,在分母上做了處理,避免學(xué)習(xí)率一直減小。

2.2.5 RMSprop

RMSprop是Adadelta的實(shí)例化, γ = 0.9 \gamma =0.9 γ=0.9.
E [ g 2 ] t = 0.9 E [ g 2 ] t ? 1 + 0.1 g t 2 ( 1 ) E[g^{2}]_{t} = 0.9 E[g^{2}]_{t-1} +0.1g_{t}^{2} \text(1) E[g2]t=0.9E[g2]t?1+0.1gt2(1)
Δ θ t = ? η E [ g 2 ] t + ε g t \Delta \theta_{t} = - \frac{\eta }{\sqrt{E[g^{2}]_{t}+\varepsilon }} g_{t} Δθt=?E[g2]t+ε ηgt

2.2.6 Adam( Adaptive Moment Estimation)

Adam,Adaptive Moment Estimation,自適應(yīng)動(dòng)量評(píng)估。Adam除了像Adadelta和RMSprop那樣保存歷史指數(shù)衰梯度方的均值,還保存了歷史指數(shù)衰減動(dòng)量的均值
m t = β 1 m t ? 1 + ( 1 ? β 1 ) g t m_{t}=\beta _{1}m_{t-1} + (1-\beta _{1})g_{t} mt=β1mt?1+(1?β1)gt
ν t = β 1 ν t ? 1 + ( 1 ? β 2 ) g t 2 \nu _{t}=\beta _{1}\nu_{t-1} + (1-\beta _{2})g^{2}_{t} νt=β1νt?1+(1?β2)gt2
m t , ν t m_{t},\nu _{t} mt,νt初始化為0,在初始階段這二者趨于0,為了解決這個(gè)問題,引入了偏差修正: m ^ t = m t 1 ? β 1 \hat m_{t} = \frac{m_{t}}{1-\beta _{1}} m^t=1?β1mt, ν t = ν t 1 ? β 2 \nu _{t} = \frac{\nu_{t}}{1-\beta _{2}} νt=1?β2νt
Adam的參數(shù)更新規(guī)則:
Δ θ t = ? η ν ^ t + ε m ^ t \Delta \theta_{t} = - \frac{\eta }{\sqrt{\hat \nu_{t}+\varepsilon }} \hat m_{t} Δθt=?ν^t+ε ηm^t

2.2.7 AdaMax

AdaMax將Adam中的分母的計(jì)算推廣到了 ∞ \infty ∞范數(shù)
在這里插入圖片描述
Adamax更新規(guī)則
在這里插入圖片描述

2.3.1 牛頓法

為了便于理解用牛頓法優(yōu)化目標(biāo)函數(shù),首先介紹單個(gè)變量牛頓法,用于數(shù)值分析中求近似解。具體參考,得到的近似解的推導(dǎo)公式為:
x n + 1 = x n ? f ( x n ) f ′ ( x n ) x_{n+1} = x_{n} - \frac{f(x^{n})} {f^{'}(x^{n})} xn+1=xn?f(xn)f(xn)

引入 :對(duì)于多元變量,在某點(diǎn)處的導(dǎo)數(shù)變成了海塞矩陣(Hesse matrix).海塞矩陣是一個(gè)多元函數(shù)二階偏導(dǎo)構(gòu)成的矩陣。 f ( x ) f(x) f(x)具有二階連續(xù)偏導(dǎo), f ( x ) f(x) f(x)的海塞矩陣 H ( x ) H(x) H(x)為
H ( x ) = [ ? 2 f ? x i ? x j ] n × n H(x) = [\frac{\partial ^{2}f}{\partial x_{i}\partial x_{j}}]_{n\times n} H(x)=[?xi?xj?2f]n×n

考慮無約束的最優(yōu)化問題
m i n x ∈ R n f ( x ) \underset{x\in R^{n}}{min}f(x) x∈Rnminf(x)

  • 思考
    1. 寫出 f ( x ) f(x) f(x)在 x k x_{k} xk處的泰勒展式 f ( x ) = f ( x k ) + g k T ( x ? x k ) + 1 2 ( x ? x k ) H ( x k ) ( x ? x k ) T + . . . f(x)=f(x_{k})+g_{k}^{T}(x-x_{k})+\frac{1}{2}(x-x_{k})H(x_{k})(x-x_{k})^{T}+... f(x)=f(xk)+gkT(x?xk)+21(x?xk)H(xk)(x?xk)T+...
    2. 求 f ( x ) f(x) f(x)的極值的必要條件是 f ′ ( x ) = 0 f'(x)=0 f(x)=0, g k T + H ( x k ) ( x ? x k ) = 0 g_{k}^{T}+ H(x_{k})(x-x_{k})=0 gkT+H(xk)(x?xk)=0,
    3. 牛頓法求解g(x)=0

以下源自2
在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

2.3.2 擬牛頓法

計(jì)算 H k ? 1 H^{-1}_{k} Hk?1比較麻煩,在這里插入圖片描述在這里插入圖片描述
(B.12)或(B.13)是擬牛頓的條件
在這里插入圖片描述

2.3.2.1 擬牛頓法-DFP(Davidon-Fletcher-Powell)算法

DFP算法用 G k G_{k} Gk來近似 H k ? 1 H^{-1}_{k} Hk?1
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2.3.2.2 擬牛頓法-BFGS(Broyden-Fletcher-Goldfarb-Shanno)算法

BFGS算法用 B k B_{k} Bk來近似 H k H_{k} Hk
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

2.3.2.3 ? * ? 擬牛頓法-Broyden類算法

在這里插入圖片描述
在這里插入圖片描述

三、Pytorch中的優(yōu)化器

Pytorch中的優(yōu)化器有以下一些:

  1. Adadelta

  2. Adagrad

  3. Adam

  4. SparseAdam

  5. Adamax

  6. ASGD

  7. LBFGS

  8. RMSprop

  9. Rprop

  10. SGD

一些解釋參考

關(guān)于Adagrad算法,連個(gè)新詞:激勵(lì)收斂和懲罰收斂
在這里插入圖片描述
安利編輯公式的鏈接:
在線公式編輯
數(shù)學(xué)公式輸入方法


  1. Ruder S . An overview of gradient descent optimization algorithms[J]. 2016. ??

  2. 李航. 統(tǒng)計(jì)學(xué)習(xí)方法[M]. 清華大學(xué)出版社, 2012. ??

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    久久亚洲精品中文字幕| 日韩人妻免费视频一专区 | 女人精品内射国产99| 亚洲黄片在线免费小视频| 东京热男人的天堂久久综合| 午夜精品国产一区在线观看| 天堂av一区一区一区| 九九热精品视频免费在线播放| 国产伦精品一区二区三区高清版| 国产中文字幕一二三区| 亚洲国产精品久久网午夜| 亚洲国产成人av毛片国产| 少妇在线一区二区三区| 亚洲国产一级片在线观看| 亚洲欧美日韩国产综合在线| 日本理论片午夜在线观看| 午夜国产成人福利视频| 日韩欧美在线看一卡一卡| 99久久精品久久免费| 久久女同精品一区二区| 日韩偷拍精品一区二区三区| 欧美一级片日韩一级片| 国产午夜在线精品视频| 亚洲一区二区欧美激情| 伊人久久青草地婷婷综合| 国产又粗又长又大的视频| 亚洲午夜精品视频在线| 成年人黄片大全在线观看| 日本午夜免费观看视频| 国产亚洲视频香蕉一区| 欧洲日本亚洲一区二区| 日本人妻精品有码字幕| 黄色片一区二区在线观看| 人妻少妇系列中文字幕| 亚洲综合精品天堂夜夜| 日韩精品中文在线观看| 成人精品视频在线观看不卡| 日韩夫妻午夜性生活视频| 欧洲一级片一区二区三区| 欧美区一区二在线播放| 激情综合网俺也狠狠地|