深度学习笔记(6) 实践层面(一)

  • 1. 训练,验证,测试集
  • 2. 偏差,方差
  • 3. 学习曲线

1. 训练,验证,测试集

训练神经网络时,需要做出很多决策,例如:
神经网络分多少层;每层含有多少个隐藏单元;学习速率是多少;各层采用哪些激活函数。

创建新应用的过程中,不可能从一开始就准确预测出这些信息和其他超级参数。

应用型机器学习是一个高度迭代的过程,通常在项目启动时:
会先有一个初步想法,比如构建一个含有特定层数,隐藏单元数量或数据集个数等等的神经网络
然后编码,并尝试运行这些代码,通过运行和测试得到该神经网络或这些配置信息的运行结果
可能会根据输出结果重新完善想法,改变策略,或者为了找到更好的神经网络不断迭代更新方案

于是选择模型不在仅仅通过测试集来选择了,而是:

  • 利用训练集的数据代入每一个多项式模型
  • 用交叉验证集的数据找出最小误差的多项式模型
  • 最后在测试集中再找出相对较少误差的那个模型

应用深度学习是一个典型的迭代过程,需要多次循环往复,才能为应用程序找到一个称心的神经网络
因此循环该过程的效率是决定项目进展速度的一个关键因素

而创建高质量的训练数据集,验证集和测试集也有助于提高循环效率
通常会将这些数据划分成几部分:

  1. 一部分作为训练集
  2. 一部分作为简单交叉验证集,也叫验证集(dev set)
  3. 最后一部分则作为测试集

开始对训练执行算法,通过验证集运算验证选择最好的模型,经过充分验证选定最终模型,最后在测试集进行评估

在机器学习发展的小数据量时代,常见做法是将所有数据三七分:70%训练集,30%测试集
如果没有明确设置验证集:训练集占60%,验证集和测试集各占20%

如果只有100条或者1万条数据,上述比例划分是合理的
这是前几年机器学习领域普遍认可的最好的实践方法

但是在大数据时代,数据量可能是百万级别
那么验证集和测试集占数据总量的比例会趋向于变得更小
因为验证集的目的就是验证不同的算法,并迅速判断出哪种算法更有效
可能不需要拿出20%的数据作为验证集

比如:有100万条数据,那么取1万条数据便足以进行评估,找出其中表现最好的1-2种算法

  • 对于百万数据:训练集占98%,验证集和测试集各占1%
  • 对于过百万数据:训练集占99.5%,验证集和测试集各占0.25%,或者验证集占0.4%和测试集占0.1%

根据经验,要确保验证集和测试集的数据来自同一分布
如果不需要无偏评估算法性能,设置了一个训练集和一个测试集,把验证集数据过度拟合到了测试集中,其实是只有一个训练集和一个验证集,而没有独立的测试集,称其为“训练验证集”,而不是“训练测试集”


2. 偏差,方差


假设这就是数据集,如果给这个数据集拟合一条直线,可能得到一个逻辑回归拟合,但它并不能很好地拟合该数据,这是高偏差(high bias)的情况,称为“欠拟合”(underfitting)

相反的如果拟合一个非常复杂的分类器,比如深度神经网络或含有隐藏单元的神经网络,可能就非常适用于这个数据集,但是这看起来也不是一种很好的拟合方式分类器高方差(high variance),数据过拟合(overfitting)
在两者之间,可能还有一些像图中这样的,复杂程度适中,数据拟合适度的分类器,这个数据拟合看起来更加合理,称之为“适度拟合”(just right)是介于过度拟合和欠拟合中间的一类


3. 学习曲线


假设用 hθ (x)=θ01 x+θ2 x2 去拟合数据
当数据只有几个的时候,拟合效果那肯定的非常好的

但是,当数据越来越多,假设函数因为多项式太少就不能很好地拟合数据了
所以,训练集的误差 JJJtrain(Θ) 会随着数据的增多而增大,如上图蓝色的曲线

但是对于交叉验证集呢?
因为一开始只有几个数据,那么在训练集拟合出来的参数就有很大的可能不适合交叉验证集
所以在数据很小的情况下其误差是很大的
但是随着数据的慢慢增多,虽然个别的数据拟合不上
但是整体的拟合效果那肯定比只有几个数据的时候好了
所以其整体误差是逐步下降的,如上图粉色的曲线


当数据存在高偏差也就是欠拟合的时候
即使数据再继续增多也无补于事
所以其误差会趋于一个平衡的位置,而且 JJJtrain(Θ) 和 JJJcv(Θ) 的误差都会很大
所以,当数据存在欠拟合的问题,选用更多的训练样本是没有办法解决问题的

当数据存在高方差也就是过拟合的时候
随着数据的增多,过拟合所以在训练集基本能完美拟合其数据
所以训练集的误差虽然会上升,但是其幅度是非常缓慢的
在交叉验证集也一样,所以过拟合的时候其图像如上
在 JJJtrain(Θ) 和 JJJcv(Θ) 之间有一大段空隙
所以,当数据存在过拟合的现象,选用更多的样本有利于解决这个问题


