改善深层神经网络:超参数调节(第一周)笔记

1.偏差(bias)

高偏差:不能很好地拟合训练集

2.方差(variance

高方差:能很好的拟合训练集,但不能很好地拟合测试集,另一种说法是过度拟合某些数据

下面分别是高偏差和高方差



举个例子:下面是一个猫的识别的例子,y=1,代表图片上是猫,y=0,代表图片上不是猫,下面的例子具体给出什么叫高偏差,什么叫高方差


高偏差与高方差同时具备的例子:


3.如何解决高偏差和高方差的问题

当初始模型训练完成后,首先要知道算法的偏差高不高,偏差高(无法拟合训练集)的解决办法有:

        1)选择一个新网络,比如含有更多隐层或者隐层单元的网络

        2)花费更多时间训练算法,或者尝试更先进的优化算法

        

        当结果很好地拟合训练集时,就要查看是否在验证集上也表现很好,即检查是否有高方差问题(过度拟合),高方差的解决方法有:

        1)采用更多的数据(可能很难)

         2)通过正则化(等下介绍)来减少过拟合

不断迭代,直到找到一个低偏差,低方差的模型

4.正则化:

        正则化包括L2正则,L1,以及dropout等等

如果你的神经网络过度拟合了数据, 防止过拟合的一种方法是采用更多数据,另一种是降低模型的复杂度,如何降低模型的复杂度?

 一种方式是在cost函数中加入正则化项,正则化项可以理解为复杂度,cost越小越好,因此cost加入正则化项后,为了使cost小,则不能使正则项大,也就是不能让模型复杂,这样就降低了模型的复杂度,也就降低了过拟合,这就是正则化。

首先介绍的是在logoistic regression上的正则化(也就在在损失函数后面加上正则化项)


然后是在神经网络上的正则化,加入正则项后,损失函数变化,因此反向传播中参数也发生了变化


下面给出一个直观的例子来解释为什么正则化可以减少过拟合

       假设我们采用的激活函数是tanh,当z很小时,也就是处于中间的线性区域内。此时若lambd很大,则因为代价函数的参数变大了使得w很小,则z也很小,几乎处于中间的线性区域内,几乎每层都是线性的,则整个网络就是一个线性网络,即使是很深的深层网络,因具有线性激活函数的特征,最终我们只能计算线性函数,因此,不适用于非常复杂的决策以及过度拟合数据集的非线性决策边界,也就减少了过拟合。

.

5 。dropout(随机失活)方法,减少过拟合

.除了L2正则化(我们上面使用的),还有一个非常实用的正则化方法,dropout 方法

 dropout工作原理:

假设左边的网络存在过拟合,这是dropout所要处理的,dropout会遍历神经网络的每一层,并设置消除神经网络节点的概率,假设,神经网络的每一层的每一个节点都以抛硬币的方式设置概率,每个节点得以消除和保留的概率都是0.5,设置完节点概率,我们会消除一些节点,然后删掉从该节点近处的连线,最后得到一个节点更少,规模更小的网络,然后用反向传播进行训练,右边就是网络节点精简后的一个样本,对于每一个样本,我们都采用精简后的神经网络来训练它,



 Inverted dropout(反向随机失活)的代码实现

第一步中d3返回的是随机矩阵,每个样本和每个隐藏单元,在d3中对应值为1的概率为0.8,里面是false,true,与a3相乘会编程0,1,

                        第二步中a3返回的是过滤d3中所有等于0的元素

  第三步中a3/=keep-prob:  第二步中a[3]减少20%,也就是a[3]中20%的元素被归为0,为了不影响z[4]的期望值,a3/0.8,能够弥补丢失的20%,保持a3的期望值不变


在测试阶段,我们不需要使用dropout,因为我们不希望我们的结果是随机的


6.理解dropout

   从另一角度再次理解为什么dropout有效

   通过dropout,该单元的输入几乎被消除,因此,输出不能依靠任何一个特征,因此该单元的任何一个输入都有可能被随机清除,我不愿意把所有的赌注都放在一个节点上,

不愿意给任何一个输入加入太多的权重,因为它有可能被删除,因此该神经网络将以这种方式传播,并为每个单元的四个输入增加一点权重,通过传播所有权重,dropout会产生收缩权重的平方范数的效果,和之前的L2范式类似,dropout的结果是它会压缩权重,并完成一些预防过拟合的外层正则化,

为了防止过拟合,当某一层的节点数过多(更容易过拟合),设置keep-prob较低,对于最后一层,keep-prob=1,意味着保留其所有的节点

现实中,我们队输入层也不用dropout。


    经验:

         1. 在计算机视觉中,经常存在数据不足的问题,因此经常出现过拟合,所以才会经常使用dropout,

         2.损失函数不被明确定义,因此很难调试来绘制损失函数下降的图,因此先把keep-prob设为1,调试成功后,在加上dropout


7.其他的减少过拟合方法

1.数据扩增(水平翻转,。。。)   

2.early stopping(神经网络在iy迭代过程中已经表现的很好了,就提前停止吧)

8.正则化输入

归一化输入:提高训练速度

首先进行零均值化,再进行归一化方差,


归一化处理后的数据训练的速度更快,能够很快到达损失最小的地方



9.梯度消失于梯度爆炸

梯度消失:

   假设激活函数为(g(z)=z),当w【l】<1时,激活函数y hat的值以指数型迅速变得特别的小,

梯度爆炸:

当w[l]>1时,  激活函数的值以指数形式迅速变大,


从上面可以看出,初始化w方式非常的重要


 








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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值