超参数、验证集和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 ...
随机推荐
- Linux命令学习神器!命令看不懂直接给你解释!
大家都知道,Linux 系统有非常多的命令,而且每个命令又有非常多的用法,想要全部记住所有命令的所有用法,恐怕是一件不可能完成的任务. 一般情况下,我们学习一个命令时,要么直接百度去搜索它的用法,要么 ...
- pyteeseract使用报错Error: one input ui-file must be specified解决
Python在图像识别有天然的优势,今天使用pytesseract模块时遇到一个报错:“Error: one input ui-file must be specified”. 环境:windows ...
- C# InputStream获取后乱码处理
Post推送过来的数据流获取后部分中文出现乱码,晚上找了好多办法,不如朋友鼎力相助,哈哈哈~不说废话了上代码把 旧代码基本是网上普遍写法,字段不长用起来不会有乱码情况,但是传送字段一旦过长,超过byt ...
- CMSampleBufferRef解析
CMTime:64位的value,32位的scale, media的时间格式 CMVideoFormatDesc:video的格式,包括宽高.颜色空间.编码格式.SPS.PPS CVPixelBuff ...
- 算法入门——二分查找,旅行商问题,大O表示法
一. 算法入门 博主在市面上发现了很多,很多有关书算法的书籍,但是真正能够让初学者易懂的算法书籍,只是一点点,以下我讲以 Aditya Bhargava写的一本关于算法的入门书籍,为参考,这本书非常的 ...
- Python - loguru日志库,高效输出控制台日志和日志记录
一.安装loguru loguru的PyPI地址为:https://pypi.org/project/loguru/ GitHub仓库地址为:https://github.com/Delgan/log ...
- python学习记录_IPython基础,Tab自动完成,内省,%run命令_
这是我第一次写博客,之前也有很多想法,想把自己所接触的,以文本的形式储存,总是没有及时行动.此次下定决心,想把自己所学,所遇到的问题做个记录共享给诸位,与此同时自己作为备忘,感谢各位访问我的博 ...
- 基于springboot多模块项目使用maven命令打成war包放到服务器上运行的问题
首先,大家看到这个问题,可能并不陌生,而且脑子里第一映像就是使用mava中的clear package 或者 clear install进行打包,然后在项目中的target文件夹下面找到xxx.war ...
- Cinemachine简介
先贴一下官方的Cinemachine文档Cinemachine Documentation 简介 使用 我们第一次使用Cinemachine时大概是这样一个流程: 在需要被控制的Camera上 ...
- shell编程中星号(asterisk "*")的坑
今天分享一个有关shell编程中由通配符引起的问题. 1. 问题代码 cat test.logs 4567890 * ##*************************************## ...