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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

模型优化算法

發(fā)布時間:2025/1/21 编程问答 95 豆豆
生活随笔 收集整理的這篇文章主要介紹了 模型优化算法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

1.1 基于梯度下降的方法

1.1.1樣本量

  • 批量梯度下降BGD(Batch Gradient Dencent)
  • 隨機梯度下降SGD(Stochastic Gradient Descent)
  • mini-batch GD

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

  • 動量法momentum(引入了動量項)
  • Nesterov accelerated gradient(NAG,預(yù)測下一時刻的位置)

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

  • Adagrad(每個參數(shù)單獨調(diào)節(jié))
  • Adelta(防止Adagrad中的學(xué)習(xí)率一直減小)
  • RMSprop(Adelta實例化)
  • 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個樣本X(x1,x2,...,xm)X({x_{1}},{x_{2}},...,{x_{m}})X(x1?,x2?,...,xm?),誤差函數(shù)是交叉熵誤差函數(shù),批量梯度下降法的計算過程如下:

  • 對于每個輸入xxx,計算模型輸出y^\hat{y}y^?. y^=σ(wTx+b)\hat{y} = \sigma (w^{T}x+b)y^?=σ(wTx+b) .其中σ(z)=11+e?z\sigma (z) = \frac{1}{1+e^{-z}}σ(z)=1+e?z1?.(注:初始化w,bw,bw,b)
  • 計算mmm個樣本的交叉熵損失,取平均值,得到關(guān)于w,bw,bw,b的損失值
    J(w,b)=1m∑i=1m(L(y^i),yi)=?1m∑i=1m(yilogy^i+(1?yi)log(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)=m1?i=1m?(L(y^?i?),yi?)=?m1?i=1m?(yi?logy^?i?+(1?yi?)log(1?y^?i?))
  • 計算J(w,b)J(w,b)J(w,b)關(guān)于w,bw,bw,b的偏導(dǎo)dw=?J(w,b)?wdw = \frac{\partial J(w,b)}{\partial w}dw=?w?J(w,b)?,db=?J(w,b)?bdb = \frac{\partial J(w,b)}{\partial b}db=?b?J(w,b)?
  • 更新w,bw,bw,b w=w?lr?dw,b=b?lr?dbw = w - lr * dw, b = b - lr*dbw=w?lr?dw,b=b?lr?db,lrlrlr是學(xué)習(xí)率.
  • 重復(fù)步驟1~4,達到終止條件結(jié)束算法。
  • 2.1.2 隨機梯度下降

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

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

  • 對于任意一個輸入xix_{i}xi?,計算模型輸出yi^\hat{y_{i}}yi?^?. yi^=σ(wTxi+b)\hat{y_{i}} = \sigma (w^{T}x_{i}+b)yi?^?=σ(wTxi?+b) .其中σ(z)=11+e?z\sigma (z) = \frac{1}{1+e^{-z}}σ(z)=1+e?z1?.(注:初始化w,bw,bw,b)
  • 計算輸入xix_{i}xi?的交叉熵損失Ji(w,b)=L(y^i,yi)=yilogy^i+(1?yi)log(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?)=yi?logy^?i?+(1?yi?)log(1?y^?i?)
  • 計算Ji(w,b)J_{i}(w,b)Ji?(w,b)關(guān)于w,bw,bw,b的偏導(dǎo)dw=?Ji(w,b)?wdw = \frac{\partial J_{i}(w,b)}{\partial w}dw=?w?Ji?(w,b)?,db=?Ji(w,b)?bdb = \frac{\partial J_{i}(w,b)}{\partial b}db=?b?Ji?(w,b)?
  • 更新w,bw,bw,b w=w?lr?dw,b=b?lr?dbw = w - lr * dw, b = b - lr*dbw=w?lr?dw,b=b?lr?db,lrlrlr是學(xué)習(xí)率.
  • 重復(fù)步驟1~4,達到終止條件結(jié)束算法。
  • 2.1.3 mini-Batch梯度下降

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

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

  • 對于小批量的n個樣本中的每個輸入xxx,計算模型輸出y^\hat{y}y^?. y^=σ(wTx+b)\hat{y} = \sigma (w^{T}x+b)y^?=σ(wTx+b) .其中σ(z)=11+e?z\sigma (z) = \frac{1}{1+e^{-z}}σ(z)=1+e?z1?.(注:初始化w,bw,bw,b)
  • 計算nnn個樣本的交叉熵損失,取平均值,得到關(guān)于w,bw,bw,b的損失值
    J(w,b)=1n∑i=1n(L(y^i),yi)=?1n∑i=1nyilogy^i+(1?yi)log(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)=n1?i=1n?(L(y^?i?),yi?)=?n1?i=1n?yi?logy^?i?+(1?yi?)log(1?y^?i?)
  • 計算J(w,b)J(w,b)J(w,b)關(guān)于w,bw,bw,b的偏導(dǎo)dw=?J(w,b)?wdw = \frac{\partial J(w,b)}{\partial w}dw=?w?J(w,b)?,db=?J(w,b)?bdb = \frac{\partial J(w,b)}{\partial b}db=?b?J(w,b)?
  • 更新w,bw,bw,b w=w?lr?dw,b=b?lr?dbw = w - lr * dw, b = b - lr*dbw=w?lr?dw,b=b?lr?db,lrlrlr是學(xué)習(xí)率.
  • 重復(fù)步驟1~4,達到終止條件結(jié)束算法。
  • 2.2 梯度更新算法1

    2.2.1 動量法

    問題背景

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

    方法引入

    動量法在原始權(quán)值梯度dwdwdw的基礎(chǔ)上,增加了上一時刻的更新量υ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)

    問題背景

    尋找最小值的過程,就像小球下山,小球在下山的過程中,速度會一直增加,這樣會沖過最低點,然后又沖下來。我們希望小球到山底附近時,會自動減速,停在最小值處。

    方法引入

    θ?υt\theta - \upsilon _{t}θ?υt?是下一時刻小球所在位置的近似估計。通過計算函數(shù)關(guān)于下一時刻的梯度表示參數(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?


    短的藍色 當前梯度 棕色和長的藍色 更新的累積梯度 綠色 最終的更新值

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

    2.2.3 Adagrad

    問題背景

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

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

    gt,i=▽θtJ(θt,i)g_{t,i} = \bigtriangledown _{\theta _{t}}J(\theta _{t,i})gt,i?=θt??J(θt,i?)
    θt+1,i=θt,i?η?gt,i\theta_{t+1,i} = \theta _{t,i} - \eta \cdot g_{t,i}θt+1,i?=θt,i??η?gt,i?
    Gt∈Rd×dG_{t}\in R^{d\times d}Gt?Rd×d是對角陣,對角上的元素(i,i)(i,i)(i,i)是累積到ttt時刻的梯度的平方。
    其中gt,ig_{t,i}gt,i?表示參數(shù)θi\theta _{i}θi?在時間ttt時的梯度。
    Adagrad算法每次單獨更新每個參數(shù):
    θt+1,i=θt,i?ηGt,ii+ε?gt,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ε是平滑項,防止除數(shù)為0.

    向量化后:

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

    2.2.4 Adadelta

    當前時刻參數(shù)梯度平方的均值
    E[g2]t=γE[g2]t?1+(1?γ)gt2E[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[g2]tE[g^{2}]_{t}E[g2]t?代替GtG_{t}Gt?,得
    Δθt=?ηE[g2]t+εgt\Delta \theta_{t} = - \frac{\eta }{\sqrt{E[g^{2}]_{t}+\varepsilon }} g_{t}Δθt?=?E[g2]t?+ε?η?gt?
    分母是梯度RMSE的校正,用RMSE代替后:
    Δθt=?ηRMSE([g]t)gt\Delta \theta_{t} = - \frac{\eta }{RMSE([g]_{t})} g_{t}Δθt?=?RMSE([g]t?)η?gt?
    完整的Adadelta算法:
    E[g2]t=γE[g2]t?1+(1?γ)gt2(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=?ηRMSE([g]t)gt(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的實例化,γ=0.9\gamma =0.9γ=0.9.
    E[g2]t=0.9E[g2]t?1+0.1gt2(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[g2]t+εgt\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)動量評估。Adam除了像Adadelta和RMSprop那樣保存歷史指數(shù)衰梯度方的均值,還保存了歷史指數(shù)衰減動量的均值
    mt=β1mt?1+(1?β1)gtm_{t}=\beta _{1}m_{t-1} + (1-\beta _{1})g_{t}mt?=β1?mt?1?+(1?β1?)gt?
    νt=β1νt?1+(1?β2)gt2\nu _{t}=\beta _{1}\nu_{t-1} + (1-\beta _{2})g^{2}_{t}νt?=β1?νt?1?+(1?β2?)gt2?
    mt,νtm_{t},\nu _{t}mt?νt?初始化為0,在初始階段這二者趨于0,為了解決這個問題,引入了偏差修正:m^t=mt1?β1\hat m_{t} = \frac{m_{t}}{1-\beta _{1}}m^t?=1?β1?mt??,νt=νt1?β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中的分母的計算推廣到了∞\infty范數(shù)

    Adamax更新規(guī)則

    2.3.1 牛頓法

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

    引入 :對于多元變量,在某點處的導(dǎo)數(shù)變成了海塞矩陣(Hesse matrix).海塞矩陣是一個多元函數(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)=[?2f?xi?xj]n×nH(x) = [\frac{\partial ^{2}f}{\partial x_{i}\partial x_{j}}]_{n\times n}H(x)=[?xi??xj??2f?]n×n?

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

    • 思考
      1. 寫出f(x)f(x)f(x)xkx_{k}xk?處的泰勒展式f(x)=f(xk)+gkT(x?xk)+12(x?xk)H(xk)(x?xk)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)=0f'(x)=0f(x)=0,gkT+H(xk)(x?xk)=0g_{k}^{T}+ H(x_{k})(x-x_{k})=0gkT?+H(xk?)(x?xk?)=0,
      3. 牛頓法求解g(x)=0

    以下源自2

    2.3.2 擬牛頓法

    計算Hk?1H^{-1}_{k}Hk?1?比較麻煩,
    (B.12)或(B.13)是擬牛頓的條件

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

    DFP算法用GkG_{k}Gk?來近似Hk?1H^{-1}_{k}Hk?1?


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

    BFGS算法用BkB_{k}Bk?來近似HkH_{k}Hk?


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


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

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

  • Adadelta
  • Adagrad
  • Adam
  • SparseAdam
  • Adamax
  • ASGD
  • LBFGS
  • RMSprop
  • Rprop
  • SGD
  • 一些解釋參考

    關(guān)于Adagrad算法,連個新詞:激勵收斂和懲罰收斂

    安利編輯公式的鏈接:
    在線公式編輯
    數(shù)學(xué)公式輸入方法


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

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

  • 總結(jié)

    以上是生活随笔為你收集整理的模型优化算法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 精品久久久久亚洲 | 色91av| 国产在线18| 国产午夜精品久久 | 91色漫| 国产免费一区二区三区三州老师 | xxxx国产精品 | 97人人超 | 久久久久久久亚洲精品 | 国产一级做a爰片在线看免费 | 特级做a爰片毛片免费69 | 红桃视频成人在线 | 色眯眯影视 | 欧美视频免费在线 | 国产高清www| 成人精品一区二区三区电影黑人 | 国产精品乱轮 | 动漫3d精品一区二区三区乱码 | 96精品在线 | 少妇做爰免费视看片 | 在线综合av | 欧美色图12p| 亚洲一级片在线观看 | 无码不卡av东京热毛片 | 中日韩中文字幕 | 日韩1024| 午夜爱爱网 | 亚洲黄色精品 | 亚洲第一区视频 | 人人爱人人 | 成人免费视频国产免费 | 免费精品一区 | 国产精品久久久久久av | 久久人人爽人人爽人人片亚洲 | 日韩操比| 欧美激情一区二区视频 | 国产肥老妇视频 | 激情小说亚洲色图 | 波多野吉衣av在线 | 最新av网址在线观看 | 日韩视频不卡 | 黄色片一区 | 亚洲福利影视 | 中文字幕在线二区 | 香蕉国产精品 | 开元在线观看视频国语 | 亚洲AV不卡无码一区二区三区 | 国产一区二区三区在线免费 | 另类三区| 成人特级毛片 | 夜夜综合网 | 国产91一区 | 成人av影院在线观看 | 美腿丝袜亚洲色图 | 天天撸天天操 | 成人里番精品一区二区 | 国产欧美精品一区二区在线播放 | japanese在线| 日本v视频 | 欧美日韩一区精品 | 动漫一区二区 | 九七av | 中文字幕av网站 | 欧美a网 | 久久久久噜噜噜亚洲熟女综合 | 黄色av影院 | 日本一区成人 | 中文字幕欧美在线 | 妹子色综合 | 欧美黄色大片视频 | 中文字幕免费 | 国产另类精品 | 人人妻人人澡人人爽人人dvd | 国内老熟妇对白hdxxxx | 吃奶av| 久插网 | 日韩黄色网址 | 日本jizz在线观看 | 国产精品12页 | 一区二区三区在线免费观看视频 | 一区二区播放 | 很污很黄的网站 | 精品在线视频观看 | 无码粉嫩虎白一线天在线观看 | www污污 | 国产精品无码免费在线观看 | 国产电影一区二区三区 | 爱情岛论坛亚洲入口 | 色多多在线视频 | 久久精品国产亚洲7777 | 在哪里可以看黄色片 | 四虎永久地址 | 亚洲精品h | 国产精品区一区二 | av丝袜在线观看 | 新疆毛片| 中文字幕不卡一区 | 成人爱爱视频 | 久久综合热 |