吴恩达深度学习笔记整理(四)—— 超参数调试、正则化以及优化

目录

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

训练,验证,测试集(Train/Dev/Test sets)

偏差和方差

权衡方差和偏差的问题

正则化

为什么只正则化参数𝑤?为什么不再加上参数 𝑏 呢?

为什么正则化有利于预防过拟合呢?

为什么压缩𝐿2范数,或者弗罗贝尼乌斯范数或者参数可以减少过拟合?

dropout 正则化。

其他正则化方法

归一化输入

1.零均值  

       2.归一化方差。

为什么使用归一化处理输入?

梯度消失/梯度爆炸

神经网络的权重初始化

梯度的数值逼近

梯度检验

梯度检验应用的注意事项


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

深度学习的实践层面

训练,验证,测试集(Train/Dev/Test sets)

Highly iterative process 高度迭代的过程

如果只有100条,1000条或者1万条数据,常见做法是将所有数据三七分,就是人们常说的70%验证集,30%测试集,如果没有明确设置验证集,也可以按照60%训练,20%验证和20%测试集来划分。

假设我们有100万条数据,其中1万条作为验证集,1万条作为测试集,100万里取1万,比例是 1%,即:训练集占98%,验证集和测试集各占1%。对于数据量过百万的应用,训练集可以占到99.5%,验证和测试集各占0.25%,或者验证集占0.4%,测试集占0.1%。

       尽量要确保验证集和测试集的数据来自同一分布

偏差和方差

假设这就是数据集,如果给这个数据集拟合一条直线,会出现高偏差的情况,我们称为“欠拟合”。拟合一个非常复杂的分类器,方差较高,数据过度拟合。最好的情况为适度拟合。

       二维空间可以如上图可视化表示,但在多维空间数据中,绘制数据和可视化分割边界无法实现。

       如果训练集误差和最优误差相差较大,则偏差较高,如果验证集误差和训练集误差相差较大,则方差较大

      

机器学习基础

权衡方差和偏差的问题

正则化

       针对过拟合(高方差)的问题:正则化、more data

  

这里对w进行L2正则化,是向量参数𝑤的欧几里德范数(2范数)的平方

为什么只正则化参数𝑤?为什么不再加上参数 𝑏 呢?

       因为𝑤通常是一个高维参数矢量,已经可以表达高偏差问题,𝑤可能包含有很多参数,b是否进行正则化已经无关紧要

𝐿1正则化:参数𝑤向量的𝐿1范数为绝对值求和

如果用的是𝐿1正则化,𝑤最终会是稀疏的,也就是说𝑤向量中有很多0,有人说这样有

利于压缩模型,因为集合中参数均为0,存储模型所占用的内存更少。实际上,虽然𝐿1正则化使模型变得稀疏,却没有降低太多存储内存,所以我认为这并不是𝐿1正则化的目的,至少不是为了压缩模型,人们在训练网络时,越来越倾向于使用𝐿2正则化。

在神经网络中进行正则化

矩阵范数被称为“弗罗贝尼乌斯范数”,它表示一个矩阵中所有元素的平方和

加入到dw中

权重衰减:进行化简推导得出,实则在原来的参数更新的基础上,先对w乘上一个小于1的系数。

为什么正则化有利于预防过拟合呢?

为什么压缩𝐿2范数,或者弗罗贝尼乌斯范数或者参数可以减少过拟合?

如果正则化𝜆设置得足够大,权重矩阵𝑊被设置为接近于0的值,直观理解就是把多隐藏单元的权重设为0,于是基本上消除了这些隐藏单元的许多影响。

整个神经网络结构是线性运算+激活函数,如果𝜆很大,则w会变得较小,对应的输入会很小,那么激活函数在某一段内会近似于线性函数,此时整个神经网络从非线性向线性转化。

在计算梯度下降时,使用新定义的代价𝐽函数,它应该包含第二个正则化项

还有一种方法也用到了正则化,就是dropout正则化

dropout 正则化。

随机失活:遍历网络的每一层,并设置消除神经网络中节点的概率。

反向随机失活(inverted dropout)

将获取的激活函数与我们生成的对应维度的0-1矩阵相乘,会随机使一部分激活函数变为0,对于输出结果我们需要去补偿我们消失的部分,/𝑘𝑒𝑒𝑝 – 𝑝𝑟𝑜𝑏𝑘𝑒𝑒𝑝 – 𝑝𝑟𝑜𝑏即消失的概率。

       在测试时不需要dropout。

1.dropout 的功能类似于𝐿2正则化,与𝐿2正则化不同的是应用方式不同会带来一点点小变化,甚至更适用于不同的输入范围。

       2.该单元的输入也都可能被随机清除。所以不会给任何一个输入加上太多权重,因为它可能会被删除,因此该单元将通过这种方式积极地传播开,并为单元的各个输入增加一点权重,通过传播所有权重,dropout 将产生收缩权重的平方范数的效果

其他正则化方法

1.数据扩增:对图片进行翻转剪裁,对文字进行旋转

2. early stopping: 在中间点停止迭代过程。

预防过拟合还有其他任务,换句话说就是减少方差,这一步我们用另外一套工具来实现,这个原理有时被称为“正交化”。

Early stopping 的优点是,只运行一次梯度下降,你可以找出𝑤的较小值,中间值和较大值,而无需尝试𝐿2正则化超级参数𝜆的很多值。

归一化输入

       假设一个训练集有两个特征,输入特征为 2 维,归一化需要两个步骤:

1.零均值  

        

       2.归一化方差。

      

为什么使用归一化处理输入?

归一化能够使我们的代价函数更加对称,这样我们在梯度下降更新的时候,能更快地收敛并且能够更准确地找到minimal。

梯度消失/梯度爆炸

在深度神经网络中,激活函数将以指数变化,同时与层数𝐿相关的导数或梯度函数,也是呈指数级增长或呈指数递减。

神经网络的权重初始化

       能够一定程度上解决梯度的问题。希望能够使得设置的权重矩阵既不会增长过快,也不会太快下降到0,从而训练出一个权重或梯度不会增长或消失过快的深度网络

      

梯度的数值逼近

       在实施 backprop 时,有一个测试叫做梯度检验,确保backprop正确实施。

双边误差:[𝑓(𝜃 + 𝜀) − 𝑓(𝜃 − 𝜀)] / 2 𝜀

梯度检验

𝑑𝜃approx[𝑖] 𝑑𝜃[𝑖]做运算,判断两者的接近程度来检验梯度是否计算正确

梯度检验应用的注意事项

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦想的小鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值