什么是正则化
正则化就是通过正则化项(参数范数惩罚和参数)来限制模型的学习能力
权重化规则
L2在单步时做了什么
收缩权重向量(将权重向量乘以一个常数因子)
L2在整个过程做了什么
我们进一步简化分析,令w∗为未正则化的目标函数取得最小训练误差时的权重向量,即w∗=arg minwJ(w),并在w∗的邻域对目标函数做二次近似。如果目标函数确实是二次的(如以均方误差拟合线性回归模型的情况)或者换句话说一定会收敛,则该近似是完美的。
只有在显著减小目标函数方向上的参数会保留得相对完好。在无助于目标函数减小的方向(对应Hessian矩阵较小的特征值)上改变参数不会显著增加梯度。这种不重要方向对应的分量会在训练过程中因正则化而衰减掉。
l1在每次梯度中做了什么
分析正则化项在每次梯度,都意味着对正则化求导数
稀疏性为什么能避免过拟合
目前用得广泛的是两种稀疏正则化:
L2为什么不会稀疏,l1为什么会导致稀疏
解释1:L2正则相当于用圆去逼近目标,而L1正则相当于用菱形去逼近目标,所以更容易引起交点在坐标轴上即得到稀疏解。个人觉得这种解释对于为什么l1要去逼近X,没有说明,逻辑上有待讨论。
参考
解释2:
对带有正则化项的损失函数,对w求导(即求梯度的过程)。取一个特殊点W=0时,会发现l2导数无变化,但l1将会在这一点产生突变,此时梯度将会为极小值。因此,优化时,很可能优化到该极小值点上,即w=0处。
w=0也就是产生了稀疏性。
more
l1稀疏性作用
由L1正则化导出的稀疏性质已经被广泛地用于特征选择(feature selection)机制。特征选择从可用的特征子集选择出有意义的特征,化简机器学习问题。著名的LASSO(Tibshirani, 1995)(Least Absolute Shrinkage and Selection Operator)模型将L1惩罚和线性模型结合,并使用最小二乘代价函数。L1惩罚使部分子集的权重为零,表明相应的特征可以被安全地忽略。
正则化作用
类似随机梯度下降的迭代优化算法将持续增加w的大小,理论上永远不会停止。
稳定欠定:大多数形式的正则化能够保证应用于欠定问题的迭代方法收敛。例如,当似然的斜率等于权重衰减的系数时,权重衰减将阻止梯度下降继续增加权重的大小。
目的
解释1:让模型适应各种各样的变换。
解释2:对于某些模型而言,向输入添加方差极小的噪声等价于对权重施加范数惩罚(Bishop,1995a, b)在一般情况下,注入噪声远比简单地收缩参数强大,特别是噪声被添加到隐藏单元时会更加强大。向隐藏单元添加噪声是值得单独讨论的重要话题。在第7.12节所述的Dropout算法是这种做法的主要发展方向。
应用
CV:
最常见在对象识别。图像是高维的并包括各种巨大的变化因素,其中有许多可以轻易地模拟。即使模型已使用卷积和池化技术对部分平移保持不变,沿训练图像每个方向平移几个像素的操作通常可以大大改善泛化。许多其他操作如旋转图像或缩放图像也已被证明非常有效。
NLP:
数据集增强对语音识别任务也是有效的(Jaitly andHinton,2013)。
但这种方法对于其他许多任务来说并不那么容易。例如,除非我们已经解决了密度估计问题,否则在密度估计任务中生成新的假数据是很困难的。
方式
对原始数据合理的范围内随机扰动。
这里合理解释为(我们必须要小心,不能使用会改变类别的转换。例如,光学字符识别任务需要认识到“b”和“d”以及“6”和“9”的区别,所以对这些任务来说,水平翻转和旋转180◦并不是合适的数据集增强方式。)
输入层注入噪声:
主要用在神经网络,对于许多分类甚至一些回归任务而言,即使小的随机噪声被加到输入,任务仍应该是能够被解决的。然而,神经网络被证明对噪声不是非常健壮(Tang and Eliasmith,2010)。改善神经网络健壮性的方法之一是简单地将随机噪声添加到输入再进行训练。
隐藏层注入噪声:
通用:这可以被看作在多个抽象层上进行的数据集增强。Poole et al.(2014)最近表明,噪声的幅度被细心调整后,该方法是非常高效的。dropout也可以被这么解释。
权重注入噪声:
主要用在循环神经网络(Jim et al.,1996;Graves,2011)。这可以被解释为关于权重的贝叶斯推断的随机实现。贝叶斯学习过程将权重视为不确定的,并且可以通过概率分布表示这种不确定性。向权重添加噪声是反映这种不确定性的一种实用的随机方法。
怎么知道增强对了还是错了
放在代码中跑一跑。加了之后验证集好,说明加对了。
用在
主要用在y标签都有一定错误。
怎么做
标签平滑(label smoothing)通过把确切分类目标从0和1替换成和1-,正则化具有k个输出的softmax函数的模型。
作用
标签平滑的优势是能够防止模型追求确切概率而不影响模型学习正确分类。这种策略自20世纪80年代就已经被使用,并在现代神经网络继续保持显著特色(Szegedy et al.,2015)。
什么是
半监督学习通常指的是学习一个表示h=f(x)。
作用
学习表示的目的是使相同类中的样本有类似的表示。无监督学习可以为如何在表示空间聚集样本提供有用线索。在输入空间紧密聚集的样本应该被映射到类似的表示。在许多情况下,新空间上的线性分类器可以达到较好的泛化(Belkin and Niyogi,2002; Chapelle et al.,2003)。这种方法的一个经典变种是使用主成分分析作为分类前(在投影后的数据上分类)的预处理步骤。
多任务学习(Caruana,1993)是通过合并几个任务中的样例(可以视为对参数施加的软约束)来提高泛化的一种方式。正如额外的训练样本能够将模型参数推向具有更好泛化能力的值一样,当模型的一部分被多个额外的任务共享时,这部分将被约束为良好的值(如果共享合理),通常会带来更好的泛化能力。
深度网络的较低层(无论是监督前馈的,还是包括向下箭头的生成组件)可以跨这样的任务共享,而任务特定的参数(分别与从h(1)和h(2)进入和发出的权重)可以在共享表示h(shared)之上学习。这里的基本假设是存在解释输入x变化的共同因素池,而每个任务与这些因素的子集相关联。在该示例中,额外假设顶层隐藏单元h(1)和h(2)专用于每个任务(分别预测y(1)和y(2)),而一些中间层表示h(shared)在所有任务之间共享。
在无监督学习情况下,一些顶层因素不与输出任务(h(3))的任意一个关联是有意义的:这些因素可以解释一些输入变化但与预测y(1)或y(2)不相关
代价
需要保存最佳的参数副本,即需要资源来存储最佳模型。但这对于计算机是不足以挂齿的。
需要在训练期间要定期评估验证集。这个现在几乎所有主流框架每次训练都会有测试。
提前终止为何具有正则化效果
暂略。
参数范数惩罚
又叫做参数共享,强迫某些参数相等。由于我们将各种模型或模型组件解释为共享唯一的一组参数。
和正则化参数使其接近(通过范数惩罚)相比,参数共享的一个显著优点是,只有参数(唯一一个集合)的子集需要被存储在内存中。对于某些特定模型,如卷积神经网络,这可能可以显著减少模型所占用的内存。
目前为止,最流行和广泛使用的参数共享出现在应用于计算机视觉的卷积神经网络(CNN)中。
使表示稀疏的方法
L1惩罚
Student-t先验导出的惩罚
KL散度惩罚
正交匹配追踪(Coatesand Ng(2011)证明OMP-1可以成为深度架构中非常有效的特征提取器)
模型平均
Bagging(bootstrap aggregating)是通过结合几个模型降低泛化误差的技术(Breiman,1994)。主要想法是分别训练几个不同的模型,然后让所有模型表决测试样例的输出。这是机器学习中常规策略的一个例子,被称为模型平均(model averaging)。采用这种策略的技术被称为集成方法。
不同的集成方法以不同的方式构建集成模型。例如,集成的每个成员可以使用不同的算法和目标函数训练成完全不同的模型。
bagging如何工作
Bagging涉及构造k个不同的数据集。每个数据集从原始数据集中重复采样构成,和原始数据集具有相同数量的样例。这意味着,每个数据集以高概率缺少一些来自原始数据集的例子,还包含若干重复的例子(如果所得训练集与原始数据集大小相同,那所得数据集中大概有原始数据集2/3的实例)。模型i在数据集i上训练。每个数据集所含样本的差异导致了训练模型之间的差异。
描述Bagging如何工作的草图。假设我们在上述数据集(包含一个8、一个6和一个9)上训练数字8的检测器,假设我们制作了两个不同的重采样数据集,Bagging训练程序通过有放回采样构建这些数据集。第一个数据集忽略9并重复8。在这个数据集上,检测器得知数字顶部有一个环就对应于一个8。第二个数据集中,我们忽略6并重复9。在这种情况下,检测器得知数字底部有一个环就对应于一个8。这些单独的分类规则中的每一个都是不可靠的,但如果我们平均它们的输出,就能得到鲁棒的检测器,只有当8的两个环都存在时才能实现最大置信度
用在
模型平均是一个减少泛化误差的非常强大可靠的方法。在作为科学论文算法的基准时,它通常是不鼓励使用的,因为任何机器学习算法都可以从模型平均中大幅获益(以增加计算和存储为代价)。
机器学习比赛中的取胜算法通常是使用超过几十种模型平均的方法。最近一个突出的例子是Netflix GrandPrize(Koren,2009)
类似的构建集成技术
一种被称为Boosting的技术(Freund and Schapire, 1996b, a)构建比单个模型容量更高的集成模型。通过向集成逐步添加神经网络,Boosting已经被应用于构建神经网络的集成(Schwenkand Bengio, 1998)。通过逐渐增加神经网络的隐藏单元,Boosting也可以将单个神经网络解释为一个集成。
是一种廉价的bagging集成近似
Dropout可以被认为是集成大量深层神经网络的实用Bagging方法。
当每个模型都是一个很大的神经网络时,这似乎是不切实际的,因为训练和评估这样的网络需要花费很多运行时间和内存。
通常我们只能集成5~10个神经网络,如Szegedy et al.(2014a)集成了6个神经网络赢得ILSVRC,超过这个数量就会迅速变得难以处理。Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的神经网络。
与bagging不一样的地方
Bagging:模型之间独立,显式的训练少量模型(通常上限是容纳6个模型)
dropout:模型共享参数,隐式的训练指数个模型。
dropout常见的参数设定
一个输入单元被保留的概率为0.8,一个隐藏单元保留的概率为0.5。
dropout和bagging在预测上
dropout的p(y|x,u)项却包含多达指数级的项,因此必须要简化。
简化法一;采样近似推断,平均许多掩码的输出,即是10-20个掩码就足以获得不错的表现。
简化法一;采样近似整个集成的预测,只需一个前向传播的代价。要做到这一点,我们改用集成成员预测分布的几何平均而不是算术平均。Warde-Farleyet al.(2014)提出的论点和经验证据表明,在这个情况下几何平均与算术平均表现得差不多
dropout相比与其他正则化的优点
复杂度低:每个样本每次更新只需o(n)的计算复杂度。根据实现,也可能需要o(n)的存储空间来持续保存这些二进制数(直到反向传播阶段)。
不限制模型:几乎在所有使用分布式表示且可以用随机梯度下降训练的模型上都表现很好。包括前馈神经网络、概率模型,如受限玻尔兹曼机(Srivastava et al., 2014),以及循环神经网络(Bayer and Osendorfer, 2014;Pascanuet al.,2014a)。许多效果差不多的其他正则化策略对模型结构的限制更严格。
dropout与隐藏层注入噪声进行数据增强的对比
Dropout强大的大部分原因来自施加到隐藏单元的掩码噪声,了解这一事实是重要的。这可以看作对输入内容的信息高度智能化、自适应破坏的一种形式,而不是对输入原始值的破坏。例如,如果模型学得通过鼻检测脸的隐藏单元hi,那么丢失hi对应于擦除图像中有鼻子的信息。模型必须学习另一种hi,要么是鼻子存在的冗余编码,要么是像嘴这样的脸部的另一特征。传统的噪声注入技术,在输入端加非结构化的噪声不能够随机地从脸部图像中抹去关于鼻子的信息,除非噪声的幅度大到几乎能抹去图像中所有的信息。破坏提取的特征而不是原始值,让破坏过程充分利用该模型迄今获得的关于输入分布的所有知识。
dropout会带来的问题
减小的模型的有效容量,因此我们必须增大模型规模。
需要更多的训练算法的迭代次数,但这个可以换来最佳验证集的误差会低很多
极少训练样本时,dropout不会生效。
什么时候推荐用正则化
不能忍受大的模型计算代价
小样本上
dropout变种
快速Dropout(fast dropout):快速Dropout在小神经网络上的性能几乎与标准的Dropout相当,但在大问题上尚未产生显著改善或尚未应用。
浅谈batchnorm
在训练时向隐藏单元引入加性和乘性噪声重新参数化模型。批标准化的主要目的是改善优化,但噪声具有正则化的效果,有时没必要再使用Dropout。
神奇的过程
如图像原图添加了某种特别噪声就生成了对抗样本。
在人看来对抗样本和原来的样本没有差别,但计算机在对抗样本上误差率接近100%
对抗训练
减少原有独立同分布的测试集的错误率——在对抗扰动的训练集样本上训练网络
对抗样本产生原因
神经网络主要是基于线性块构建的。因此在一些实验中,它们实现的整体函数被证明是高度线性的。这些线性函数很容易优化。
不幸的是,如果一个线性函数具有许多输入,那么它的值可以非常迅速地改变。如果我们用∈改变每个输入,那么权重为w的线性函数可以改变∈‖w‖1之多,如果w是高维的这会是一个非常大的数。
对抗训练通过鼓励网络在训练数据附近的局部区域恒定来限制这一高度敏感的局部线性行为。这可以看作一种明确地向监督神经网络引入局部恒定先验的方法。
线性模型无法抵抗对抗样本
对抗训练有助于体现积极正则化与大型函数族结合的力量。纯粹的线性模型,如逻辑回归,由于它们被限制为线性而无法抵抗对抗样本。神经网络能够将函数从接近线性转化为局部近似恒定,从而可以灵活地捕获到训练数据中的线性趋势同时学习抵抗局部扰动。
切面距离
暂略