吴恩达深度学习第2课第1周(上)

1.1数据分集

将所有的训练划分为3个集:训练集,验证集,测试集

验证集:迭代选择出最优的几个算法

测试集如果不需要做无偏估计时,可省略

数据量小622(73)开

大时可以(98/1/1)或者(99.5/0.4/0.1)开

无偏估计,验证你的数据是否遵循同一个分布

1.2 方差,偏差

在神经网络中,偏差指的事训练数据集的表现,方差对应测试集

如果训练集的误差很大,即偏差很大,称之为欠拟合

如果训练集的误差很小,但测试集的误差很大,即低偏差高方差,称之为过拟合(过度照顾了网络中的数据)

正则化会降低方差的同时,也会增大偏差,不过当数据量足够大,对偏差的影响就会小很多了。

解决高方差——正则化,更多的数据,更优的网络架构

解决高偏差——更大的网络结构,更有的网络架构

1.3正则化

正则项加在哪里? ,红色部分就是正则项了

ps: 欧几里得范数的平方 (平面上一些点到圆点距离和)

常用正则化类型:正则化: 正则化:累加绝对值之和

省略了是因为b只是一个参数,比起W的多维参数来说数量太小了,所以忽略了正则化b的影响

正则化参数,一个超参数,通过验证集来调整它,另外初始化时,把它初始化一个比较小的值,防止过拟合。Python代码中用lambd表示,因为lambda是一个保留字段

 

对于神经网络而言(上面是针对logistic回归而言的正则化)

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

例:

正则项对梯度下降的影响:

本来 有了正则项之后

更新时需要多减一个,减快了梯度下降,所以正则化也称为'权重衰退'

1.4为什么正则化能减少过拟合

一个神经网络结构简单会欠拟合,如果太复杂就会过拟合。越大,要控制成本函数J,W较越小,就会使得W中一些值变成0,即把网络中的某些特征值删除掉了,把网络变简单。在过拟合到欠拟合的过程中就会出现低方差,低偏差的理想情况了。

另外一种解释:就是以tanh激活函数为例,当Z值很小时,tanh是不是像一条直线,那么如果Z值很小,那么这一层与上一层成线性关系,使得,这一层可以删除。也让网络变得简单起来。越大,要控制成本函数J,W较越小,就会使得W中一些值趋向于0,造成Z值很小。

执行方面小建议(算法构建建议):cost函数,改为

1.5 dropout(随机失活)正则化

对于每一层都设置一个留存率,每一层的每一个节点都有一个对应的随机值,再根据留存率,选择比较值,让哪些节点失活。即让 乘以0,让第3层第2个节点失活。

代码:

keep_prob就是留存率了。对于结构复杂的层,留存率可设小一点,简单的,就反之

 

注意:在验证集上跑时,记得将dropout给去掉,因为不想在预测时还出现随机,同时在的上一步需要记录一个值,以便在测试的时候不会调整

 

dropout也能达到收缩权重的类似能力

dropout缺点:随机失活使得不会明确定义cost在每次迭代后都会下降,因为J是不可预测的。当需要画出cost的性能表现图时,需要关闭dropout,并keep_prob=1

猜你喜欢

转载自www.cnblogs.com/sytt3/p/9333321.html