吴恩达深度学习第二课第一周视频笔记

第一周 深度学习的实用层面

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的方法。

   第五点要自行体会