深度学习中的验证集和超参数简介
大多数机器学习算法都有超参数,可以设置来控制算法行为。超参数的值不是通过学习算法本身学习出来的(尽管我们可以设计一个嵌套的学习过程,一个学习算法为另一个学习算法学出最优超参数)。
在多项式回归示例中,有一个超参数:多项式的次数,作为容量超参数。控制权重衰减程度的λ是另一个超参数。
有时一个选项被设为学习算法不用学习的超参数,是因为它太难优化了。更多的情况是,该选项必须是超参数,因为它不适合在训练集上学习。这适用于控制模型容量的所有超参数。如果在训练集上学习超参数,这些超参数总是趋向于最大可能的模型容量,导致过拟合。
和训练数据相同分布的样本组成的测试集,它可以用来估计学习过程完成之后的学习器的泛化误差。其重点在于测试样本不能以任何形式参与到模型的选择中,包括设定超参数。基于这个原因,测试集中的样本不能用于验证集。因此,我们总是从训练集中构建验证集。特别地,我们将训练数据分成两个不相交的子集。其中一个用于学习参数。另一个作为验证集,用于估计训练中或训练后的泛化误差,更新超参数。用于学习参数的数据子集通常仍被称为训练集,尽管这会和整个训练过程用到的更大的数据集相混。用于挑选超参数的数据子集被称为验证集(validation set)。通常,80%的训练数据用于训练,20%用于验证。由于验证集是用来”训练”超参数的,尽管验证集的误差通常会比训练集误差小,验证集会低估泛化误差。所有超参数优化完成之后,泛化误差可能会通过测试集来估计。
交叉验证:将数据集分成固定的训练集和固定的测试集后,若测试集的误差很小,这将是有问题的。一个小规模的测试集意味着平均测试误差估计的统计不确定性,使得很难判断算法A是否比算法B在给定的任务上做的更好。当数据集有十万计或者更多的样本时,这不会是一个严重的问题。当数据集太小时,也有替代方法允许我们使用所有的样本估计平均测试误差,代价是增加了计算量。这些过程是基于在原始数据上随机采样或分离出的不同数据集上重复训练和测试的想法。最常见的是k-折交叉验证过程。将数据集分成k个不重合的子集。测试误差可以估计为k次计算后的平均测试误差。在第i次测试时,数据的第i个子集用于测试集,其它的数据用于训练集。带来的一个问题是不存在平均误差方差的无偏估计,但是我们通常会使用近似来解决。
目前超参数往往只能人工基于经验来设置,以及采用暴力枚举的方式来尝试以寻求最优的超参数。
所谓超参数,就是机器学习模型里面的框架参数,比如聚类方法里面类的个数,或者话题模型里面话题的个数等等,都称为超参数。它们跟训练过程中学习的参数(权重)是不一样的,通常是手工设定,不断试错调整,或者对一系列穷举出来的参数组合一通枚举(叫做网格搜索)。
常用的超参数:
(1)、learning rate:学习率决定了权值更新的速度,设置得太大会使结果超过最优值,太小会使下降速度过慢。学习率是指在优化算法中更新网络权重的幅度大小。学习率可以是恒定的、逐渐降低的、基于动量的或者是自适应的,采用哪种学习率取决于所选择优化算法的类型,如SGD、Adam、Adgrad、AdaDelta、RMSProp等算法。
(2)、weight decay(权值衰减):在实际应用中,为了避免网络的过拟合,必须对价值函数(cost function)加入一些正则项。在机器学习或者模式识别中,会出现overfitting,而当网络逐渐overfitting时网络权值逐渐变大,因此,为了避免出现overfitting,会给误差函数添加一个惩罚项,常用的惩罚项是所有权重的平方乘以一个衰减常量之后。其用来惩罚大的权值。weight decay的使用既不是为了提高收敛精确度也不是为了提高收敛速度,其最终目的是防止过拟合。在损失函数中,weight decay是放在正则项(regularization)前面的一个系数,正则项一般指示模型的复杂度,所以weight decay的作用是调节模型复杂度对损失函数的影响,若weight decay很大,则复杂的模型损失函数的值也越大。
(3)、momentum(动量):动量来源于牛顿定律,基本思想是为了找到最优加入”惯性”的影响。mementum是梯度下降法中一种常用的加速技术。总能得到更好的收敛速度。
(4)、learing rate decay:每次迭代的时候减少学习率的大小。
(5)、迭代次数:迭代次数是指整个训练集输入到神经网络进行训练的次数。当测试错误率和训练错误率相差较小时,可认为当前的迭代次数是合适的,否则需继续增大迭代次数,或调整网络结构。
(6)、权重初始化:在网络中,通常会使用小随机数来初始化各网络层的权重,以防止产生不活跃的神经元,但是设置过小的随机数可能生成零梯度网络。一般来说,均匀分布方法效果较好。
(7)、Dropout方法:作为一种常用的正则化方式,加入Dropout层可以减弱深层神经网络的过拟合效应。该方法会按照所设定的概率参数,在每次训练中随机地不激活一定比例的神经单元。该参数的默认值为0.5.
自动超参数优化算法:
(1)、网格搜索:如果有三个或更少的超参数时,常见的超参数搜索方法是网格搜索。对于每个超参数,使用者选择一个较小的有限值集去探索。然后,这些超参数笛卡尔乘积得到一组组超参数,网格搜索使用每组超参数训练模型。挑选验证集误差最小的超参数作为最好的超参数。
(2)、随机搜索:如果超参数较多,首先,我们为每个超参数定义一个边缘分布,在这些边缘分布上进行搜索。
以上内容主要摘自:《深度学习中文版》 和 网络资料整理。
GitHub: https://github.com/fengbingchun/NN_Test
深度学习中的验证集和超参数简介相关推荐
- 深度学习——训练时碰到的超参数
深度学习--训练时碰到的超参数 文章目录 深度学习--训练时碰到的超参数 一.前言 二.一些常见的超参数 学习率(Learning rate) 迭代次数(iteration) batchsize e ...
- 深度学习笔记(11) 超参数调试
深度学习笔记(11) 超参数调试 1. 选择合适的范围 2. 超参数调试实践 1. 选择合适的范围 关于训练深度最难的事情之一是要处理的参数的数量 学习速率 a 到 Momentum(动量梯度下降法) ...
- 吴恩达老师深度学习视频课笔记:超参数调试、Batch正则化和程序框架
Tuning process(调试处理):神经网络的调整会涉及到许多不同超参数的设置.需要调试的重要超参数一般包括:学习率.momentum.mini-batch size.隐藏单元( ...
- 深度学习中的欠拟合和过拟合简介
通常情况下,当我们训练机器学习模型时,我们可以使用某个训练集,在训练集上计算一些被称为训练误差(training error)的度量误差,目标是降低训练误差.机器学习和优化不同的地方在于,我们也希望泛 ...
- 深度学习中的随机梯度下降(SGD)简介
随机梯度下降(Stochastic Gradient Descent, SGD)是梯度下降算法的一个扩展. 机器学习中反复出现的一个问题是好的泛化需要大的训练集,但大的训练集的计算代价也更大.机器学习 ...
- 花书笔记:第07章 深度学习中的正则化
花书笔记:第07章 深度学习中的正则化 7.1 参数范数惩罚 参数范数惩罚 Ω ( θ ) \Omega(\theta) Ω(θ) α ∈ [ 0 , ∞ ) \alpha \in [0,\infty ...
- 深度学习中的超参数以及两个重要的超参数——学习率和batch_size
前言 在深度学习中有很多参数是我们在训练模型之前自己设定的,我们把这些参数就称为--超参数.其中主要超参数包括了:学习率.batch_size.梯度下降法循环的数量.隐藏层数目.隐藏层单元数目.激 ...
- eta 深度学习 参数_深度学习中的参数梯度推导(一)
必备的数学知识 矩阵微分与求导 前言 深度学习向来被很多人认为是"黑盒",因为似乎很多人都不清楚深度学习的运作方式,本系列<深度学习中的数学>的连载文章主要目的就是向大 ...
- cnn 反向传播推导_深度学习中的参数梯度推导(三)下篇
前言 在深度学习中的参数梯度推导(三)中篇里,我们总结了CNN的BP推导第一步:BP通过池化层时梯度的计算公式.本篇(下篇)则继续推导CNN相关的其他梯度计算公式. 注意:本文默认读者已具备深度学习上 ...
最新文章
- 基于epoll+threadpool的webServer分析与实现
- cron 每周一执行_详解定时任务中的 cron 表达式
- Web Hacking 101 中文版 二十、漏洞报告
- android 地址栏 隐藏,android webview隐藏地址栏
- python大法之二-一些基础(一)
- python中syntaxerror_【已解决】Python中两个星号**参数去传递给函数出错:SyntaxError invalid syntax...
- 专题_数字货币历史行情获取[博]
- 2019最新 Java商城秒杀系统的设计与实战视频教程(SpringBoot版)_1-4系统的整体演示...
- PHP使用缓存生成静态页面
- 几何画板如何生成三角函数图像
- oracle的存储过程菜鸟教程,SQL菜鸟入门级教程之存储过程
- 计算机组成原理课程设计报告总结
- 基于Matlab的同态滤波彩色图像增强算法研究
- iOS手势识别的工作原理
- xul转换html,ExportHTMLFolderMod.uc.xul
- 【DevOps研发管理方案】一:方案简介
- cocos creator如何实现微信好友自定义转发分享功能
- 【Android真机app的性能测试(CPU,内存,启动时间)】
- python脚本编程读后感_Python编程:从入门到实践经典读后感10篇
- 单片机通过mqtt联网(51单片机和esp01s)
热门文章
- VS2010非永久性配置和永久配置Opencv
- 连通域最小外接矩形算法原理_基于分割的文本检测算法之PSENet/PAN/DBNet
- OpenCV中图像Mat存储格式和MATLAB中图像Mat存储格式的区别
- java 二分搜索获得大于目标数的第一位_程序员常用查找算法(顺序、二分、插值、分块、斐波那契)...
- Python调整图像亮度和饱和度
- 归一化互相关Normalization cross correlation (NCC)
- tree类型题目需要用到的头文件tree.h
- 游戏设计行业标准测试:秘密收集
- # NVIDIA Jetson系列系统镜像备份烧录指南
- tensorflow intel platform 优化