TensorFlow2.0之五种神经网络参数优化器

一、参数优化器简介

待优化参数w,损失函数loss,学习率Ir,每次迭代一个batch,t表示当前batch迭代的总次数:
1,计算时刻损失函数关于当前参数的梯度 g t = ∂ l o s s ∂ ( w t ) g_{t} = \frac{\partial loss}{\partial (w_{t})} gt=(wt)loss
2,计算t时刻一阶动量 m t m_{t} mt,和二阶动量 V t V_{t} Vt
3,计算时刻下降梯度: η t = l r ∗ m V \eta _{t}=lr * \frac{m}{\sqrt{V}} ηt=lrV m
4,计算t+1时刻参数: w t + 1 = w t − η t = w t − l r ∗ m V w_{t+1}=w_{t}-\eta_{t}=w_{t}-lr * \frac{m}{\sqrt{V}} wt+1=wtηt=wtlrV m
一阶动量:与梯度相关的函数
二阶动量:与梯度平方相关的函数
客观来说,需优化的参数仅为输入的权重w和偏置b,不需要优化输入的特征值和超参数,并且优化器之间的差异也是因一阶动量和二阶动量赋值不同而不同。下面来分别详细介绍SGD、SGDM、Adagrad、Rmsprop、Adam五种参数优化器。

二、五种参数优化器

2.1 SGD(不含momentum的梯度下降算法)

m t = g t m_{t} = g_{t} mt=gt V t = 1 V_{t} = 1 Vt=1
η t = l r ∗ m t V t = l r ∗ g t \eta _{t}=lr * \frac{m_{t}}{\sqrt{V_{t}}} = lr * g_{t} ηt=lrVt mt=lrgt
w t + 1 = w t − η t = w t − l r ∗ m t V t = w t − l r ∗ g t w_{t+1}=w_{t}-\eta_{t}=w_{t}-lr * \frac{m_{t}}{\sqrt{V_{t}}} = w_{t} - lr * g_{t} wt+1=wtηt=wtlrVt mt=wtlrgt

2.2 SGDM(含momentum的梯度下降算法,在SGD基础上增加一阶动量)

m t = β m t − 1 + ( 1 − β ) g t m_{t} = \beta m_{t-1} + (1-\beta)g_{t} mt=βmt1+(1β)gt V t = 1 V_{t} = 1 Vt=1
η t = l r ∗ m t V t = l r ∗ m t = l r ∗ [ β m t − 1 + ( 1 − β ) g t ] \eta _{t}=lr * \frac{m_{t}}{\sqrt{V_{t}}} = lr * m_{t} = lr *[ \beta m_{t-1} + (1-\beta)g_{t}] ηt=lrVt mt=lrmt=lr[βmt1+(1β)gt]
w t + 1 = w t − η t = w t − l r ∗ m t V t = w t − l r ∗ [ β m t − 1 + ( 1 − β ) g t ] w_{t+1}=w_{t}-\eta_{t}=w_{t}-lr * \frac{m_{t}}{\sqrt{V_{t}}} = w_{t} - lr *[ \beta m_{t-1} + (1-\beta)g_{t}] wt+1=wtηt=wtlrVt mt=wtlr[βmt1+(1β)gt]

注: β = 0.9 \beta = 0.9 β=0.9

2.3 Adagrad(在SGD基础上增加二阶动量)

m t = g t m_{t} = g_{t} mt=gt V t = ∑ t = 1 t g t 2 V_{t} = \sum_{t=1}^{t} g_{t}^{2} Vt=t=1tgt2
η t = l r ∗ m t V t = l r ∗ g t ∑ t = 1 t g t 2 \eta _{t}=lr * \frac{m_{t}}{\sqrt{V_{t}}} = lr * \frac{g_{t}}{\sqrt{\sum_{t=1}^{t} g_{t}^{2}}} ηt=lrVt mt=lrt=1tgt2 gt
w t + 1 = w t − η t = w t − l r ∗ m t V t = w t − l r ∗ g t ∑ t = 1 t g t 2 w_{t+1}=w_{t}-\eta_{t}=w_{t}-lr * \frac{m_{t}}{\sqrt{V_{t}}} = w_{t} - lr * \frac{g_{t}}{\sqrt{\sum_{t=1}^{t} g_{t}^{2}}} wt+1=wtηt=wtlrVt mt=wtlrt=1tgt2 gt

