深度学习中的优化算法

Adam算法是最常用的自适应学习率算法。对于优化器而言,学习率显然是最为重要的超参数之一。

https://zhuanlan.zhihu.com/p/32626442

总结:无论是SGD系列的优化算法或者是Adam系列的优化算法,其根本的依据都是先使用反向传播算法求出损失函数相对于网络模型每层网络权值的梯度,然后再根据对于当前batch size的训练样本得到的梯度值对网络权值进行更新,仅仅是更新使用的策略不同而已,假设梯度向量记作g,进行权值更新之前的权值为θ,用粗体字标出的是向量,未用粗体字标出的是标量

随机梯度下降法:(今天面试被问到,随机梯度下降法的随机体现在哪里?我当时说的是通常说的随机梯度下降法是batch size=1,但是现在理解可能还有一个地方是随机的:从整个训练数据集中随机采样出 mini batch的样本进行当前批次的训练样本,这个采样的过程是随机的),

θ=θ-lr*g

带有动量学习率的随机梯度下降法:

θ=momentum*θ-(1-momentum)*lr*g    一阶动量

自适应学习率算法系列(所谓的自适应并不仅仅是说能够自动地调整学习率的大小,并且还能对于不同的网络模型参数分量,自适应的采用不同的学习率)

Adagrad

初始的累计梯度平方和,初始化为0  r=0

r=r+g(element wise product)g    更新完r后,用r来动态地调整学习率

θ=θ-(lr/sqrt(r+delta))*g    element wise operation

RMSprop

考虑到Adagrad使用的累计梯度平方和是从开始训练一直到当前时刻所累积的平方和,RMS prop仅仅使用上一次的r和当前的梯度值来更新r,二阶动量

初始的累计梯度平方和,初始化为0  r=0

r=moment*r+(1-momentum)*g(element wise product)g    更新完r后,用r来动态地调整学习率

θ=θ-(lr/sqrt(r+delta))*g    element wise operation

Adam

Adam相当于momentum-SGD中的一阶动量(对于梯度本身引入动量)和RMS Prop中的二阶动量(对于梯度的变化率即自适应的学习率这一项引入了动量)的结合

Adam的全局学习率通常设置成lr=1e-3

beta1=0.9    beta2=0.999  delta=1e-8  累积一阶动量s   累计二阶动量 r

首先计算一阶动量更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值