2020-2-17 深度学习笔记8 - 深度学习中的优化3(自适应学习率算法-AdaGrad / RMSProp / Adam,二阶近似方法-牛顿法 / 共轭梯度 / BFGS)

第八章 深度学习中的优化

官网
python实现代码

2020-2-15 深度学习笔记8 - 深度学习中的优化1(与纯优化区别-基于梯度下降,神经网络优化-下降到足够小即可)
2020-2-16 深度学习笔记8 - 深度学习中的优化2(基本算法-梯度下降/动量,参数初始化策略)

自适应学习率算法(AdaGrad / RMSProp / Adam)

python实现参见https://blog.csdn.net/u012756814/article/details/79995133

目前最流行并且使用很高的优化算法包括SGD、具动量的SGD、RMSProp、具动量的RMSProp、AdaDelta和Adam。 此时,选择哪一个算法似乎主要取决于使用者对算法的熟悉程度(以便调节超参数)。

神经网络研究员早就意识到学习率肯定是难以设置的超参数【在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据】之一,因为它对模型的性能有显著的影响。

损失通常高度敏感于参数空间中的某些方向,而不敏感于其他。 动量算法可以在一定程度缓解这些问题,但这样做的代价是引入了另一个超参数。

如果我们相信方向敏感度在某种程度是轴对齐的,那么每个参数设置不同的学习率,在整个学习过程中自动适应这些学习率是有道理的。

更好的学习率参数一方面可以加速收敛,一方面可以减小训练误差,本文主要介绍:AdaGrad 、RMSProp、Adam。它们都是增量(或者基于小批量)的算法,自适应模型参数的学习率。

  • AdaGrad --梯度累加
    W t + 1 = W t − η t + 1 1 t + 1 ∑ i = 0 t ( g i ) 2 d W t = W t − η ∑ i = 0 t ( g i ) 2 d W t W^{t+1}=W^t−\frac{\fracη{\sqrt{t+1}}}{\sqrt{\frac1{t+1}\sum^t_{i=0}(g^i)^2}}dW^t=W^t−\fracη{\sqrt{\sum^t_{i=0}(g^i)^2}}dW^t Wt+1=Wtt+11i=0t(gi)2 t+1 ηdWt=Wti=0t(gi)2 ηdWt
    求和和开根号都是元素级别的

AdaGrad 为每个参数提供自适应的权重,如果某个梯度历史积累具有较大的梯度(调整已经比较大),那么给一个小的学习率(除以一个更大的值)。相反,如果某个梯度历史积累相对较小(调整不是很大),则给比较大的学习率,净效果是在较为平缓的方向取得比较大的进步,有助于逃离高原平台。但是从训练开始积累平方和可能会导致有效学习率过早和过量的减小。
在这里插入图片描述

  • RMSProp–指数加权移动平均(丢弃时间过久的历史)

RMSProp 修改了AdaGrad梯度累加的方式,采用指数加权移动平均(丢弃时间过久的历史),多了一个超参数β,用以控制移动平均的长度范围。

on iteration t:
​compute dW,db on the current mini-batch

S d w = β S d w + ( 1 − β ) ( d W t ) 2 S_{dw}=βS_{dw}+(1−β)(dW^t)^2 Sdw=βSdw+(1β)(dWt)2

S d b = β S d b + ( 1 − β ) ( d b t ) 2 S_{db}=βS_{db}+(1−β)(db^t)^2 Sdb=βSdb+(1β)(dbt)2

W t + 1 = W t − α d W t S d w + ϵ W^{t+1}=W^t−α\frac{dW^t}{\sqrt{S_{dw}+ϵ}} Wt+1=WtαSdw+ϵ dWt

b t + 1 = W t − α d b t S d b + ϵ b^{t+1}=W^t−α\frac{db^t}{S_{db}+ϵ} bt+1=WtαSdb+ϵdb

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值