2.4 RMSProp(在SGD基础上增加二阶动量)

m t = g t m_{t} = g_{t} mt=gt V t = β V t − 1 + ( 1 − β ) g t 2 V_{t} = \beta V_{t-1}+(1-\beta) g_{t}^{2} Vt=βVt1+(1β)gt2
η t = l r ∗ m t V t = l r ∗ g t β V t − 1 + ( 1 − β ) g t 2 \eta _{t}=lr * \frac{m_{t}}{\sqrt{V_{t}}} = lr * \frac{g_{t}}{\sqrt{ \beta V_{t-1}+(1-\beta) g_{t}^{2}}} ηt=lrVt mt=lrβVt1+(1β)gt2 gt
w t + 1 = w t − η t = w t − l r ∗ m t V t = w t − l r ∗ g t β V t − 1 + ( 1 − β ) g t 2 w_{t+1}=w_{t}-\eta_{t}=w_{t}-lr * \frac{m_{t}}{\sqrt{V_{t}}} = w_{t} - lr * \frac{g_{t}}{\sqrt{ \beta V_{t-1}+(1-\beta) g_{t}^{2}}} wt+1=wtηt=wtlrVt mt=wtlrβVt1+(1β)gt2 gt

注: β = 0.9 \beta = 0.9 β=0.9

2.5 Adam(同时结合SGDM一阶动量和RMSProp二阶动量)

m t = β 1 m t − 1 + ( 1 − β 1 ) g t m_{t} = \beta_{1} m_{t-1} + (1 - \beta_{1})g_{t} mt=β1mt1+(1β1)gt V t = β 2 V t − 1 + ( 1 − β 2 ) g t 2 V_{t} = \beta_{2} V_{t-1}+(1-\beta_{2}) g_{t}^{2} Vt=β2Vt1+(1β2)gt2
m t m_{t} mt v t v_{t} vt分别进行修正动量的偏差,改为:
m t ^ = m t 1 − β 1 t \hat{m_{t}} = \frac{m_{t}}{1-\beta_{1}^{t}} mt^=1β1tmt
V t ^ = v t 1 − β 2 t \hat{V_{t}} = \frac{v_{t}}{1-\beta_{2}^{t}} Vt^=1β2tvt
η t = l r ∗ m t ^ V t ^ \eta _{t}=lr * \frac{\hat{m_{t}} }{\sqrt{\hat{V_{t}}}} ηt=lrVt^ mt^
w t + 1 = w t − η t = w t − l r ∗ m t ^ V t ^ w_{t+1}=w_{t}-\eta_{t}=w_{t}-lr * \frac{\hat{m_{t}} }{\sqrt{\hat{V_{t}}}} wt+1=wtηt=wtlrVt^ mt^

注: β 1 = 0.9 \beta1 = 0.9 β1=0.9 β 2 = 0.999 \beta2=0.999 β2=0.999

总结

1.当lr=0.1 epoch=500 batch=32

loss变化趋势:
在这里插入图片描述
acc精确度变化趋势:
在这里插入图片描述
训练消耗时间:
在这里插入图片描述

从对比图中不难看出,损失函数loss衰减趋势图,Adam优化器衰减速度更快,且精确度在epoch=100后表现较为稳定,但是训练时间比前四个都要长,但为了得到较稳定的精确度,往往会以时间换准确度。

将参数改动,变为lr=0.01 epoch=100 batch=32

loss变化趋势:
在这里插入图片描述
准确度变化趋势:
在这里插入图片描述
训练耗时:
在这里插入图片描述

和之前的类似,就损失函数衰减的速度和结果准确率而言,还是Adam优化器比较占优势,但是由于调整了学习率lr和迭代的次数epoch,在时间上大大减少,均在2~4秒之间。

综上所述表明,找到适合的优化模型学习率大小迭代次数对模型的优化至关重要。同时Adam优化器可以作为常用优化器。

  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值