吴恩达《深度学习》第二门课(1)深度学习的实用层面

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

(1)深度学习是一个按照下图进行循环的快速迭代的过程,往往需要多次才能为应用程序找到一个称心的神经网络。

(2)在机器学习中,通常将样本分成训练集,验证集和测试集三部分,数据规模相对较小,适合传统的划分比例(如6:2:2),数据集规模比较大的,验证集和测试集要小于数据总量的20%或者10%甚至更低。

(3)交叉验证集和测试集务必来自同分布。

(4)有时候只有训练集和验证集,没有独立的测试集(将无法提供无偏性能评估),这时人们也会把验证集称为测试集。

1.2偏差,方差(Bias/Varicance)

(1)以下三个图分别表示欠拟合(高偏差),适度拟合,过拟合(高方差):

(2)最优误差也称为贝叶斯误差,本节中假设最有误差为零(如在图像分类中人可以辨别出所有图像的类别)。

(3)训练误差减去左右误差为偏差,结果大说明偏差大;验证集误差减去训练误差为方差,结果大说明偏差大。

(4)是存在高偏差高方差的情况的,如下图,直线导致高偏差,局部过拟合导致高方差:

1.3机器学习基础

(1)偏差和方差是两种完全不同的情况,有分别对应的处理方法,不要盲目的使用一些策略。

(2)在深度学习时代,只要正则适度,通常构建一个更大的网络便可以在不影响方差的同时减少偏差,而采用更多数据通常可以在不过多影响偏差的同时减少方差。

1.4正则化

(1)过拟合常用的两种解决方法:添加正则化项(容易实现),增加更多数据(有时候很难得到更多数据)。

(2)L1正则化往往会使得W最终稀疏,即w向量中很多是0,事实证明它并没有减少太多的存储空间,所以现在越来越多人还是使用L2正则。

(3)L2正则式子如下:

其中被定义为矩阵中所有元素的平方求和。

(4)正则化常常被称为“权重衰减”,是因为正则项会试图让W变得更小,实际上相当于给矩阵W乘以(1-αλ/m),如下所示:

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

(1)第一种直观理解,首先一个很复杂的神经网络(过拟合):

然后添加正则项,使λ,这时候很多权重变成0,然后相当于消除了很多隐藏单元,复杂网络变成很简单的网络(欠拟合),从过拟合到欠拟合中间会经历最优拟合的情况,如下图所示:

(2)第二种理解,W实际不会变成零,只会变得非常小,这时候z也会变得非常小,那么根据以下的激活函数,将会在中间线性的地方活动,那么相当与经过很多次线性变换,所以这也导致网络变得简答,消除了过拟合情况。

1.6dropout正则化

(1)原网络如下:

(2)设置keep-prob为0.8(相当于一个d[l]向量中80%为1,百分之20%为零),这个向量与某一层的输出a[l]相乘(与零相乘自然输出就为零了),其网络示意图如下(图中是设置为0.5):

(3)在上一步乘积之后的值又会除以0.8,如下面的公式,这样可以保证均值不会发生改变(因为单元数减少会导致后面一层的输入减少,通过除以减少量来维持不变)

(4)测试的时候不使用dropout。

1.7理解dropout

(1)直观上理解:不要依赖于任何一个特征,因为该单元的输入可能随时被清除,或者说该单元的输入也都可能被随机清除,因此不愿意在任何一个输入单元上加上太多的权重,会把权重分摊给其他单元,这其实产生了收缩权重的平方范数的效果。

(2)dropout被正式的作为一种正则化的替代方式,L2对不同权重的衰减是不同的,他取决于倍增的激活函数的大小。

(3)不同层之间可以使用不同的keep-prob,一般矩阵W越大的层,越容易导致过拟合,所以keep-prob的值设置的越低(输入层一般为1),如下所示:

(4)计算机视觉中常用dropout,因为像素(特征)太多,数据量太少,常常导致过拟合。

(5)dropout的一大缺点就是代价函数J不再明确定义,每次迭代,都会随机移除一些节点,或者说某种程度上很难准确计算。

1.8其他正则化方法

(1)数据增强:旋转、扭曲、任意裁剪放大等。

(2)early stopping:在交叉验证集代价函数(误差率等)下降又上升的拐点处停止,如下图所示:

early stoping的主要缺点就是控制w不太大的时候,也终止的优化代价函数J,而不能向其他方式一样:一方面不断的使代价函数变小,用另外的方式来控制使其不发生过拟合。

1.9归一化输入

未完成,待续……

猜你喜欢

转载自www.cnblogs.com/ys99/p/9292100.html
今日推荐