吴恩达deeplearning.ai课程系列笔记05(下)

#写在最前,deeplearning.ai系列课程相较于之前的Andrew Ng在coursera上2014发布的机器学习课程内容更加丰富。
重要的是此次课程示例代码都是用python来实现,不需要去熟悉octave,对大部分需要用python来学习机器学习的同学来说是个福音!
原课程视频请移步网易云课堂或者coursera上学习。

#本文内容部分来自网络,只为自己学习以及分享供更多的人学习使用微笑

1、Dropout理解

所谓的dropout其实就是随机的减少一些神经元,从而得到一个节点较小,规模较小的网络进行训练。


那么我们如何用代码来实现呢?

以第三层神经元为例,其实只需要短短几行代码就可以

keep_prob = 0.8# 设置神经元保留概率

d3 = np.random.rand(a3.shape[0], a3.shape[1]) < keep_prob

a3 = np.multiply(a3, d3)

a3 /= keep_prob

最后一行代码,是为了保证下一层计算的时候期望值不变。

事实上,dropout也是产生权重收缩的效果。

当keep_prob = 1的时候,就会保留原始所有的神经元,即关闭dropout功能。

回到dropout为什么会对过拟合问题产生比较好的问题上,可以参考另外两篇链接:

知乎

9坑一神的故事O(∩_∩)O


2、其他正则化方法

数据扩增(Data augmentation):通过图片的一些变换,得到更多的训练集和验证集。

简单地说就是在无法增加额外训练数据的情况下,可以对已有数据进行翻转、放大,扭曲等处理得到新的数据来扩充原数据集,从而达到正则化的目的。

#莫名感觉有点投机,囧


还有一种叫做,early stopping:

假设我们训练集的训练误差随着迭代次数递减,曲线如图蓝色曲线所示。这看起来貌似不错,所以接下来我们看看验证集的效果。

验证集误差在刚开始是递减的,但是在箭头所指处发生转向(开始增加),所以我们发现错误就要及时纠正,那我们训练到这就及时停下来。


3、归一化输入


从上图中可以看到,归一化的输入数据分布更加匀称。


归一化的好处是什么呢?从上图可以看出,归一化后的数据,无论从哪个方向开始往中间收敛,路径逗比较短,可以提高训练效率。


4、梯度消失和梯度爆炸


如果W大于1, 由于L足够大,最终会导致激活函数的值将以指数级递增,而当W小于1时,则会导致相反的情况。

这样的情况对于导数也是同样的道理,所以在计算梯度时,根据情况的不同,梯度函数会以指数级递增或者递减,导致训练导数难度上升,梯度下降算法的步长会变得非常非常小,需要训练的时间将会非常长。在梯度函数上出现的以指数级递增或者递减的情况就分别称为梯度爆炸或者梯度消失。

5、参数初始化问题


这里为了得到较小的激活函数值,设置较小的初始化w值,这里称为Xavier initialization。 
对参数进行初始化:

WL = np.random.randn(WL.shape[0],WL.shape[1])* np.sqrt(1/n)
虽然并没有解决梯度爆炸和消失的问题,但在一定程度上可以缓解梯度的问题。


6、梯度的数值逼近与检验


所谓梯度检验,什么意思呢?其实就是利用梯度逼近的方法,因为我们的主要目标是用一个较小的值去检查这个梯度的近似值与我们通过反向传播算法所得到的梯度值进行比较,看其是否在误差范围内,从而来判断我们的结果是否是可靠的。

具体来说,可以看图





如果利用check里面的公式得到的数值较大,那就说明,需要好好检查你的训练过程了。

至少图中欧氏距离为误差平方之和,然后求平方根。如果图中公式完全看不懂的童鞋,建议再回过头去多看看吴老师的视频讲解。

一些suggestion:

  • 训练过程中不要使用梯度检验,只在debug的时候使用,使用完毕关闭梯度检验的功能;
  • 如果梯度检验出现了错误,要检查每一项,找出错误;
  • 记得加上正则化项;
  • 梯度检验不能与dropout同时使用。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AlexJunCpp

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

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

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

打赏作者

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

抵扣说明:

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

余额充值