1、8.提前终止 什么是提前终止? 怎么实现提前终止? 提前终止有什么好处? 为什么提前终止会有用? 提前终止的目的是为了防止过拟合,从右侧学习曲线中可以看出,测试误差在前几个epoch中逐渐减小,但是训练到某个epoch后,测试误差又有了小幅度的增大。这说明此时发生了过拟合。 如果我们只要返回使验证误差最低验证误差最低的参数,就可以获得验证集误差更低的模型。提前终止提前终止:在测试误差开始上升之前,就停止训练,即使此时训练尚未收敛(即训练误差未达到最小值)。 首先我们要保存好现在的模型(网络结构和权值),训练num_batch次(即一个epoch),得到新的模型。将测试集作为新模型的输入,进行测
2、试。如果我们发现测试误差比上次得到的测试误差大,我们并不会马上终止测试,而是再继续进行几个epoch的训练与测试,如果测试误差依旧没有减小,那么我们就认为该试验在上一次达到最低测试误差时停下来。 由于提前终止需要验证集,这意味着某些训练数据不能被馈送到模型,因此为了更好的利用数据,有两种解决策略。 第一种策略是再次初始化模型,利用第一轮提前终止训练的最佳步数i*,重新使用全部数据再次训练i*步。 第二种策略是将第一轮提前终止时的损失函数作为参考目标值,用全部数据进行第二轮提前终止,直到验证集的平均损失函数低于参考目标值。(不能保证终止)提前终止相当于相当于L2正则化提前终止的优点: 由于限制了
3、训练迭代次数,减少训练时的计算成本。 具有正则化效果而不需要添加惩罚项或计算其梯度。9.参数绑定与参数共享 目前讨论对参数添加约束或惩罚的时候,一直是相对于固定的区域或点。例如L2正则化对参数偏离零的固定值进行惩罚。 根据相关领域和模型结构方面的知识,得知模型参数之间应该存在一些相关性,需要对模型参数之间的相关性进行惩罚对模型参数之间的相关性进行惩罚,使模型参数尽量接近或者强迫强迫某些参数相等某些参数相等。 举例: 参数共享:强迫模型某些参数相等 主要应用:卷积神经网络(CNN)(9章会详细介绍) 举例:猫的照片向右边移动了一个像素仍然能探测出猫。 优点:显著降低了卷积神经网络CNN的参数个数
4、(CNN模型的参数通常是千万量级以上),减少模型占用的内存,并且显著的增加了网络的大小而不需要增加训练数据。10.稀疏表示 稀疏表示也是卷积网络常用到的正则化的方法。 前文所述的权重衰减直接惩罚模型参数,如L1正则化会诱导稀疏参数,使得许多参数为0,而稀疏表示是惩罚神经网络中的激活单元,稀疏化激活单元。 换言之,稀疏表示的是得神经元的输入单元变得稀疏输入单元变得稀疏,很多输入是0.第一个表达式是参数稀疏的线性回归模型的例子。第二个表达式是数据 x 具 有稀疏表示 h 的线性回归。也就是说,h 是 x 的一个函数,在某种意义上表示存在于 x 中的信息,但只是用一个稀疏向量表示。 字典学习:字典学
5、习: 假设我们用一个m*n的矩阵表示数据集X,每一行代表一个样本,每一列代表样本的一个特征,一般而言,该矩阵是稠密的,即大多数元素不为0。 稀疏表示的含义是,寻找一个系数矩阵A(k*n)以及一个字典矩阵B(m*k),使得B*A尽可能的还原X,且A尽可能的稀疏。A便是X的稀疏表示。 “为普通稠密表达的样本找到合适的字典,将样本转化为合适的稀疏表达形式,从而使学习任务得以简化,模型复杂度得以降低,通常称为字典学习字典学习” 字典学习的最简单形式为: 其中xi为第i个样本,B为字典矩阵,alphai为xi的稀疏表示,lambda为大于0参数。 上式中第一个累加项说明了字典学习的第一个目标是字典矩阵与
6、稀疏表示的线性组合尽可能的还原样本;第二个累加项说明了alphai应该尽可能的稀疏。之所以用L1范式是因为L1范式正则化更容易获得稀疏解。如何获得表示稀疏 从任意一个字典中为原始信号寻找最稀疏的表示常用的方法分类两类:贪婪算法,比如匹配追踪(匹配追踪(MPMP)、正交匹配追踪(OMP)、弱匹配追踪(WMP)、阈值方法等;(速度快,精度相对较低)松弛算法,比如迭代加权最小二乘(Iterative-Reweighed-Least-Squares,IRLS)、基追踪(BP)等。(松弛算法是精度高,但速度慢)17如何建立这个词典D efficient sparsecoding algorithm NI
7、PS 06; K-SVD tsp 06; Online dictionary learning for sparse coding,ICML 09 & JMLR 10 字典学习的好处 它实质上是对于庞大数据集的一种降维表示; 第二,字典学习总是尝试学习蕴藏在样本背后最质朴的特征。 稀疏表示的本质: 用尽可能少的资源表示尽可能多的知识,这种表示还能带来一个附加的好处,即计算速度快。11.Bagging算法 Bagging是通过结合几个模型降低泛化误差的技术。 基本思想基本思想:对于一个复杂的学习任务,我们首先构造多个简单的学习模型,然后再把这些简单模型组合成一个高效的学习模型。(“三个臭皮匠顶个
8、诸葛亮”) 采用该策略的技术被称为集成方法,集成方法,广泛用于分类和回归任务。 不同集成方法以不同方式构建集成模型。例如每个成员可以使用不同算法和目标函数训练成完全不同的模型。 大多数集成方法使用单一的基本学习算法来生成均匀基础学习器,但也有一些方法使用多种学习算法来生成异构学习器。 通常情况下,集合是分两步构建的。 首先,生成许多基础学习器,这些基础学习器可以以并行样式或序列样式生成,序列样式即基础学习器的生成影响后续学习器的生成。 然后,将基础学习器结合使用,其中最流行的组合方案是用于分类的多数投票和用于回归的加权平均。为什么集合优于单个为什么集合优于单个 第一个原因是,训练数据可能无法提
9、供足够的信息来选择单一第一个原因是,训练数据可能无法提供足够的信息来选择单一的最佳学习器的最佳学习器。例如,可能有许多学习器在训练数据集上的表现同样出色。因此,结合这些学习器可能是更好的选择。 第二个原因是,学习算法的搜索过程可能不完善。第二个原因是,学习算法的搜索过程可能不完善。例如,即使存在唯一的最佳假设,也可能难以实现,因为运行算法会导致次优假设。因此,集合可以弥补这种不完善的搜索过程。 第三个原因是,被搜索的假设空间可能不包含真正的目标函数,第三个原因是,被搜索的假设空间可能不包含真正的目标函数,而集合可以给出一些很好的近似值。而集合可以给出一些很好的近似值。例如,众所周知,决策树的分
10、类边界是与坐标轴平行的线段。如果目标分类边界是一条光滑的对角线,则使用单个决策树不能产生良好的结果,但通过组合一组决策树可以实现良好的近似。 Dietterich23bagging(装袋)方法 BaggingBagging是一种允许重复多次使用同一种模型、训练算法和目是一种允许重复多次使用同一种模型、训练算法和目标函数的方法。标函数的方法。 根据均匀概率分布从数据中重复抽样(有放回)每个抽样生成的自助样本集上,训练一个基分类器;对训练过的分类器进行投票,将测试样本指派到得票最高的类中。 每个自助样本集都和原数据一样大 有放回抽样,一些样本可能在同一训练集中出现多次,一些可能被忽略。(每个数据集
11、包含原始数据2/3的实例)算法步骤: 1.从数据集S中取样(放回选样),总共执行t次 2.针对每一次取样训练得到得到t个模型H1Ht 3.如果是分类算法,则t个模型投出最多票数的类别或者类别之一为最终类别; 如果是回归算法,t个模型得到的回归结果进行算术平均得到的值为最终的模型输出。THANKYOUSUCCESS2022-3-19 模型平均模型平均是减少泛化误差非常强大可靠的方法,可以适用于任何机器学习算法中,但是以增加计算和储存为代价。 Bagging可以视为比较传统的集成学习思路。 现在常用的Random Random ForestForest,GBDT(迭代决策树),GBRank其实都是
12、更加精细化,效果更好的方法。12.dropout 深度学习领域大神Hinton,在2012年文献:Improving neural networks by preventing co-adaptation of feature detectors提出了,在每次训练的时候,让一部分的特征检测器停止工作,这样可以提高网络的泛化能力,Hinton又把它称之为dropout。 Hinton认为过拟合,可以通过阻止某些特征的协同作用来缓解。在每次训练的时候,每个神经元有一定的概率被移除,这样可以让一个神经元的出现不应该依赖于另外一个神经元。12.dropout 模型训练时,在一次循环中我们先随机选择神经
13、层中的一些单元并将其临时隐藏,然后再进行该次循环中神经网络的训练和优化过程。在下一次循环中,我们又将隐藏另外一些神经元,如此直至训练结束。 Dropout训练的集成包括所有从基础网络除去神经元(非输出单元)后形成的子网络。只需要将一些单元的输出乘零就能有效的删除(暂时地)一个单元。假如基本网络有n个非输出神经元,那么就有2n个子网络。Dropout说的简单一点就是我们让在前向传导的时候,让某个神经元的激活值以一定的概率p,让其停止工作,示意图如下: 在训练时,每个神经单元以概率p被保留(dropout丢弃率为1-p); 在测试阶段,每个神经单元都是存在的,权重参数w要乘以p,成为:pw。测试时
14、需要乘上p的原因:考虑第一隐藏层的一个神经元在dropout之前的输出是x,那么dropout之后的期望值是E=px+(1p)0=px,在测试时该神经元总是激活,为了保持同样的输出期望值并使下一层也得到同样的结果,需要调整xpx. 其中p是Bernoulli分布(0-1分布)中值为1的概率。 Left: A unit at training time that is present with probability p p and is connected to units in the next layer with weights w. w. Right: At test time, th
15、e unit is always present and the weights are multiplied by p p. The output at test time is same as the expected output at training time. 通常为了提高测试的性能(减少测试时的运算时间),可以将缩放的工作转移到训练阶段,而测试阶段与不使用dropout时相同,称为 inverted dropoutinverted dropout :将前向传播dropout时保留下来的神经元的权重乘上1/p 在架构中添加inverted Dropout这一改动仅会影响训练过程,而
16、并不影响测试过程。Model Description有Dropout的神经网络上面公式中Bernoulli函数,是为了以概率p,随机生成一个0、1的向量。没有Dropout的神经网络Dropout如何具有正则化效果: ImageNet Classification with Deep Convolutional Neural Networks, by Alex Krizhevsky, Ilya Sutskever, and Geoffrey Hinton (2012).的解释是:这种技术减少了神经元之间复杂的共适性。因为一个神经元不能依赖其他特定的神经元。因此,不得不去学习随机子集神经元间的鲁
17、棒性的有用连接。换句话说。想象我们的神经元作为要给预测的模型,dropout是一种方式可以确保我们的模型在丢失一个个体线索的情况下保持健壮的模型。在这种情况下,可以说他的作用和L1和L2范式正则化是相同的。都是来减少权重连接,然后增加网络模型在缺失个体连接信息情况下的鲁棒性。Dropout是通过随机行为训练网络并平均多个随机过程决定进行预测,实现了一种参数共享的bagging。 DropoutDropout与与BaggingBagging对比对比 Bagging和Dropout的目的是一样的,都是为了防止模型过拟合。 Bagging是每次训练的时候从原训练集中随机抽取样本,然后对该样本进行训练
18、。多次反复后,对最后的结果取均值。 Dropout是在构建神经网络的时候,随机的丢掉一些节点和边,这就是相当于对特征进行了随机选择。 Bagging情况下每个模型都是独立的;Dropout情况下,所有模型共享参数,其中每个模型继承父神经网络参数的不同子集。Nitish Srivastava 、Geoffrey Hinton 、uAlex 、Ilya 、Ruslan Salakhutdinov13.对抗训练 对抗样本对抗样本是指对原样本产生一些微小的扰动(甚至人眼都可能无法察觉),然而分类器却产生了完全不一样的结果,甚至以高置信度错误分类。44 Szegedy的文章Intriguing prop
19、erties of neural networks表明将对抗样本和普通样本一起给模型训练能够使模型正则化将对抗样本和普通样本一起给模型训练能够使模型正则化。 训练对抗样本和普通的数据增加不一样: 通常我们通过对数据进行变形来增加数据,这样变形后的数据是可能出现在测试集里的。而对抗样本这种数据通常不可能自然地出现在测试集中,但是它们可以揭露出模型的缺陷。如何生成这些对抗样本? 一种最简单的攻击方法叫做快速梯度法快速梯度法(见右图),给定一张图像,输入给神经网络,得到预测结果,然后用梯度下降法修改一下原图使得预测结果变差。 一个推广的方法叫做迭代梯度法迭代梯度法,就是对刚才的过程进行多次重复。这种
20、攻击称作白盒攻击,因为假设攻击者已经知道了要被攻击的模型的所有细节。而与之相对的就是黑盒攻击,顾名思义,攻击者事先不知道要攻击网络的模型和具体细节。如何防御这些对抗样本 Threat of Adversarial Attacks on Deep Learning in Computer Vision: A Survey 修改训练样本修改训练样本:通过添加更多的对抗样本到训练集中可以有效避免一部分攻击,但这更像是一种无奈的做法,当扩大样本集的时候,其实分类边界有可能也在随之扩大。 修改训练网络:修改训练网络:这类方法会对训练网络做出一定调整,其中有一种方式是模拟生物学在最后一层使用更加非线性的激
21、活函数,但这种方式又会导致训练效率和效果下降。修改训练网络的方法分为完全抵抗和仅检测两种方式,完全抵抗其实就是让模型能将对抗样本识别为正确的分类,而仅检测是为了发现这种攻击样本,从而拒绝服务。 附加网络:附加网络:这种方式是在不改变原有模型的情况下使用额外的网络进行辅助,这样可以使原有网络保持不变,其中最有效的一种方式是生成式对抗网络GAN。同样的,这种方式也分为完全抵抗和仅检测两种方式。7.14 切面距离、正切传播和流行正切分类器 流形学习流形学习的基本思想是将高维特征空间中的样本分布群“平铺”至一个低维空间,同时能保存原高维空间中样本点之间的局部位置相关信息。 原空间中的样本分布可能及其扭
22、曲,平铺之后将更有利于样本之间的距离度量,其距离将能更好地反映两个样本之间的相似性。 原空间中相邻比较近的点可能不是同一类点,而相邻较远的点还有可能是同一类,“平铺”至低维空间后就能解决这一问题。 切面距离切面距离( (tangent distance)tangent distance)算法:算法:是一种非参数的最近邻算法,其中使用的度量不是通用的欧几里得距离,而是根据邻近流行关于聚集概率的知识导出的。 正切传播正切传播( (tangent prop)tangent prop)算法:算法:训练带有额外惩罚的神经网络分类器,使神经网络的每个输出f(x)对已知的变化因素是局部不变的。这些变化因素对应于沿着的相同样本聚集的流行的移动。 每条曲线表示不同类别的流形,绘制的单点的切向量与法向量,我们希望分类函数在垂直于流形方向上快速改变,并且在类别流形的方向上保持不变。Tangent表示正切方向,Normal表示正交方向。LOGOLOGOTHANKYOUSUCCESS2022-3-19