泛化和交叉验证

泛化

在反向传播学习中,一般从一个训练样本开始,而且通过网络中装载尽可能多的训练样本来使用反向传播算法计算一个多层感知器的突触权值。希望这样设计的神经网络可以很好的泛化。对于从未在生成或训练网络时使用过的测试数据,若网络计算的输入-输出映射对他们来说是正确的(或接近于正确)的,我们就认为网络的泛化是很好的。(也就是预知能力)。

学习过程(即神经网络的训练)可以看作是一个“曲线拟合”的问题。网络本身可以被简单第认为是一个非线性输入-输出映射。这个观点允许我们不在把神经网络的泛化看作是他的一个神秘的特征,而是作为简单的关于输入输出非线性插值的结果。这种网络之所以能够完成有意义的插值过程,主要因为具有连续激活函数的多层感知器导致输出函数同样也是连续的

良好的泛化恰当的你和非线性映射:

一个具有良好泛化能力的神经网络,即使当输入数据与训练样本稍有不同时,也能产生正确的输入-输出映射,然而,当神经网络学习太多的输入-输出样本时,他可能会完成训练数据的记忆。这可能在一下情况中出现,找到一个存在于训练数据中的特征,但对于即将要剑魔的固有函数却为假。这种现象被称为“过拟合”或者“过训练”。当网络被过拟合的时候,他就失去了在想进输入/输出模式之间进行泛化的能力。通常这种方法把数据庄仔倒多层感知器要求使用比实际需要更多的隐藏神经元,结果导致在网络的突触权值中存储了输入空间中由于噪声引起的非期望因素。

过拟合映射:

为有效的泛化给出充分的训练集大小,下面三个因素对泛化产生影响:

训练集的大小,以及他如何表示感兴趣的环境。

神经网络的体系结构。

当前问题的物理复杂度。

在实践中,通常训练集大小N=O(W/e)  W是网络中自由参数总数,e是误差,O则是量的阶数。

交叉验证

反向传播学习的本质是把输入输出映射编码为一个多层感知器的突触权值和阈值。我们希望的是,网络通过良好的训练,使得它充分地学习过去的数据,从而对未来有良好的汉化能力。从这个观点上来看,学习过程意味着对给定的数据集合给出网络参数化的一个选择。具体地,我们可以把网络选择问题看作是从一组候选模型结构(参数)集合中选择符合某个标准“最好”的一个。在这用意义下,统计学中的一个名为交叉验证的标准工具提供了一个好的指导原则。已有的可用数据及首先被随机分割成一个训练集和一个测试集。这个训练集被进一步细分为连个不相交子集:

估计子集,用来选择模型。

验证子集,用来测试或者验证模型。

这里的动机是用一个与参数估计数据集不同的数据集来验证模型。用这个办法可以用训练集来估计不同候选模型的性能,进而选择“最好”的一个。然而,这样选出的具有最优表现的参数值的模型,很可能会导致对验证自己的过渡拟合。为了防止这种情况出现,使用测试集来衡量被选模型的泛化性能,测试集是与验证集不同的集合。

训练的早期停止方法

通常,用反向传播算法训练的多层感知器分阶段地进行学习,随训练过程的进行实现相当简单的映射函数到更复杂的映射函数。这通过在一个典型情况下载训练中均方误差随着训练回合的增加而减小的例子来证明:均方误差从一个很大的值开始,然后迅速减小,最有随着网络在误差曲面接近局部最小值的时候缓慢地减小。目标函数的复杂度,依据输入向量x定义需要的相应d,当该复杂度小鱼样本大小N时,一号的发话能力为目标,如果通过观察自身训练得到的学习曲线,很难断定何时停止训练最好,如果训练未在合适的时间停止,那么网络可能过拟合训练数据。

我们可以通过交叉验证来标记过拟合的发生,为此训练数据集被分成估计和验证子集。使用样本的估计子集以通常方法训练网络,但有较小的修改:训练时间被周期性的停止,并且在每个训练周期之后由验证子集测试网络。具体地讲,周期性的估计伴随确认的过程是如下进行的:

经过一个估计(训练)周期之后,多层感知器的突触权值和偏置都已经固定,网络是在他的前向方式下运作的,从而对验证子集的每个样本测定验证误差。

当验证阶段完成的时候,估计重新开始另一个周期,这个过程被重复。

交叉验证的变体

上述交叉验证的方法称为坚持到底方法(hold out method)。在实际中还有另外一些能找到他们自身应用的交叉验证的变体,特别是在缺乏标定样本的时候。在这样的情况下可以通过把N个样本的可用集合分割为K个子集来使用多重交叉验证方法,K>1;这里假设N对K是可除的。这个模型在除了一个子集之外的其他子集上进行训练,验证误差通过剩下子集上的测试来测量。这个过程总共被执行K次实验,每次使用一个不同的自己进行验证,模型性能的估计是通过求实验中所有的实验的验证平方误差的均值来进行的。多重交叉验证存在一个缺点:因为模型必须训练K次,他可能需要过多的计算量,这里1<K<=N。

