Andrew-Coursera-DL课程-笔记part2-1(Practical aspects of Deep Learning)

来源:互联网 发布:华族经典 知乎 编辑:程序博客网 时间:2024/06/03 20:51

Setting up your Machine Learning Application

  1. Train/Dev/Test sets
    总体数量在1000左右时,6:2:2的比例分配Train/Dev/Test sets大小;
    总体数量在一百万以上时,98:1:1的比例分配Train/Dev/Test sets大小;
    三个数据集需来自相同的分布,Dev/Test数据集大小2000-10000即可,没有test-sets,只有Dev-sets也是可以。
  2. Bias/Variance

    Trainset error 1% 15% 15% 0.5% Dev set error 11% 16% 30% 1% high var high bias high bias&high var low bias &low var

    训练集有high-bias表现时,延长训练时间,增大网络结构
    验证集有high-var表现时,需要更多的数据和正则化处理

Regularizing your neural network

  1. Regularization
    L1正则 L2正则

    在机器学习或者模式识别中,会出现overfitting,而当网络逐渐overfitting时网络权值逐渐变大,为了避免出现overfitting,会给误差函数添加一个惩罚项,其用来惩罚大的权值。
    weight decay(权值衰减惩罚项)使得权值收敛到较小的绝对值,而惩罚大的权值。因为大的权值会使得系统出现过拟合,降低其泛化性能。

  2. Why regularization reduces overfitting?

    L1正则项是为了使得那些原先处于零(即|w|≈0)附近的参数w往零移动,使得部分参数为零,从而降低模型的复杂度(模型的复杂度由参数决定),从而防止过拟合,提高模型的泛化能力。
    L2正则项起到使得参数w变小加剧的效果,但是为什么可以防止过拟合呢?如下图:tanh函数,在0值附近表现为linear,在远离0值的地方更加复杂。一个通俗的理解便是:更小的参数值w意味着模型的复杂度更低,对训练数据的拟合刚刚好(奥卡姆剃刀),不会过分拟合训练数据,从而使得不会过拟合,以提高模型的泛化能力。

  3. Dropout Regularization
    神经网络中预防过拟合的方法

  4. Understanding Dropout
    Intuition:Can’t rely on any one features, so have to spread out weights.
    不能依赖于某一个特征,所以需要把权重传播。
    和L2正则相似,可以防止过拟合,方式不一样。
    dropout 也可以应用在input层,但是一般很少这么用,及时用也是设置成0.9,而不可能设置成0.5,因为如果这样,就会丢掉一大半的特征。
    在计算机视觉中很常用。
  5. Other regularization methods
    除了L2和dropout以外,数据集增强(data augument):图像左右反转、旋转、扭曲生成新的训练集;stop early等.

Setting up your optimization problem

  1. Normalizing inputs

    为什么要标准化处理,经过标准化处理后保证所有的特征都在一个数量级, cost function 的优化变得更加简单和快速
  2. Vanishing / Exploding gradients
    在很深的网络中,梯度会指数级的增加或减小,即产生梯度爆炸或梯度消失的现象
  3. Weight Initialization for Deep Networks

    如果把所有的weights初始值设置为0会导致所有的hidden层计算是完全重复的(forward propagation和backward propagation时,值完全相同),所以需要随机初始化。随机初始化时比较常见的会选择服从正态分布的随机值。

    为什么随机值要选的很小比如0.01,而不可以选100之类的数,因为如果weight设为100,z值会很大,经过sigmod后,梯度或者斜率会变得很小,不利于backward propagation。
    除了随机初始化,练习里还提到了 He initialization,随机数的范围是上一层网络的节点数量,sqrt(2./layers_dims[l-1])。比如正常是np.random.randn(..,..) by 10,在这里是 2/(dimension of the previous layer)^0.5.
    He initialization works well for networks with ReLU activations.

  4. Numerical approximation of gradients

  5. Gradient checking

    梯度校验的数值校验公式:
    g(θ)≈J(θ+ϵ)−J(θ−ϵ)/2ϵ,常将 ϵ 设为一个很小的常量,比如 10−4 数量级
  6. Gradient Ghecking Implementation Notes
阅读全文
0 0
原创粉丝点击