DeepLearning.AI – 第四周

课程2:改进深度神经网络

部分作业链接

DeepLearning.AI/2-Improving Deep Neural Networks Hyperparameter tuning, Regularization and Optimization/Homework_1 at main · liyouxia920/DeepLearning.AI · GitHub

第一章 深度学习的实践领域

设置您的机器学习应用程序

1. 训练、验证、测试集

  • 当数据量足够大的时候,验证集和测试集占比可以相对降低,如98:1:1甚至更低
  • 数据集比较小,可以用7:3或者6:2:2
  • 经验:确保验证集和测试集中的数据分布相同
  • 如果不需要无偏估计的话,没有测试集也可以。此时,可以把验证集作为测试集。
  • 训练集(train set):用训练集对算法或模型进行训练过程;
  • 验证集(development set):利用验证集或者又称为简单交叉验证集(hold-out cross validation set)进行交叉验证,选择出最好的模型;
  • 测试集(test set):最后利用测试集对模型进行测试,获取模型运行的无偏估计。

2. 偏差和方差

  • 过拟合:高方差
  • 欠拟合:高偏差
  • 基误差
  • 先判断偏差,再判断方差

3. 机器学习的基本准则

  • 减少欠拟合
    • Bigger network
    • Train longer
    • Find a more appropriate nerual network architecture
  • 减少过拟合
    • More data
    • Regularization
    • Find a more appropriate nerual network architecture
  • 平衡

正则化您的神经网络

1. 正则化

  • 解决高方差,因为有时候无法获得更多的数据
  • 以逻辑回归为例
    • L2 正则化
    • L1 正则化
    • lambd表示正则化参数
  • 以神经网络为例
    • 矩阵的F范数
    • L2 权重衰减

2. 正则化可以减少过拟合

  • J每次迭代后单调递减

3. 正规化抛弃 dropout

  • Dropout(随机失活)就是在神经网络的Dropout层,为每个神经元结点设置一个随机消除的概率,对于保留下来的神经元,我们得到一个节点较少,规模较小的网络进行训练。
  • 反向随机失活技术
  • 在测试阶段不要用dropout,因为那样会使得预测结果变得随机。

4. 理解随机失活

  • 可以给某层设置更低的留存率,但会带来更多的超参数
  • dropout用于防止过拟合,经常在计算机视觉领域中使用

5. 其他正则化方法

  • 数据扩增:水平翻转、随机裁剪图片用于增强数据集,做出额外的伪训练样本,开销低,只有计算代价。
  • 可以算作正则化,减少过拟合
  • 早终止法的优势:只需要一次梯度下降。在交叉验证集的误差上升之前的点停止迭代,避免过拟合。这种方法的缺点是无法同时解决bias和variance之间的最优。
  • 正交化

设置您的优化问题

1. 归一化输入

  • 加速训练过程
  • 将均值归0
  • 将方差进行归一化
  • 要用同样的方式归一化训练集和测试集
  • 图像步长更大
  • 均值均为0,方差均为1
  • 输入特征的尺度不同——归一化

2. 梯度消失、爆炸

  • 随机初始化的权重
  • 在梯度函数上出现的以指数级递增或者递减的情况,就分别称为梯度爆炸或者梯度消失。

3. 深度网络权值初始化

  • 利用初始化缓解梯度消失和爆炸问题
  • Xavier initialization
    • 激活函数使用Relu: 公式
    • 激活函数使用tanh: 公式
    • 其中n是输入的神经元个数,也就是 公式

4. 梯度的数值近似

  • 使用双侧差值的结果更精确
  • 双边导数: 公式

5. 梯度检验

  • 检验反向传播的代码
  • 计算近似微分(双向)
  • 不要在训练过程中使用梯度检验,只在debug的时候使用,使用完毕关闭梯度检验的功能;
  • 如果算法的梯度检验出现了错误,要检查每一项,找出错误,也就是说要找出哪个d\theta_{approx}[i]与d\theta的值相差比较大;
  • 不要忘记了正则化项;
  • 梯度检验不能与dropout同时使用。因为每次迭代的过程中,dropout会随机消除隐层单元的不同神经元,这时是难以计算dropout在梯度下降上的代价函数J;
  • 在随机初始化的时候运行梯度检验,或许在训练几次后再进行。

第二章 优化算法

优化算法

  • Mini-batch 梯度下降法
    • 如果训练样本的大小比较小时,如 公式 时 —— 选择batch梯度下降法;
  • 如果训练样本的大小比较大时,典型的大小为: 公式
  • Mini-batch的大小要符合CPU/GPU内存。
    • 指数加权平均
  • 动量(Momentum)梯度下降法
  • RMSprop(root mean square prop)
  • Adam 优化算法
  • 学习率衰减
  • 局部最优问题

第三章 超参数调整、批量归一化和编程框架

  • 机器学习领域,之前利用设置网格点的方法
  • 深度学习领域,随机选择点进行调试
  • scale均匀随机
  • Batch Norm的实现
  • Softmax分类器
  • TensorFlow框架

至此,第二门子课程《改进深度神经网络》已结束。还需要继续夯实。同时加强实践能力。

发表评论