对于出现偏差,方差的情况,有以下的方法解决:

场合 方法
高偏差(欠拟合) 采集更多的特征、高次多项式回归、降低正则化参数 λ
高方差(过拟合) 采集更多的样本、降低特征的维度、增大正则化参数 λ

参考:

《神经网络和深度学习》视频课程


相关推荐:

深度学习笔记(5) 深层神经网络
深度学习笔记(4) 浅层神经网络
深度学习笔记(3) 向量化逻辑回归
深度学习笔记(2) 神经网络基础
深度学习笔记(1) 深度学习简介


谢谢!

深度学习笔记(6) 实践层面(一)相关推荐

  1. 深度学习笔记(8) 实践层面(三)

    深度学习笔记(8) 实践层面(三) 1. 归一化 / 标准化输入 2. 权重初始化 3. 梯度检验 1. 归一化 / 标准化输入 训练神经网络,特征必须要在0到1之间 此时就只能加速训练的方法就是归一 ...

  2. 深度学习笔记(7) 实践层面(二)

    深度学习笔记(7) 实践层面(二) 1. 正则化 2. dropout 正则化 3. 其他正则化方法 1. 正则化 深度学习可能存在过拟合问题--高方差,在确定模型之后有两个解决方法 正则化 准备更多 ...

  3. 深度学习笔记(二)图像分类实践

    深度学习笔记(二)图像分类实践 使用keras中的ResNet模型进行图像处理记忆预测 import keras #import tensorflow from keras.applications. ...

  4. 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)

    今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...

  5. 33万字!深度学习笔记在线版发布!

    吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在 github 开源,为满足手机阅读的需要,我将笔记做成了在线版,可以在 ...

  6. 深度学习笔记(13) Softmax分类

    深度学习笔记(13) Softmax分类 1. Softmax 回归 2. 练一个Softmax分类器 1. Softmax 回归 有一种logistic回归的一般形式,叫做 Softmax回归 能在 ...

  7. 深度学习笔记(12) Batch归一化网络

    深度学习笔记(12) Batch归一化网络 1. Batch归一化 2. 激活值归一化 3. 特殊情况不归一化 4. mini-batch上的Batch归一化 1. Batch归一化 Batch归一化 ...

  8. 深度学习笔记(11) 超参数调试

    深度学习笔记(11) 超参数调试 1. 选择合适的范围 2. 超参数调试实践 1. 选择合适的范围 关于训练深度最难的事情之一是要处理的参数的数量 学习速率 a 到 Momentum(动量梯度下降法) ...

  9. 深度学习笔记(10) 优化算法(二)

    深度学习笔记(10) 优化算法(二) 1. Adam 优化算法 2. 学习率衰减 3. 局部最优的问题 1. Adam 优化算法 Adam代表的是 Adaptive Moment Estimation ...

最新文章

  1. 面向药物发现的深度图学习
  2. python中如何定义颜色_Python图像处理之颜色的定义与使用分析
  3. gevent开发http服务器与tcp服务器(WSGIServer、StreamServer)
  4. 服务器每天产生1t文件,编写自己的服务器 - osc_popfjd1t的个人空间 - OSCHINA - 中文开源技术交流社区...
  5. 面向串口编程java_Java串口编程例子
  6. Java cache类型_为什么有些Java 类方法中要cache类变量
  7. 中科视拓获千万pre-A轮融资,想做的不仅仅是人脸识别
  8. 【动态规划】路径dp:蓝桥2020: 数字三角形
  9. DealComment (注释处理工具)
  10. 【优化算法】混沌游戏优化 (CGO)【含Matlab源码 1010期】
  11. 【手势识别】基于matlab PCA+LDA手语检测识别【含Matlab源码 1551期】
  12. 《集成电路制造工艺与工程应用》目录
  13. 数字图像处理【经典女郎 Lena 图片】的使用由来~(学习之余来一个调味剂啦)
  14. itextpdf 给pdf文档添加图片
  15. 软件工程基础篇(五):结构化程序分析SA+结构化程序设计SP+详细设计
  16. 曾经排名第一的安全软件,为啥会变成流氓软件?
  17. html 怎么让背景图铺满整个页面
  18. 64位ubuntu使用gcc -m32报错
  19. 请检查下面的程序,找出其中的错误并改正,然后上机调试,使之能正常运行,从键盘输入,检查输出
  20. 任意四面体的外接球的半径(克列尔(A.L.Crelle)公式)

热门文章

  1. CCNET自动构建之路
  2. 美国人教你这样用Google,你真的会变特工!
  3. uva 10594(最小费用最大流)
  4. 桂林理工大学计算机研究调剂,2018年桂林理工大学考研调剂信息
  5. c语言编程题一空几分,C语言编程规范试题
  6. js中的Array数组清空
  7. ospf lesson 3
  8. React 的慢与快:优化 React 应用实战
  9. go.js节点字体设置
  10. 基于WDF的PCI/PCIe接口卡Windows驱动程序(3)- 驱动程序代码(头文件)