7. 深度学习实践:正则化(续)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/niaolianjiulin/article/details/79062877

接上篇:7. 深度学习实践:正则化

7. 参数绑定和参数共享

表达对模型参数的先验知识:经常想要表达的一种常见依赖是某些参数应当彼此接近。例如,两个模型执行相同的分类任务,但输入分布稍有不同,因此我们认为模型参数应彼此靠近。可通过正则化利用这个信息,具体的例如,参数范围惩罚为 Ω(w(A)w(B))=||w(A)w(B)||22

上述2006年提出,正则化一个模型(监督模式下的分类器)的参数,使其接近于另一个无监督模式下的模型(捕捉观察到的输入数据的分布)参数。

更常用:强迫某些参数相等。这种正则化方法称为参数共享。CNN中常用此:在图像多个位置上共享参数,相同的特征在输入的不同位置上计算获得。显著降低了模型参数量。

8. 稀疏表示

权重衰减直接惩罚模型参数。另一种策略:惩罚NN中的激活单元,稀疏化激活单元。这种策略间接地对模型参数进行了复杂惩罚。

L1惩罚诱导稀疏的参数:

这里写图片描述

A是参数,较为稀疏。

另一种是表示稀疏:

这里写图片描述

h是y的函数,表示存在于y中的信息,但只是用一个稀疏向量来表示。

表示的范数惩罚正则项:

这里写图片描述

例如可用L1惩罚使得表示稀疏:

这里写图片描述

还有一些方法通过激活值的硬性约束来获得表示稀疏。例如正交匹配追踪(OMP-k法)通过解决约束优化问题,将输入值x编码为表示h:

这里写图片描述

W被约束为正交,则 Wh 可以看做将 h 投入到 W 各基向量上。非零特征值小于k。则 h 会保留 k 个和 x 对应的较大量,较小分量都为0了。

9. Bagging和其他集成方法

关于集成学习的论述,见之前博文:

《统计学习方法》笔记08:boosting(1)
《统计学习方法》笔记08:boosting(2)
《西瓜书》笔记08:集成学习

例子讲的挺好:

这里写图片描述

描述Bagging如何工作的草图。假设我们在上述数据集(包含一个 8, 一个 6 和一个 9)上训练数字 8 的检测器。假设我们制作了两个不同的重采样数据集。Bagging训练程序通过替换采样构建这些数据集。第一个数据集忽略 9 并重复 8。在这个数据集上,检测器得知数字顶部有一个环就对应于一个 8。第二个数据集中,我们忽略 6 并重复 9。在这种情况下,检测器得知数字底部有一个环就对应于一个 8。这些单独的分类规则中的每一个都是不可靠的,但如果我们平均它们的输出,就能得到鲁棒的检测器,只有当 8 的两个环都存在时才能实现最大置信度。

问:NN的解可达到足够多的变化,意味着可从模型平均中受益,但所有模型都是在同一数据集上训练的啊?

答:NN中存在着随机初始化,小批量的随机选择,超参数的差异等,往往足以使得集成中的不同成员具有部分独立的误差。

模型平均是一个减少泛化误差的非常强大可靠的方法。ML比赛中取胜算法往往集成几十个模型。我们在TSA比赛(2017年5月-6月)末期时,将不同模型(LR,LightGBM,XGB)的预测结果,仅仅做了个简单的求和平均,就实现了千分位上的提升,确实很神奇。

作者也说到,不是所有构建集成的技术都是为了让集成模型比单一模型更加正则化。Boosting技术是为了构建比单个模型容量更高的集成模型。但总体来看,都是以提高模型的泛化能力为目的。

10. Dropout

随机失活:提供了正则化一大类模型的方法,计算方便,功能强大。可以被认为是集成大量深层NN的实用的Bagging算法。

NN一个模型通常很大,直接使用Bagging方法不太现实,时间和内存上开销巨大。2014年有集成6个网络从来赢得ILSVRC竞赛的例子。然而Dropout提供了一种廉价的Bagging集成近似,能够训练和评估指数级数量的NN。

具体的,Dropout训练的集成包括:所有从基础网络除去非输出单元后形成的子网络。

这里写图片描述

注:此处仅作示例。该网络较小,子集中有的没输入,有的没路径。当层较宽时,这个问题不太可能出现。

NN基于一系列仿射变换和非线性变换。我们只要将一些单元的输出乘以0就可以有效删除一个单元。具体的,在训练中使用Dropout时,使用基于小批量的学习算法和较小的步长,每次在小批量中加载一个样本,然后随机抽样应用于网络中所有输入和隐藏单元的不同二值掩码。对于每个单元,掩码是独立采样的(彼此间失活不相关的)。掩码值=1的采样概率是训练前的一个超参数,比如50%的概率,则随机失活有一半单元。通常在一个小批量训练的NN中,一个输入单元失活概率为0.2,隐藏单元失活的概率为0.5。然后运行前向传播,BP,学习更新,和之前一样的。

