超参数、验证集和K-折交叉验证
- 本文首发自公众号:RAIS
前言
本系列文章为 《Deep Learning》 读书笔记,可以参看原书一起阅读,效果更佳。
超参数
- 参数:网络模型在训练过程中不断学习自动调节的变量,比如网络的权重和偏差;
- 超参数:控制模型、算法的参数,是架构层面的参数,一般不是通过算法学习出来的,比如学习率、迭代次数、激活函数和层数等。
与超参数对比的概念是参数,我们平时训练网络所说的调参,指的是调节 超参数。超参数的确定方法一般是凭借经验,或者类似问题的参数迁移。
问题来了,为啥超参数不通过学习确定?这是因为这个参数不那么好优化,并且稍不留神通过学习方法去优化就可能导致过拟合。你可能认为模拟人的调参过程,进行超参数的调节不就好了,当然这是可以的,超参数也不是完全不可以用程序优化的,但是现有的理论还不成熟,还没有理论去有效的指导实践,这还是一个新兴领域,因此还有许多工作要做,很多情况下是凭经验,凭直觉进行优化的,算法表现并不好。
我们知道,更高次的多项式和权重衰减参数设定 λ=0 总是能更好的拟合,会过拟合,对于这个问题,我们会考虑用验证集的方法,验证集在我们前文《人工智能二分类问题》中提到过。
验证集
验证集是用来训练超参数的,是用来给网络提供反馈的。我们用训练集去训练一个网络模型,训练出的参数固定下来,然后将验证集的数据应用到这个模型上,会得到偏差,我们根据这个偏差,调整超参数,然后重新去训练网络,重复迭代一定的次数,会调节出一个超参数还不错的网络,基于这个超参数训练出的模型,可以最终到测试集合上验证,最终确定在测试集上表现如何。下面举个例子:
这是之前在《人工智能二分类问题》中的一张图,我们看到验证损失在迭代 4 次之后大幅上升,这就是由于我们训练次数迭代过多导致的,迭代次数这个超参数设置的不合理,因此我们更改迭代次数为 4 次。这就是根据验证集调节超参数的一个例子。
数据量小,训练集:验证集:测试集=6:2:2,数据量足够大,训练集:验证集:测试集=98:1:1。这算是一个经验值吧。
K-折交叉验证
我们在之前的 《预测房价》 问题中有提到过交叉验证这个方法,这个方法用于解决的问题就是数据量太小的问题,而导致的对网络测试误差估计不准的问题,K-折交叉验证 是其中最常见的。
从上图中,我们可以清楚的看到K-折交叉验证的方法具体是怎么做的。由于数据量不够大,因此我们把数据分为 K 份,循环 K 次,每次分别选取其中的一份作为测试集,这样根据我们训练出的网络,我们可以分别求出每一次的测试误差,用这 K 个测试误差求其平均值,我们就估计其为这个网络的测试误差。
总结
我们本篇文章介绍了参数和超参数的区别,调参指的是调节超参数,并且介绍了在数据量较小的情况下如何如何去估计测试误差。
- 本文首发自公众号:RAIS
超参数、验证集和K-折交叉验证的更多相关文章
- cross_val_score 交叉验证与 K折交叉验证,嗯都是抄来的,自己作个参考
因为sklearn cross_val_score 交叉验证,这个函数没有洗牌功能,添加K 折交叉验证,可以用来选择模型,也可以用来选择特征 sklearn.model_selection.cross ...
- 机器学习--K折交叉验证和非负矩阵分解
1.交叉验证 交叉验证(Cross validation),交叉验证用于防止模型过于复杂而引起的过拟合.有时亦称循环估计, 是一种统计学上将数据样本切割成较小子集的实用方法. 于是可以先在一个子集上做 ...
- sklearn的K折交叉验证函数KFold使用
K折交叉验证时使用: KFold(n_split, shuffle, random_state) 参数:n_split:要划分的折数 shuffle: 每次都进行shuffle,测试集中折数的总和就是 ...
- 小白学习之pytorch框架(7)之实战Kaggle比赛:房价预测(K折交叉验证、*args、**kwargs)
本篇博客代码来自于<动手学深度学习>pytorch版,也是代码较多,解释较少的一篇.不过好多方法在我以前的博客都有提,所以这次没提.还有一个原因是,这篇博客的代码,只要好好看看肯定能看懂( ...
- 小白学习之pytorch框架(6)-模型选择(K折交叉验证)、欠拟合、过拟合(权重衰减法(=L2范数正则化)、丢弃法)、正向传播、反向传播
下面要说的基本都是<动手学深度学习>这本花书上的内容,图也采用的书上的 首先说的是训练误差(模型在训练数据集上表现出的误差)和泛化误差(模型在任意一个测试数据集样本上表现出的误差的期望) ...
- k折交叉验证
原理:将原始数据集划分为k个子集,将其中一个子集作为验证集,其余k-1个子集作为训练集,如此训练和验证一轮称为一次交叉验证.交叉验证重复k次,每个子集都做一次验证集,得到k个模型,加权平均k个模型的结 ...
- K折-交叉验证
k-折交叉验证(k-fold crossValidation):在机器学习中,将数据集A分为训练集(training set)B和测试集(test set)C,在样本量不充足的情况下,为了充分利用数据 ...
- 偏差(bias)和方差(variance)及其与K折交叉验证的关系
先上图: 泛化误差可表示为偏差.方差和噪声之和 偏差(bias):学习算法的期望预测与真实结果(train set)的偏离程度(平均预测值与真实值之差),刻画算法本身的拟合能力: 方差(varianc ...
- (数据挖掘-入门-6)十折交叉验证和K近邻
主要内容: 1.十折交叉验证 2.混淆矩阵 3.K近邻 4.python实现 一.十折交叉验证 前面提到了数据集分为训练集和测试集,训练集用来训练模型,而测试集用来测试模型的好坏,那么单一的测试是否就 ...
- S折交叉验证(S-fold cross validation)
S折交叉验证(S-fold cross validation) 觉得有用的话,欢迎一起讨论相互学习~Follow Me 仅为个人观点,欢迎讨论 参考文献 https://blog.csdn.net/a ...
随机推荐
- 探究Java中的引用
探究Java中的四种引用 从JDK1.2版本开始,Java把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期.这四种级别由高到低依次为:强引用.软引用.弱引用和虚引用.本篇就来详细探究 ...
- spring——AOP原理及源码(二)
回顾: 在上一篇中,我们提到@EnableAspectJAutoProxy注解给容器中加入了一个关键组件internalAutoProxyCreator的BeanDefinition,实际类型为 An ...
- nginx设置目录浏览及中文乱码问题解决
在Nginx下默认是不允许列出整个目录的.如需此功能, 先打开nginx.conf文件,在location server 或 http段中加入 autoindex on;另外两个参数最好也加上去: a ...
- linux同步当前网络时间
[root@root ~]# yum install -y ntpdate 执行:ntpdate[root@root ~]# ntpdate 120.24.81.91或[root@root ~]# n ...
- HBuilder-X 关闭eslint-vue 插件语法检查
HBuilder-X 在写vue项目的时候发现,代码在保存的时候回自动检查eslint语法,会报一大堆的红色警告! 这时候就很烦人,看着不爽,看了下eslint 配置里面介绍了关闭语法检查的配置-- ...
- 上线前测试的bug,要不要处理,跟版本的关系
最近有两个项目是在旧版本上实施的.上线前经过一轮测试后,发现了一些产品(我们的产品确实不稳定) 在这个项目上,修改产品bug是肯定的.但是要不要追踪这些bug? 这就跟版本使用范围有关系了,毕竟要考虑 ...
- 爬虫过程中获取不到列表页的url
例1: 采集某网站的时候根据网页页面显示的url链接提取的, 最后始终没有数据返回. 主要原因是页面源码中标签的 href 属性值和页面上的不一样. 页面上显示是‘http://www.xxx.org ...
- 建议11:增强数组排序的sort功能
sort方法不仅按字母顺序进行排序,还可以根据其他顺序执行操作.这时就必须为方法提供一个比较函数的参数,该函数要比较两个值,然后返回一个用于说明这两个值得相对顺序的数字.比较函数应该具有两个参数a和b ...
- Python习题集(一)
每天一习题,提升Python不是问题!!有更简洁的写法请评论告知我! 题目 有一个数据list of dict如下 a = [ {"}, {"}, {"}, ] 写入到本 ...
- Flask wtforms 表单验证使用
目录 wtforms 使用1(简单版): 使用2(复杂版): wtforms 安装:pip3 install wtforms 使用1(简单版): from flask import Flask, re ...