改善深层神经网络第一周 深度学习的实用层面

本周练习可参考https://blog.csdn.net/sdu_hao/article/details/84978559。
主要讨论了参数初始化,正则化,梯度检测。
1.1 train/dev/test sets
神经网络的超参数的选择很多,通常一个领域的专家的经验不能用在另一个领域。
用训练集训练,用交叉验证集dev sets看哪种模型表现最好,最后用训练集得出准确率。
数据规模较小时,可用60 20 20传统比例划分训练集验证集测试集;在大数据时代,可用适当减少验证集、测试集的数量,如有1,000,000个训练样本,可以用10,000当验证集,10,000作为测试集,剩下的全作为训练集。
在这里插入图片描述
另外需要注意训练集与交叉验证集应该是同样的来源。
如果不需要无偏评估,可以不设置测试集,这种情况时有些人会把交叉验证集叫做“测试集”。
在这里插入图片描述

1.2 偏差/方差
在这里插入图片描述
这些分析都是基于假设预测的,假设人眼辨别的错误率接近0%,一般来说,最优误差也被称作贝叶斯误差。
在这里插入图片描述
紫色的线既有高偏差又有高方差。

1.3 机器学习基础
在这里插入图片描述

1.4 正则化
python中lambda是保留字符,所以正则化参数要写成lambd。常用L2正则化。
在这里插入图片描述
||w[L]||F叫做弗罗贝尼乌斯范数,用下标F标注,表示一个矩阵中所有元素的平方和。L2范数正则化也叫作“权重衰减”。
在这里插入图片描述

1.5 为什么正则化可以减少过拟合 (不看 )

1.6 Dropout随机失活正则化
除了L2正则化,还有一种非常实用的正则化方法–Dropout。
遍历网络的每一层,并设置消除神经网络中节点的概率。以抛硬币的方式,保留一类节点集合,删除其他节点集合。
实现方法:inverted dropout反向随机失活。例如l=3
d3表示第三层的Dropout向量,keep-prob表示保留某个隐藏单元的概率,这里设为0.8,即消除任意一个隐藏单元的概率是0.2。python中d3是一个布尔型数组,值为true或false。
a3=np.multiply(a3, d3)是元素相乘,作用是过滤d3中所有等于0的元素。
绿色框起来的部分使不管keep-prob的值为多少,确保a3的期望值不变。
在这里插入图片描述
在这里插入图片描述
测试阶段不使用Dropout。

1.7 理解Dropout
某层的keep-prob为1表示不删除这层的节点,当w的维度很大时可以适当减小keep-prob的值来减小过拟合。
输入层的keep-prob要等于或接近1.
计算机视觉领域中由于样本量不够,常常过拟合,常常用dropout方法,当不过拟合时就不需要用了。
用drop时代价函数J失去了它本身的意义,我们也就失去了这一debug的工具。所以应该关闭dropout函数,将keep-prop的值设为1,运行代码,确保J函数单调递减,然后再打开dropout函数。
在这里插入图片描述

1.8 其他正则化方法
法一:扩充数据量:如水平翻转图片或随意放大后裁剪,不如独立的新的猫的照片好,这些假数据没有那么多信息,这种减少过拟合比较廉价。
在这里插入图片描述
法二:early stopping 好处是只需要运行一次梯度下降,不像L2正则化要尝试λ很多值。
在这里插入图片描述

1.9 正归化输入
如果输入特征取值不在一个scale,那归一化特征值就很重要了。
在这里插入图片描述
训练集与测试集用相同的μ和σ2
在这里插入图片描述

1.10 梯度消失与梯度爆炸
在这里插入图片描述
对于一个深度神经网络,y的值将爆炸式增长(w只比1大一点时)或指数级下降(w只比1小一点时),训练难度会变大,梯度下降的步长会非常小,花费很长时间来学习。缓解这个问题的办法:下一节视频的初始化权重。

1.11 神经网络的权重初始化
sigmoid和tanh激活函数权重初始化的方法:
在这里插入图片描述

1.12 梯度的数值逼近
梯度检测gradient checking的作用是可以确保backprop正确实施,可以节省很多时间帮我们发现backprop的bug
先了解一下双边误差,也是导数的官方定义,就是下面左边的式子,比单边误差更接近真实的导数。
在这里插入图片描述

1.13 梯度检验
梯度检验:
检查欧式距离,即误差平方和,然后求平方根。比值如果比10-7小,就证明没有bug了。
在这里插入图片描述
在这里插入图片描述

1.14 关于梯度检验实现的注记

  1. 不要在训练中使用梯度检测,他只用于调试。
  2. 如果算法的梯度检测失败了,要检查所有项找bug。
  3. 梯度检测时如果使用正则化,记得都要包括正则化。
  4. 梯度检测不能与dropout同时使用。建议关闭dropout,用梯度检测双重检测,确定没有dropout的时候算法是正确的,再打开dropout。
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值