深度学习第二课程笔记

深度学习第二课程笔记

  1. 实际应用中,创建一个合适的训练集和测试集能大大提高我们的效率。
  2. 训练集中,往往都是制作经精良,分辨率高的图片,而用户的测试中,可能只是随手拍,分辨率及照片质量较低的。
  3. 基于这种情况,我们可以在训练集上训练尝试不同的模型框架,验证集评估这些框架,并且迭代选出适用的模型
  4. 在进行时候,判断方差和偏差,如果过大,则进行模型的调整或者增大训练量,训练时间等等,反复尝试,直到拟合
  • 方差和偏差的理解:
    深度学习第二课程笔记
    第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集;我们看看这些数据,很明显,随着房子面积增大,住房价格的变化趋于稳定或者说越往右越平缓。因此线性回归并没有很好拟合训练数据。
    没有很好地拟合训练数据,我们称之为欠拟合,或者叫做高偏差
    第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据。我们可以看出,若给出一个新的值使之预测,它将表现的很差,是过拟合,虽然能非常好地适应我们的训练集但在新输入变量进行预测时可能会效果不好;
    完美的拟合了训练数据,而不能够很好地预测新数据,我们称之为过拟合,或者叫做高方差

  • 正则化
    正则化的目的:防止过拟合!
    正则化的本质:约束(限制)要优化的参数。

L2 正则化(也被称为权重衰减weight decay),直接在原来的损失函数基础上加上权重参数(w)的平方和(其实就是W矩阵的F范数):深度学习第二课程笔记
这里Lambda是正则化参数,通常使用验证集或者交叉验证来进行调参,在代码实现中,Lambda是python的保留字段,使用Lambd代替。
L1 正则化公式,直接在原来的损失函数基础上加上权重参数的绝对值:
深度学习第二课程笔记
在实际应用中,使用L2正则化比较多。

  • 除了L2正则化,还有一个非常实用的正则化方法“dropout(随机失活)”
  • dropout会遍历网络的每一层,设置消除网络节点的概率,可以想象成这样子降低阶数,根据概率删除结点,简化网络模型,针对每个样本训练规模较小的网络。
    深度学习第二课程笔记
  • 针对dropout通常使用 inverted dropout (反向随机失活)来实现
    深度学习第二课程笔记
    这里d3为Boolean类型,为true or false ,在python代码中,真假直接当1/0进行计算。keep-pob为节点保留概率(不同层数概率也可以不同,节点数量多,容易过拟合,可以适当降低keep-pob),a3/keep-pob,保证了期望不变。
    深度学习第二课程笔记
    在使用dropout之后,成本函数比较难计算,因而一般先这是keep-pob为1,得到J的下降图像后,在打开dropout函数
  • 有的时候,我们的数据量不够,以猫的图片为例,可以选择,将图片进行翻转,使得图片数量增大一倍。还可以进行旋转,剪裁等。
  • 其他正则化方法 ,early stopping ,提早结束J成本函数。
    深度学习第二课程笔记