目录
课程2:改进深度神经网络
部分作业链接
第一章 深度学习的实践领域
设置您的机器学习应用程序
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是输入的神经元个数,也就是
。
- 激活函数使用Relu:
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框架
至此,第二门子课程《改进深度神经网络》已结束。还需要继续夯实。同时加强实践能力。