这里写图片描述
这里写图片描述

上图是一个前馈网络。下图是Dropout的前向传播。随机对向量 μ 进行采样,网络中每个单元对应一项。 μ 中的每项都是二值的,且独立于其他项采样。超参数采样频率是1,隐藏层采样概率通常为0.5,输入采样频率为0.8。网络中每个单元乘以相应的掩码,然后正常的继续前向传播。这相当于随机选择一个子网络继续进行。

Dropout下,所有模型共享参数。每个模型继承自父网络参数的不同子集。参数共享使得在有限可用的内存下表示指数级数量的模型变得可能。

假定模型输出一个概率分布。在Bagging情况下,每个模型i产生一个概率分布,集成的预测推断通过算术平均值求出。在Dropout下,通过掩码u定义每个子模型的概率分布,算术平均值计算为:

这里写图片描述

p(u)是训练时采样u的概率分布。该求和包含多达指数级的项,不可计算。一个更好方法能不错的近似整个集成的预测,且只需要一个前向传播即可,改用集成成员预测分布的几何平均而非算法平均。通过几何分布直接定义的非标准化概率为:

这里写图片描述

标准化集成为:

这里写图片描述

涉及Dropout一个重要观点是:可通过评估模型中 p(y|x) 来近似 pensemble ,该总模型具有所有单元,但将模型的权重修改为和单元i的概率的乘积,以得到从该单元输出的正确期望值。该法称为:权重比例推断规则。未有理论分析,但实践不错。

因为通常使用 p=0.5 的包含概率,权重比例规则一般相当于训练结束后将权重除以2(乘以p=0.5),然后使用该模型 (普通版)。实现相同结果的另一种方法是训练期间将单元的状态乘以2(除以p=0.5,反向随机失活),然后正常使用。目的是保证测试时一个单元的期望总输入与训练时该单元的期望总输入大致相同。

Dropout强大的大部分原因:施加到隐藏单元的掩码噪声。破坏了提取的特征,而非原始值,让破坏过程充分利用该模型迄今获得的关于输入分布的所有知识。

11. 对抗训练

在很多情况上,NN在独立同分布的测试集上进行评估已达到人类表现。我们要怀疑模型是否获得了真正的人类层次的理解。2014年在精度达到人类水平的NN上,通过优化过程故意构造数据点,其上误差率接近100%。模型在该点的输出与附近数据非常不同。人类基本不会察觉原始样本和对抗样本的差异,但网络会做出非常不同预测。

这里写图片描述

左图是原始样本,加上点噪声,右图是生成的对抗样本。人不会觉得有啥不同,但模型从熊猫判断成了长臂猿。

11.1 对抗训练

谈论这个和正则化有什么联系呢?我们可以通过对抗训练,减少原有独立同分布测试集的错误率——在对抗扰动的训练集样本上训练网络。即拿左、右图训练网络,提高网络泛化能力。

为什么对抗样本会这样?过渡线性。NN主要是基于线性块构建的,在一些实验中,它们实现的整体函数被证明是高度线性的。如果一个线性函数具有许多输入,那么其值可以非常迅速的改变。如果用 ϵ 改变每个输入,那么权重为 w 的线性函数可以改变 ϵ||w||1 之多。如果w是高维的,这会是很大的数。

对抗训练:鼓励网络在训练数据附近的局部区域恒定,来限制这一高度敏感的局部线性行为。可看做是一种明确的向监督NN引入局部恒定先验的方法。

纯粹的线性模型,如LR,由于被限制在线性而无法抵抗对抗样本。NN能够将函数从接近线性转化为局部近似恒定。可灵活捕捉训练集的线性趋势的同时,学习抵抗局部扰动。

11.2 半监督学习

对抗样本也可做半监督学习。在数据集中某些点 x 处无标签,模型为其分配一个标签 y^ 。这个标签未必为真,但如果模型高品质,则 y^ 提供正确标签额可能性很大。

再搜索一个对抗样本 x ,导致分类器输出一个标签 y ,且 yy^ 。不适用真正标签,而是由训练好的模型提供标签产生的对抗样本被称为:虚拟对抗样本。然后训练分类器为其分配相同的标签。

这鼓励分类器学习:一个沿着未标签数据所在流形上任意微小变化都很鲁棒的函数。前提假设是:不同类别通常位于不同流形上,小扰动不会使得数据点从一个类的流形跳到另一个类的流形上。

12. 正切传播、流形正切分类器

该部分仅了解下概念。书中未做深入讨论。

这里写图片描述

曲线表示不同类别的流形,嵌入到二维空间中的一维流形。选择一个点,绘制一个与类别流形相切的向量(Tangent)和一个相交的向量(Normal)。我们希望分类函数在垂直于流形方向上快速变化(跨类),并且在类别流形的方向上保持不变。这就是正切传播和流形正切分类器的主要思想的示意图。

猜你喜欢

转载自blog.csdn.net/niaolianjiulin/article/details/79062877