当可用的标定样本的数目N被严格限制的时候,我们可以使用被称为留一方法的多重交叉验证的极端形式。在这种方法中,N-1个样本用来训练模型,并且这个模型通过剩下的一个样本的测试来验证。这个实验总共被重复N次,每次留出一个不同的样本来进行验证。然后通过验证的平方误差在N次实验上求平均。

神经网络与机器学习 笔记—泛化和交叉验证相关推荐

  1. 神经网络与机器学习 笔记—LMS(最小均方算法)和学习率退火

    神经网络与机器学习 笔记-LMS(最小均方算法)和学习率退火 LMS算法和Rosenblatt感知器算法非常想,唯独就是去掉了神经元的压制函数,Rosenblatt用的Sgn压制函数,LMS不需要压制 ...

  2. 神经网络与机器学习 笔记—基本知识点(下)

                   神经网络与机器学习 笔记-基本知识点(下) 0.1 网络结构: 神经网络中神经元的构造方式与用于训练网络的学习算法有着密切的联系,有三种基本的网络结构: 0.7 知识表示 ...

  3. 神经网络与机器学习 笔记—基本知识点(上)

    神经网络与机器学习 笔记-基本知识点(上) 0.1 什么是神经网络: 神经网络是由简单处理单元构成的大规模并行分布处理器,天然具有存储经验知识和使之可用的特性.神经网络在两个方面与大脑类似. 神经网络 ...

  4. 机器学习基础|K折交叉验证与超参数搜索

    文章目录 交叉验证 交叉验证的概念 K的取值 为什么要用K折交叉验证 Sklearn交叉验证API 超参数搜索 超参数的概念 超参数搜索的概念 超参数搜索的原理 Sklearn超参数搜索API 实例 ...

  5. 神经网络与机器学习 笔记—小规模和大规模学习问题

    监督学习的可行性依赖于下面的关键问题: 由N个独立同分布的样本(X1,D1),(X2,D2),-,(Xn,Dn) 组成的训练样本是否包含了构造具有良好泛化性能的机器学习的足够信息? 计算考虑: 神经网 ...

  6. 交叉学习验证 西瓜书_机器学习:数据划分与交叉验证

    函数1:train_test_split from sklearn.model_selection import train_test_split # 数据划分所需的函数X_train, X_test ...

  7. 机器学习之选择小样本交叉验证训练模型并使用精确率、召回率、F1分数和AUC值、画出ROC曲线评估

    题目如下 (1)读入aviation数据集,设置MEMBER_NO为索引列:(4分) (2)剔除重复值.缺失值.(4分) (3)随机抽取500样本,切片特征X和标签Y:(4分) 因为调参很慢,所以这里 ...

  8. 机器学习之路——KNN+交叉验证

    KNN分类模型 概念: 简单地说,K-近邻算法采用测量不同特征值之间的距离方法进行分类(k-Nearest Neighbor,KNN) k值的作用 欧几里得距离(Euclidean Distance) ...

  9. 统计机器学习 作业一 采用交叉验证、留出法、自助法划分数据集,绘制PR图

    要求:随机生成两组数据,每组50个数,其中一组服从正态分布,另一组服从N(1,1) .编写一个code: Input:上面产生的100个数,类别数:2 Output:1.0标签序列(每个标签对应每个数 ...

最新文章

  1. 【swjtu】数字电路实验7_8_电子琴设计
  2. BigData之Hbase:Hbase数据管理的简介、下载、案例应用之详细攻略
  3. ON_MESSAGE,ON_COMMAND和ON_NOTIFY的区别和联系
  4. [NOIP 2010普及组 No.3] 导弹拦截
  5. BZOJ2565 最长双回文子串 回文自动机,回文树
  6. 研究生量子计算机专业,量子计算机研究.PDF
  7. java 注解 @?(name=quot;usernamequot;),【MyBatis】MyBatis 注解开发
  8. JQuery之拖拽插件
  9. 在线考试系统毕业设计设计过程及部分代码
  10. Java垃圾回收机制——回收对象
  11. 电机PID控制补充篇-野火上位机串口协议介绍
  12. 034 Rust死灵书之为Vec实现Drain
  13. 2022哈工大计算机系统大作业
  14. jpa+hibernate整合达梦数据库(附源码)
  15. 迪赛智慧数——折线图(渐变堆叠图):国内智能快递柜营收规模及增长率
  16. php 正则格式化图片,php利用正则表达式格式化电话号码的方法
  17. Spring5学习笔记------4、JdbcTemplate
  18. 蓄水池问题c语言编程,蓄水池算法(Reservoir Sampling)
  19. 2013年第四届java A组蓝桥杯省赛真题
  20. 在vue项目中使用echarts 阿星小栈

热门文章

  1. 如何改android device monitor文件的权限
  2. day26 re正则表达式
  3. 用JS的正则表达式如何判断输入框内为中文或者是英文
  4. Learn Python The Hard Way(20)
  5. Oracle存储过程(增、删、改)写法
  6. 2018-2019-1 20165223 20165218 实验二 固件程序设计
  7. 遇到的问题及解决方法
  8. C#将Excel数据表导入SQL数据库的两种方法(转)
  9. python将字符转换为字典
  10. (四)学习CSS之position、bottom、left、right和top属性