02.改善深层神经网络:超参数调试、正则化以及优化-优化算法

优化算法

2.1mini-batch 梯度下降

优化算法,这能让你的神经网络运行得更快。

虽然之前的向量化的方法能够让我们较快地处理样本数据,但是当样本的数据变得较多的时候,处理速度仍然缓慢。比如说,如果𝑚是 500 万或 5000 万或者更大的 一个数,在对整个训练集执行梯度下降法时,你要做的是,你必须处理整个训练集,然后才 能进行一步梯度下降法,然后你需要再重新处理 500 万个训练样本,才能进行下一步梯度,所以如果你在处理完整个 500 万个样本的训练集之前,先让梯度下降法处理一部分, 你的算法速度会更快

你可以把训练集分割为小一点的子集训练,这些子集被取名为 mini-batch,假设每一个子集中只有 1000 个样本,那么把其中的𝑥 (1)到𝑥 (1000)取出来,将其称为第一个子训练集,也叫做 mini-batch,然后你再取出接下来的 1000 个样本,从𝑥 (1001)到𝑥 (2000),然后再取 1000 个样本,以此类推。

(符号补充说明: X ( i ) X^{(i)} X(i)表示第i个训练样本; X [ i ] X^{[i]} X[i]表示神经网络的层数; X { i } X^{\{i\}} X{i}表示第i个mini-batch)

使用 batch 梯度下降法,一次遍历训练集只能让你做一个梯度下降,使用 mini-batch 梯度下降法,一次遍历训练集,能让你做 5000 个梯度下降。(理解精华⭐⭐⭐)

2.2理解mini-batch梯度下降法

batch梯度下降方法与mini-batch梯度下降的方法的区别:

image-20200919120919992

使用 batch 梯度下降法时,每次迭代你都需要遍历整个训练集,可以预期每次迭代成本都会下降,所以如果成本函数𝐽是迭代次数的一个函数,它应该会随着每次迭代而减少。

使用 mini-batch 梯度下降法,如果你作出成本函数在整个过程中的图,则并不是每次迭代都是下降的,而是走势总体朝下但是图形是有噪声的,因为不同的mini-batch可能比较难运算。

当mini-batch中训练集的大小数为m(训练集的大小)的时候,mini-batch梯度下降方法就变为batch梯度下降方法。(弊端在于特别是在训练样本数量巨大的时候,单次迭代耗时太长。)

