吴恩达深度学习第二课第一周视频笔记
第一周 深度学习的实用层面
1.1 训练、验证、测试集
1. train set:训练集 dev set:验证集 test set:测试集
2. 验证集:验证不同的算法,评估那种更有效。/评估不同的模型
注意:1.确保验证集和测试集的数据来自同一分布。
2.没有测试集也不要紧。
另:只有训练集和验证集也称为:训练集和测试集。
1.2 偏差和方差
1. 欠拟合、适度拟合和过拟合
欠拟合(偏差高) 适度拟合 过拟合(方差高)
2. 理解偏差和房差两个关键数据:训练集误差和验证集误差。
假设:训练集误差: 1% 15% 15% 0.5%
验证集误差: 11% 16% 30% 1%
对训练集过拟合,方差高 对训练集欠拟合,偏差高 偏差、方差都高 低方差,低偏差
3. 最优误差:也被称为贝叶斯误差,是指在正常情况下该分类的理想错误率。
4. 训练集错误率:偏差
验证集错误率:方差
1.3 机器学习基础
注意高偏差和高方差是两种不同情况,方法也不同。常用训练集和验证集来诊断、明确哪里出现问题。
1.4 正则化
1. 逻辑回归
最小化损失函数 min J(w,b)
绿色字体给出的部分一般不加,因为w通常是一个高维参数矢量,可以表达高偏差问题,几乎涵盖了所有参数。
2.神经网络
L:层数
采用范数为Frobenius范数(用下标F标出):一个矩阵中所有元素的平方和。
L2正则化有时被称为“权重衰减”,因为不论w[i]是什么,正则化都在使其变小。
1.5 为什么正则化可以减少过拟合
第三个为高方差,
当lambda足够大时,w[l]->0,消除了该层多隐藏单元的影响(单元仍然存在)。
当lambda增大时,w[l]减小,Z[l]=w[l]a[l-1]+b[l]减小,**函数成线性,整个神经网络呈线性,不适用于复杂决策及过度你和数据集的非线性决策边界。
总结:(1)若正则化参数很大,w很小,z也会相对变小,tan(h)在z较小时呈线性状态。
(2) 成本函数J的定义要加上正则化项,这样才会在迭代次数增加时有单调递减性。
1.6 dropout正则化(随机失活正则化)
1.概念:选择一个失活概率(keep-prob),遍历每层的所有单元,则会消除一些节点,删除跟该点有关连线,产生一个小规模的网络。【针对每个样本都会产生一个小规模网络】
2.常用方法:Inverted dropout(反向随机失活) 设L=3
d3:表示一个三层的dropout向量。定义由上图给出。
keep-prob:存活几率(保留该隐藏单元的几率)
a3:第三层经过**函数后得到的向量。
a3 = np.multiply(a3,d3)表示过滤掉a3中在d3中为0的元素。
每个样本和每个隐藏单元在d中的对应值为1的概率都是0.8,为0的概率为0.2(设keep_prob = 0.8)
a3 /= keep-prob 是保证了a3的期望值不变。目的是即使在测试阶段不执行dropout来调整数值范围,**函数的预期也不会发生变化,保证了**函数预期的结果不会发生改变。
在测试阶段不需要采用dropout方法。因为会使得效率变低。
1.7 理解dropout
利用dropout后,神经元不能依靠任何特征(特征值会被随机清除),并传播权重,则dropout将产生收缩权重平方范数的效果。
当权重矩阵较大时,keep-prob值应相对其他层较低,每层可以不同。
总结:当某曾出现过拟合可能性较大时,可使keep-prob值较小,另一种方案是在一些层上用dropout,一些层上keep-prob设为1,在应用dropout的层只能有keep-prob一个超参。
1.8 其余正则化方法
(1)数据扩增。类似图片翻转,截取等。
(2)early stopping
1.9 正则化输入(归一化输入)
步骤:(1)零均值化(sub开头的公式)使数据出现在原点周围。
(2)归一化方差(Nor开头的公式)使输入特征方差都为1 。
作用:使梯度下降效率更高。
注意:要用相同的参数即u和c^2来归一化测试集
1.10 梯度消失与梯度爆炸
图中说明了梯度爆炸与梯度消失的含义,在前向传播中,忽略b的影响,当|w|>1时(设为1.5),如果此时深度很大,则相当于1.5^L,这就是梯度爆炸。相反若|w|<1,就是梯度消失。
1.11 神经网络权重初始化
从z的式子中可以看出在忽略b的情况下,当n越大时,希望wi越小,因此,提出了一个缩小方法。即Var(wi) = 1/n,表达式为1/n[l-1]这是在**函数为sigmoid函数下的方法。当**函数为tanh时,Var(wi) = 1/n,表达式为1/n[l-1],当**函数为Relu函数时,Var(wi) = 2/n,表达式为2/(n[n-1]+n[l] )
1.12 梯度的数值逼近
两张图对梯度的数值逼近做了解释,总的来说,采用双边误差更有效、更准确。g(theta)为f(theta)的导数。
1.13 梯度检验
作用:节省时间。发现backprop过程中的错误。
该图说明了d(theta)与代价函数J的梯度或坡度有什么关系。theta为w和b的组合矩阵。
这张图说明了梯度检验的实施过程
1.14 关于梯度检验实现的注记
1.不要再训练时使用,在调试时使用。
2.当出现两个值差别大时,要查找不同的i值,看是哪个参数导致两个值相差这么多。
3.注意正则项。
4.梯度检验不与dropout同时使用,因为在每次迭代中,dropout会随机消除隐层单元的不同子集,难以计算dropout在梯度下降上的代价函数J。因此dropout可看做一种有话代价函数J的方法。
第五点要自行体会