欢迎访问 生活随笔!

凯发ag旗舰厅登录网址下载

当前位置: 凯发ag旗舰厅登录网址下载 > 编程资源 > 编程问答 >内容正文

编程问答

模型优化算法 -凯发ag旗舰厅登录网址下载

发布时间:2025/1/21 编程问答 21 豆豆
凯发ag旗舰厅登录网址下载 收集整理的这篇文章主要介绍了 模型优化算法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1.1 基于梯度下降的方法

1.1.1样本量

  • 批量梯度下降bgd(batch gradient dencent)
  • 随机梯度下降sgd(stochastic gradient descent)
  • mini-batch gd

1.1.2. 学习率的更新方法

  • 动量法momentum(引入了动量项)
  • nesterov accelerated gradient(nag,预测下一时刻的位置)

二阶方法,调整学习率

  • adagrad(每个参数单独调节)
  • adelta(防止adagrad中的学习率一直减小)
  • rmsprop(adelta实例化)
  • adam(梯度、梯度方的历史加权平均值)
  • adamax(adam的二范数变为无穷范数,更稳定)



1.2. 牛顿法系列

1.2.1. 牛顿法
1.2.2. 拟牛顿法

  • dfp
  • bgfs
  • l-bgfs(待完成)
  • broyden

2.1.1批量梯度下降

根据所有样本的损失,更新模型参数。

