改善深层神经网络:超参数调试,正则化以及优化

第二周优化算法
2.1 Mini-batch 梯度下降

(1)将训练集分割成小的子集训练,称为Mini-batch(batch 梯度下降就是梯度下降),不用等整个训练集遍历完就可以展开后续的工作。

2.2 理解mini-batch 梯度下降

(1)每次迭代走向朝下但可能会有更多的噪声。
(2) mini-batch大小为N,即batch 梯度下降,单次迭代耗时太长(和mini-batch梯度下降的总耗时相比?)
(3)mini-batch大小为1,即随机梯度下降法,失去了向量化的优势,大部分时间朝着最小值靠近,也可能远离最小值,平均时间来看他接近最小值,但永远不会收敛,在最小值附近波动,但不会停留在最小值。
(分母为1,值会不断变动)
(4)实际上位于中间位置的mini-batch大小效果最好。

2.3 指数加权平均数

vt=βvt1+1β)θtv_{t}=\beta v_{t-1}+(1-\beta)\theta_{t}
计算时可视vtv_{t}大概是11β\frac{1}{1-\beta}
β\beta较大时给前一天的权重较大,曲线更加平缓。

2.4 理解指数加权平均数

在机器学习中,数据规模比较大,计算平均数的计算量和内存空间消耗大,使用加权平均数,虽然不是最精准的计算平均数的方法,但是只用了一行代码,只占用了单行数字的存储和内存,从计算和内存上来说这是一个优势。
当一个数分配的权值下降到峰值的1e\frac{1}{e},相当于平均数量n的大小,即n大约为
11β\frac{1}{1-\beta}

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

因为 v0v_{0}初始化为0,所以导致估测的前几天的数值偏小。
所以我们使用偏差修正,令vt=vt1βtv_{t}=\frac{v_{t}}{1-\beta^{t}}
eg:β=0.98\beta=0.98当t=2时,1βt=10.982=0.03961-\beta^{t}=1-0.98^{2}=0.0396
v20.0396=0.0196θ1+0.02θ20.0396\frac{v_{2}}{0.0396}=\frac{0.0196\theta_{1}+0.02\theta_{2}}{0.0396}也就是θ1θ2\theta_{1}和\theta_{2}的加权平均值
当t很大时,βt\beta^{t}相当于0,偏差修正几乎没有作用。

2.6动量梯度下降法

动量梯度下降法的运行速度总是快于标准的梯度下降法。
我们希望标准的梯度下降法,在纵轴上摆动幅度减小,在横轴上加快学习速度。
但是无法使用较大的学习率,结果可能会偏离函数的范围,为了避免摆动过大,要用一个较小的学习率。

vdW=βvdw+(1β)dWv_{dW}=\beta v_{dw}+(1-\beta)dW
vdb=βvdb+(1β)dbv_{db}=\beta v_{db}+(1-\beta)db
W=WαvdW,b=bαvdbW = W - \alpha v_{dW},b = b-\alpha v_{db}
β\beta最常用的是0.9,是一个很棒的鲁棒数。
eg:
optimizer = optim.SGD(model.parameters(),lr=learning_rate,momentum=0.9,weight_decay=5e-4)
weight_decay (float, 可选) – 权重衰减(L2惩罚)(默认: 0)
λi=1kWi2\lambda\sum_{i=1}^{k}|W_{i}^{2}|

©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师: 上身试试 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值