当mini-batch中训练集的大小数为1的时候,叫做随机梯度下降算法。(弊端为失去所有向量化带给你的加速,因为一次性只处理了一个训练样本,这样效率过于低下

方法的选择:当你处理的样本数量比较小的时候,比如小于2000的时候可以直接使用batch梯度下降法,而当样本的数量很大的时候使用mini-batch梯度下降法。一般的 mini-batch 大小为 64 到 512

2.3 指数加权平均数

假设这里表示一年的天气温度:

image-20200919143838345

你要做的是,首先使𝑣0 = 0

每天,需要使用 0.9 的加权数之前的数值加上当日温度的 0.1 倍,即𝑣1 = 0.9𝑣0 + 0.1𝜃1,所以这里是第一天的温度值。

第二天,又可以获得一个加权平均数,0.9 乘以之前的值加上当日的温度 0.1 倍,即𝑣2 = 0.9𝑣1 + 0.1𝜃2,以此类推。

第二天值加上第三日数据的 0.1,如此往下。

大体公式就是某天的𝑣等于前一天𝑣值的 0.9 加上当日温度的 0.1。 如此计算,然后用红线作图的话,便得到这样的结果。

image-20200919143940251

指数加权平均数的关键方程** v t v_t vt = β \beta β * v t − 1 v_{t-1} vt1 + (1 - β \beta β) θ t \theta_t θt**

而我们说根据 β \beta β的值我们可以估计上面表示平均天气的方法大约平均了 1/(1- β \beta β)天的天气数据。

理由就是你可以将上面的推导公式全部展开:

image-20200919144731673

这样的话比如 β \beta β=0.9,那么在经过衡量了10天的天气数据后, ( 0.9 ) 10 (0.9)^{10} 0.910接近 1 / e ,我们说仿佛你在计算一个指数加权平均数,只关注了过去 10 天的温度,因为 10 天后,权重下降到不到当日权重的三分之一。

优点:通过该方法,你可以只仅仅拿到第t天的数据来不断更新v就可以,它占用极少内存。

2.4指数加权平均的偏差修正

是在估测初期,也就是不用 v t v_t vt,而是用 v t v_t vt/(1 - β t \beta^t βt),在刚开始训练的时候 β t \beta^t βt起作用,到后来t变大的时候, β t \beta^t βt​不起作用,表示偏差修正作用开始减弱。

2.5 动量梯度下降法

还有一种算法叫做 Momentum,或者叫做动量梯度下降法,运行速度几乎总是快于标准的梯度下降算法,简而言之,基本的想法就是计算梯度的指数加权平均数,并利用该梯度更新你的权重

image-20200919150848388

通常我们的梯度下降就是这样的,上下的浮动导致下降的时间延长。

纵轴上,你希望学习慢一点,因为你不想要这些摆动,但是在横轴上,你希望加快学习,你希望快速从左向右移,移向最小值,移向红点。所以使用 动量梯度下降法,你需要做的是,在每次迭代中,确切来说在第𝑡次迭代的过程中,你会计 算微分𝑑𝑊,𝑑𝑏,来计算 v d w v_{dw} vdw = β \beta β * v d w v_{dw} vdw +(1 − β \beta β)𝑑W,之后同样计算, v d b v_{db} vdb = β \beta β* v d b v_{db} vdb + (1 − β \beta β)db。然后重新赋值权重:

𝑊: = 𝑊 − 𝑎 * v d w v_{dw} vdw,𝑏: = 𝑏 − 𝑎 * v d b v_{db} vdb

(𝑎为学习率)

所以你有两个超参数,学习率𝑎以及参数 β \beta β β \beta β控制着指数加权平均数。

2.6 RMSprop

root mean square prop 算法

在第𝑡次迭代中,该算法会照常计算当下 mini-batch 的微分𝑑𝑊,𝑑𝑏,所以我会保留这个 指数加权平均数,我们用到新符号 s d w s_{dw} sdw s d w s_{dw} sdw = β \beta β * s d w s_{dw} sdw + (1- β \beta β) * ( d w ) 2 (dw)^2 (dw)2 s d b s_{db} sdb= β \beta β * s d b s_{db} sdb + (1- β \beta β) * ( d w ) 2 (dw)^2 (dw)2

接着更新参数值:image-20200919151944371

得在横轴方向或者在例子中的𝑊方向,我们希望学习速度,而在垂直方向,也就是例子中的𝑏方向,我们希望减缓纵轴上的摆动

我们希望** s d w s_{dw} sdw会相对较小**,所以我们要除以一个较小的数,而希望** s d b s_{db} sdb又较大**,所以这里我们要除以较大的数字,这样就可以减缓纵轴上的变化。你看这些微分,垂直方向的要比水平方向的大得多,所以斜率在𝑏方向特别大,所以这些微分中,𝑑𝑏较大,𝑑𝑊较小,因为函数的倾斜程度,在纵轴 上,也就是 b 方向上要大于在横轴上,也就是𝑊方向上。𝑑𝑏的平方较大,所以𝑆𝑑𝑏也会较大, 而相比之下,𝑑𝑊会小一些,亦或𝑑𝑊平方会小一些,因此𝑆𝑑𝑊会小一些,结果就是纵轴上的 更新要被一个较大的数相除,就能消除摆动,而水平方向的更新则被较小的数相除。

image-20200919153740712

RMSprop 的影响就是你的更新最后会变成这样(绿色线),纵轴方向上摆动较小,而横 轴方向继续推进。还有个影响就是,你可以用一个更大学习率𝑎,然后加快学习,而无须在 纵轴上垂直方向偏离。

2.7 Adam 优化算法

Adam 优化算法基本上就是将 Momentum 和 RMSprop 结合在一起

image-20200919154409090

image-20200919154441956

$\beta 1 常 用 的 缺 省 值 为 0.9 , 1常用的缺省值为 0.9, 10.9,\beta$2推荐使用 0.999.

2.8学习率衰减

https://blog.csdn.net/qq_42325947/article/details/108589191

摘要:数据的上界和下界概念在人工智能领域中使用得非常普 遍,在粗糙集理论中尤为明显,随着粗集理论的不断发展, 上下边界的概念得到更大范围内的应用。本文将经典的神经 网络和粗集理论有机地结合,提出了一种基于粗集理论的神 经网络,并应用神经网络的粗糙模式建立预测模型。在粗糙 模式下每个神经网络的输入值不是一个单值而是一对值,即 上下边界数据,经典的神经网络在预测模型中采用的是单值 数据作为输入值,但是在一些应用中会产生问题,如医院要 对病人进行病情的跟踪观察,并希望对其未来的情况进行预 测,这时经典的神经网络就难以适用了,对于一个病人来 说,心跳次数,脉搏次数,血压值,体温等项指标在一天当 中需要进行几次测试,问题在于对于同一项指标每次测量值 也是不同的,因此得到的是一组数据而非单个数据,由于经 典的神经网络对于外界的信息的传导需要的是单值输入,究 竟应该取测量值中的哪个值作为输入就难以确定,通常的方 法是将测量数据进行数学平均,以均值作为网络的输入,但 是这可能导致具有重要性质数据的泛化,而粗糙集理论则可 以很好地解决这个问题,粗糙集数据的上下边界可以将病人 一天的各项指标测量值的上界和下界数据作为粗糙神经元的 输入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值