以逻辑斯蒂回归模型为例,训练集有m个样本x(x1,x2,...,xm)x({x_{1}},{x_{2}},...,{x_{m}})x(x1,x2,...,xm),误差函数是交叉熵误差函数,批量梯度下降法的计算过程如下:

  • 对于每个输入xxx,计算模型输出y^\hat{y}y^. y^=σ(wtx b)\hat{y} = \sigma (w^{t}x b)y^=σ(wtxb) .其中σ(z)=11 e−z\sigma (z) = \frac{1}{1 e^{-z}}σ(z)=1ez1.(注:初始化w,bw,bw,b)
  • 计算mmm个样本的交叉熵损失,取平均值,得到关于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)=m1i=1m(l(y^i),yi)=m1i=1m(yilogy^i(1yi)log(1y^i))
  • 计算j(w,b)j(w,b)j(w,b)关于w,bw,bw,b的偏导dw=∂j(w,b)∂wdw = \frac{\partial j(w,b)}{\partial w}dw=wj(w,b),db=∂j(w,b)∂bdb = \frac{\partial j(w,b)}{\partial b}db=bj(w,b)
  • 更新w,bw,bw,b w=w−lr∗dw,b=b−lr∗dbw = w - lr * dw, b = b - lr*dbw=wlrdw,b=blrdb,lrlrlr是学习率.
  • 重复步骤1~4,达到终止条件结束算法。
  • 2.1.2 随机梯度下降

    单个样本输入后,计算得到损失后,更新模型参数。

    以逻辑斯蒂回归模型为例,训练集有m个样本x(x1,x2,...,xm)x({x_{1}},{x_{2}},...,{x_{m}})x(x1,x2,...,xm),误差函数是交叉熵误差函数,随机梯度下降法的计算过程如下:

  • 对于任意一个输入xix_{i}xi,计算模型输出yi^\hat{y_{i}}yi^. yi^=σ(wtxi b)\hat{y_{i}} = \sigma (w^{t}x_{i} b)yi^=σ(wtxib) .其中σ(z)=11 e−z\sigma (z) = \frac{1}{1 e^{-z}}σ(z)=1ez1.(注:初始化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)=yilogy^i(1yi)log(1y^i)
  • 计算ji(w,b)j_{i}(w,b)ji(w,b)关于w,bw,bw,b的偏导dw=∂ji(w,b)∂wdw = \frac{\partial j_{i}(w,b)}{\partial w}dw=wji(w,b),db=∂ji(w,b)∂bdb = \frac{\partial j_{i}(w,b)}{\partial b}db=bji(w,b)
  • 更新w,bw,bw,b w=w−lr∗dw,b=b−lr∗dbw = w - lr * dw, b = b - lr*dbw=wlrdw,b=blrdb,lrlrlr是学习率.
  • 重复步骤1~4,达到终止条件结束算法。
  • 2.1.3 mini-batch梯度下降

    根据小批量n个样本的损失,更新模型参数。

    以逻辑斯蒂回归模型为例,训练集有m个样本x(x1,x2,...,xm)x({x_{1}},{x_{2}},...,{x_{m}})x(x1,x2,...,xm),误差函数是交叉熵误差函数,批量梯度下降法的计算过程如下:

  • 对于小批量的n个样本中的每个输入xxx,计算模型输出y^\hat{y}y^. y^=σ(wtx b)\hat{y} = \sigma (w^{t}x b)y^=σ(wtxb) .其中σ(z)=11 e−z\sigma (z) = \frac{1}{1 e^{-z}}σ(z)=1ez1.(注:初始化w,bw,bw,b)
  • 计算nnn个样本的交叉熵损失,取平均值,得到关于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)=n1i=1n(l(y^i),yi)=n1i=1nyilogy^i(1yi)log(1y^i)
  • 计算j(w,b)j(w,b)j(w,b)关于w,bw,bw,b的偏导dw=∂j(w,b)∂wdw = \frac{\partial j(w,b)}{\partial w}dw=wj(w,b),db=∂j(w,b)∂bdb = \frac{\partial j(w,b)}{\partial b}db=bj(w,b)
  • 更新w,bw,bw,b w=w−lr∗dw,b=b−lr∗dbw = w - lr * dw, b = b - lr*dbw=wlrdw,b=blrdb,lrlrlr是学习率.
  • 重复步骤1~4,达到终止条件结束算法。
  • 2.2 梯度更新算法1

    2.2.1 动量法

    问题背景

    下图所示,红点是最小值点。为了到达红点,如果使用较大的学习率,则会出现紫线画出的发散现象,如果使用较小的学习率,如蓝线所示,收敛的速度比较慢。因此,希望有种学习方法,能在纵轴上减小摆动,在横轴上,希望加快学习。这里就需要每次横轴和纵轴的更新量不同,如果使用w=w−lr∗dww = w - lr * dww=wlrdw,则达不到这种效果。

    方法引入

    动量法在原始权值梯度dwdwdw的基础上,增加了上一时刻的更新量υt−1\upsilon _{t-1}υt1
    υt=γυt−1 η▽θj(θ)\upsilon _{t} = \gamma \upsilon _{t-1} \eta \bigtriangledown _{\theta }j(\theta )υt=γυt1ηθj(θ)
    θ=θ−υt\theta =\theta - \upsilon _{t}θ=θυt

    2.2.2 nesterov 梯度加速法(nesterov accelerated gradient)

    问题背景

    寻找最小值的过程,就像小球下山,小球在下山的过程中,速度会一直增加,这样会冲过最低点,然后又冲下来。我们希望小球到山底附近时,会自动减速,停在最小值处。

    方法引入

    θ−υt\theta - \upsilon _{t}θυt是下一时刻小球所在位置的近似估计。通过计算函数关于下一时刻的梯度表示参数的梯度方向。
    υt=γυt−1 η▽θj(θ−υt)\upsilon _{t} = \gamma \upsilon _{t-1} \eta \bigtriangledown _{\theta }j(\theta -\upsilon _{t} )υt=γυt1ηθj(θυt)
    θ=θ−υt\theta =\theta - \upsilon _{t}θ=θυt


    短的蓝色 当前梯度 棕色和长的蓝色 更新的累积梯度 绿色 最终的更新值

    这种更新方法可以阻止更新过快而越过最小值点而使响应速度提高。

    2.2.3 adagrad

    问题背景

    我们能够根据误差函数的斜率调整更新量并加速sgd,我们还希望根据每个参数的重要性来调整每个参数的更新量

    adagrad 是一种基于梯度的优化算法。它调整参数的学习率的规则: larger updates for infrequent and smaller updates for frequent parameters(怎么翻呢?)
    sgd的更新规则如下:

    gt,i=▽θtj(θt,i)g_{t,i} = \bigtriangledown _{\theta _{t}}j(\theta _{t,i})gt,i=θtj(θt,i)
    θt 1,i=θt,i−η⋅gt,i\theta_{t 1,i} = \theta _{t,i} - \eta \cdot g_{t,i}θt1,i=θt,iηgt,i
    gt∈rd×dg_{t}\in r^{d\times d}gtrd×d是对角阵,对角上的元素(i,i)(i,i)(i,i)是累积到ttt时刻的梯度的平方。
    其中gt,ig_{t,i}gt,i表示参数θi\theta _{i}θi在时间ttt时的梯度。
    adagrad算法每次单独更新每个参数:
    θ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}θt1,i=θt,igt,iiεηgt,i
    其中ε\varepsilonε是平滑项,防止除数为0.

    向量化后:

    adagrad的主要缺点是,训练过程中,分母中的梯度平方项一直在增加,这会使学习率越来越小,从而导致模型无法继续学习。

    2.2.4 adadelta

    当前时刻参数梯度平方的均值
    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]t1(1γ)gt2
    adagrad参数的更新量

    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]t1(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相比,在分母上做了处理,避免学习率一直减小。

    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]t10.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,自适应动量评估。adam除了像adadelta和rmsprop那样保存历史指数衰梯度方的均值,还保存了历史指数衰减动量的均值
    mt=β1mt−1 (1−β1)gtm_{t}=\beta _{1}m_{t-1} (1-\beta _{1})g_{t}mt=β1mt1(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νt1(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β1mt,νt=νt1−β2\nu _{t} = \frac{\nu_{t}}{1-\beta _{2}}νt=1β2νt
    adam的参数更新规则:
    δθ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范数

    adamax更新规则

    2.3.1 牛顿法

    为了便于理解用牛顿法优化目标函数,首先介绍单个变量牛顿法,用于数值分析中求近似解。具体参考,得到的近似解的推导公式为:
    xn 1=xn−f(xn)f′(xn)x_{n 1} = x_{n} - \frac{f(x^{n})} {f^{'}(x^{n})}xn1=xnf(xn)f(xn)

    引入 :对于多元变量,在某点处的导数变成了海塞矩阵(hesse matrix).海塞矩阵是一个多元函数二阶偏导构成的矩阵。f(x)f(x)f(x)具有二阶连续偏导,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)=[xixj2f]n×n

    考虑无约束的最优化问题
    minx∈rnf(x)\underset{x\in r^{n}}{min}f(x)xrnminf(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(xxk)21(xxk)h(xk)(xxk)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})=0gkth(xk)(xxk)=0,
      3. 牛顿法求解g(x)=0

    以下源自2

    2.3.2 拟牛顿法

    计算hk−1h^{-1}_{k}hk1比较麻烦,
    (b.12)或(b.13)是拟牛顿的条件

    2.3.2.1 拟牛顿法-dfp(davidon-fletcher-powell)算法

    dfp算法用gkg_{k}gk来近似hk−1h^{-1}_{k}hk1


    2.3.2.2 拟牛顿法-bfgs(broyden-fletcher-goldfarb-shanno)算法

    bfgs算法用bkb_{k}bk来近似hkh_{k}hk


    2.3.2.3∗* 拟牛顿法-broyden类算法


    pytorch中的优化器有以下一些:

  • adadelta
  • adagrad
  • adam
  • sparseadam
  • adamax
  • asgd
  • lbfgs
  • rmsprop
  • rprop
  • sgd
  • 一些解释参考

    关于adagrad算法,连个新词:激励收敛和惩罚收敛

    安利编辑公式的链接:
    在线公式编辑
    数学公式输入方法


  • ruder s . an overview of gradient descent optimization algorithms[j]. 2016. ↩︎

  • 李航. 统计学习方法[m]. 清华大学出版社, 2012. ↩︎

  • 总结

    以上是凯发ag旗舰厅登录网址下载为你收集整理的模型优化算法的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得凯发ag旗舰厅登录网址下载网站内容还不错,欢迎将凯发ag旗舰厅登录网址下载推荐给好友。

    • 上一篇:
    • 下一篇:
    网站地图