深度学习笔记(6) 实践层面(一)
深度学习笔记(6) 实践层面(一)
- 1. 训练,验证,测试集
- 2. 偏差,方差
- 3. 学习曲线
1. 训练,验证,测试集
训练神经网络时,需要做出很多决策,例如:
神经网络分多少层;每层含有多少个隐藏单元;学习速率是多少;各层采用哪些激活函数。
创建新应用的过程中,不可能从一开始就准确预测出这些信息和其他超级参数。
应用型机器学习是一个高度迭代的过程,通常在项目启动时:
会先有一个初步想法,比如构建一个含有特定层数,隐藏单元数量或数据集个数等等的神经网络
然后编码,并尝试运行这些代码,通过运行和测试得到该神经网络或这些配置信息的运行结果
可能会根据输出结果重新完善想法,改变策略,或者为了找到更好的神经网络不断迭代更新方案
于是选择模型不在仅仅通过测试集来选择了,而是:
- 利用训练集的数据代入每一个多项式模型
- 用交叉验证集的数据找出最小误差的多项式模型
- 最后在测试集中再找出相对较少误差的那个模型
应用深度学习是一个典型的迭代过程,需要多次循环往复,才能为应用程序找到一个称心的神经网络
因此循环该过程的效率是决定项目进展速度的一个关键因素
而创建高质量的训练数据集,验证集和测试集也有助于提高循环效率
通常会将这些数据划分成几部分:
- 一部分作为训练集
- 一部分作为简单交叉验证集,也叫验证集(dev set)
- 最后一部分则作为测试集
开始对训练执行算法,通过验证集运算验证选择最好的模型,经过充分验证选定最终模型,最后在测试集进行评估
在机器学习发展的小数据量时代,常见做法是将所有数据三七分: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)=θ0+θ1 x+θ2 x2 去拟合数据
当数据只有几个的时候,拟合效果那肯定的非常好的
但是,当数据越来越多,假设函数因为多项式太少就不能很好地拟合数据了
所以,训练集的误差 JJJtrain(Θ) 会随着数据的增多而增大,如上图蓝色的曲线
但是对于交叉验证集呢?
因为一开始只有几个数据,那么在训练集拟合出来的参数就有很大的可能不适合交叉验证集
所以在数据很小的情况下其误差是很大的
但是随着数据的慢慢增多,虽然个别的数据拟合不上
但是整体的拟合效果那肯定比只有几个数据的时候好了
所以其整体误差是逐步下降的,如上图粉色的曲线
当数据存在高偏差也就是欠拟合的时候
即使数据再继续增多也无补于事
所以其误差会趋于一个平衡的位置,而且 JJJtrain(Θ) 和 JJJcv(Θ) 的误差都会很大
所以,当数据存在欠拟合的问题,选用更多的训练样本是没有办法解决问题的
当数据存在高方差也就是过拟合的时候
随着数据的增多,过拟合所以在训练集基本能完美拟合其数据
所以训练集的误差虽然会上升,但是其幅度是非常缓慢的
在交叉验证集也一样,所以过拟合的时候其图像如上
在 JJJtrain(Θ) 和 JJJcv(Θ) 之间有一大段空隙
所以,当数据存在过拟合的现象,选用更多的样本有利于解决这个问题
对于出现偏差,方差的情况,有以下的方法解决:
场合 | 方法 |
---|---|
高偏差(欠拟合) | 采集更多的特征、高次多项式回归、降低正则化参数 λ |
高方差(过拟合) | 采集更多的样本、降低特征的维度、增大正则化参数 λ |
参考:
《神经网络和深度学习》视频课程
相关推荐:
深度学习笔记(5) 深层神经网络
深度学习笔记(4) 浅层神经网络
深度学习笔记(3) 向量化逻辑回归
深度学习笔记(2) 神经网络基础
深度学习笔记(1) 深度学习简介
谢谢!
深度学习笔记(6) 实践层面(一)相关推荐
- 深度学习笔记(8) 实践层面(三)
深度学习笔记(8) 实践层面(三) 1. 归一化 / 标准化输入 2. 权重初始化 3. 梯度检验 1. 归一化 / 标准化输入 训练神经网络,特征必须要在0到1之间 此时就只能加速训练的方法就是归一 ...
- 深度学习笔记(7) 实践层面(二)
深度学习笔记(7) 实践层面(二) 1. 正则化 2. dropout 正则化 3. 其他正则化方法 1. 正则化 深度学习可能存在过拟合问题--高方差,在确定模型之后有两个解决方法 正则化 准备更多 ...
- 深度学习笔记(二)图像分类实践
深度学习笔记(二)图像分类实践 使用keras中的ResNet模型进行图像处理记忆预测 import keras #import tensorflow from keras.applications. ...
- 下载量过百万的吴恩达机器学习和深度学习笔记更新了!(附PDF下载)
今天,我把吴恩达机器学习和深度学习课程笔记都更新了,并提供下载,这两本笔记非常适合机器学习和深度学习入门.(作者:黄海广) 0.导语 我和同学将吴恩达老师机器学习和深度学习课程笔记做成了打印版,放在g ...
- 33万字!深度学习笔记在线版发布!
吴恩达老师的深度学习课程(deeplearning.ai),可以说是深度学习入门的最热门课程,我和志愿者编写了这门课的笔记,并在 github 开源,为满足手机阅读的需要,我将笔记做成了在线版,可以在 ...
- 深度学习笔记(13) Softmax分类
深度学习笔记(13) Softmax分类 1. Softmax 回归 2. 练一个Softmax分类器 1. Softmax 回归 有一种logistic回归的一般形式,叫做 Softmax回归 能在 ...
- 深度学习笔记(12) Batch归一化网络
深度学习笔记(12) Batch归一化网络 1. Batch归一化 2. 激活值归一化 3. 特殊情况不归一化 4. mini-batch上的Batch归一化 1. Batch归一化 Batch归一化 ...
- 深度学习笔记(11) 超参数调试
深度学习笔记(11) 超参数调试 1. 选择合适的范围 2. 超参数调试实践 1. 选择合适的范围 关于训练深度最难的事情之一是要处理的参数的数量 学习速率 a 到 Momentum(动量梯度下降法) ...
- 深度学习笔记(10) 优化算法(二)
深度学习笔记(10) 优化算法(二) 1. Adam 优化算法 2. 学习率衰减 3. 局部最优的问题 1. Adam 优化算法 Adam代表的是 Adaptive Moment Estimation ...
最新文章
- 面向药物发现的深度图学习
- python中如何定义颜色_Python图像处理之颜色的定义与使用分析
- gevent开发http服务器与tcp服务器(WSGIServer、StreamServer)
- 服务器每天产生1t文件,编写自己的服务器 - osc_popfjd1t的个人空间 - OSCHINA - 中文开源技术交流社区...
- 面向串口编程java_Java串口编程例子
- Java cache类型_为什么有些Java 类方法中要cache类变量
- 中科视拓获千万pre-A轮融资,想做的不仅仅是人脸识别
- 【动态规划】路径dp:蓝桥2020: 数字三角形
- DealComment (注释处理工具)
- 【优化算法】混沌游戏优化 (CGO)【含Matlab源码 1010期】
- 【手势识别】基于matlab PCA+LDA手语检测识别【含Matlab源码 1551期】
- 《集成电路制造工艺与工程应用》目录
- 数字图像处理【经典女郎 Lena 图片】的使用由来~(学习之余来一个调味剂啦)
- itextpdf 给pdf文档添加图片
- 软件工程基础篇(五):结构化程序分析SA+结构化程序设计SP+详细设计
- 曾经排名第一的安全软件,为啥会变成流氓软件?
- html 怎么让背景图铺满整个页面
- 64位ubuntu使用gcc -m32报错
- 请检查下面的程序,找出其中的错误并改正,然后上机调试,使之能正常运行,从键盘输入,检查输出
- 任意四面体的外接球的半径(克列尔(A.L.Crelle)公式)