
























前言
在上一篇中,我们读到了AI发展和计算机视觉的一些交叉领域及其近况,并了解了ImageNet图像数据集、以及数据集挑战的一些优选模型的案例——例如AlexNet、ResNet等。
这次课件会集中关注上次没有展开讨论的一个话题——正则化(Regularization)。在读完这篇后我们会发现,这类考虑更多还是模型训练方面的优化措施,主要针对“防止模型过度拟合”,以及“设计出性能和成本综合可行的方案”。
本文还是以翻译PPT页内容为主,打星号的部分则是我的补充说明。
1 正则化——Regularization
人们对学习算法做的一类调整,试图降低它的泛化误差而非训练误差。
*泛化误差(generalization error)是指, 模型应用在同样从原始样本的分布中抽取的无限多数据样本时,模型误差的期望。
*训练误差(training error)是指, 模型在训练数据集上计算得到的误差。
通过什么策略来确认一个函数比另一个更好呢?(*后面的章节会介绍)
*这一段通俗的说就是——正则化通过引入修正项或惩罚项的方式,来避免过拟合,同时提升模型的泛化能力(对非训练数据的预测准确度)。
2 参数的范数惩罚——Parameter norm penalty
相比于从假设空间排除(不合适的)函数,应用某种策略来建立两种解决方案之间参照,以减少测试误差。
*假设空间(hyopthesis space)是模型在训练过程中可选择的映射函数集合。
*例如对图C的(过拟合)情况,使用正则化过程。
非常大的正权重值会被与之相当的负权重值“取消”(例如,由于相关联的模型参数),最终会建建模出噪声。
*指参数权重过度贴合训练数据,导致泛化能力反而下降——可能对于训练数据正确率很高,但是泛化推测可能误差较大。具体例子可以从图中看出。
理念:类比成在穿大腰围的裤子时,又系上腰带。
例如:目标是最小化训练数据的误差平方和。
L2范式:惩罚平方权重值——公式如图中的蓝框。
L1范式:惩罚权重绝对值——公式如图中的蓝框。
备注:只有权重项会被惩罚,而不影响偏置项。
*这里直观的理解就是——引入惩罚项,使权重更大计算误差值就更大。文末会提供L1和L2范数的一篇资料。
这里的范数惩罚项的乘数α是一个超参数。
图中展示了有着不同正则化等级的同一神经网络。哪个模型有着最大的α值?(*即最大的范数惩罚系数)
*从图像中可以看出,是图C;且α值应该是递增的。
SSE(和方差,sum of squrared errors)开销的最小值是图中的β点。
红色范围是误差平方函数。
蓝色范围分别是两种不同的正则化约束函数。
3 早停机制——Early stopping
*早停机制之前一篇中也介绍过,即在模型的测试误差又开始增大前就及时退出训练。
结合初始化于原点周围的参数,早停机制能像参数范数惩罚一样运作(例如,L2,不需要调试超参数)。
4 数据集增强——Dataset augmentation
*增加训练数据也能改善模型的过拟合情况,提高预测能力。
回顾——过拟合是有着较大表征容量的模型会面临的风险,而AlexNet有着6千万个参数。
数据增强策略:
随机的补丁和镜像图片(可额外增加2048倍的数据)
调整RGB通道(使用PCA以增加多种主成分)
*PCA (principal component analysis, 主成分分析) 是一种丢失原始数据信息最少的线性降维方式。
例如:数据镜像和翻转,对于人物识别训练可能就不是很好的选择。
*这部分方案课件介绍的比较简短,文末会附更多数据增强的细节资料。
5 丢弃单元——Dropout
(为了)减少做出错误预测的概率。
假设:
有n的分类器执行二元分类任务
每个分类器有着 ε 的误差概率
分类器是相互独立的(*在实践中是不现实的)
概率质量函数能表达一个群体的预测误差(公式如图)
例如,n=11,ε=0.25,k=6(数据子集的数量)——误差概率约等于0.034,远小于单个算法模型的误差0.25。
*后面会提到,之所以实践中没法真正独立执行多个关联模型,因为分类模型参数量往往很大,内存空间上多实例首先就不可行。
引导集群算法(Bootstrap aggregating 1994),也称为装袋算法。它的思路是对训练数据集的若干个子集训练多个子模型,并最终以“投票表决”的方式进行预测。
通过从“引导采样”抽选并替换样本数据。
红字部分依次:
训练时可能遇到重复的数据;
一些样例可能在训练数据中缺失——例如第一回合没有5;
每个分类器基于不同的数据子集进行训练;
预测使用“硬”投票机制(即单调头名制),或基于均值回归的“软”投票机制。
*图中展示了两个集群成员各自的训练数据及预测。
装袋法的基本思路是——训练算法在不同的随机数据子集上重复(训练多个模型)。
为什么装袋法是一种贫瘠的神经网络方案?
为每种架构选择最优的超参数是很耗时的。
应用多个神经网络通常是不可行的,因为(单个)模型需要大量内存以及昂贵的运行计算开销。
理念:通过在训练时进行丢弃(一些节点)来近似模拟装袋过程,使得模型中的不同子模型能基于不同的训练数据进行训练。
*图中绿色部分,在输入层丢弃了20%的节点;紫色部分,在隐藏层丢弃了50%的节点。
*PPT的底部标注了,这个方案来自2014年的一篇论文——一个简单的阻止神经网络过拟合的方案。
在训练时,依据以上论述的唯一的变化是,模型的正向和反向训练都是执行在子网络上。
一个集群在测试时是以不进行丢弃的状态进行模拟的。
为反映神经网络对于更小量激活信号(相对于测试时)的预测能力(例如,从2或3个单元输入,而不是5个单元),训练时每个单元的输出权重应被乘以它被丢弃的概率。
丢弃方案是对装袋多个子模型的一种开销较小的模拟方案——训练算法重复地执行不同的随机数据子集(对于不同的随机子模型)。
丢弃方案区别与一些其它的子网络方案,它不能:
训练模型收敛(相对的,它只训练其中一步)
独立训练(相对的,其中的子模型共享参数)
这个方案收到了进化过程中的性别机制的启发。“...有性繁殖扮演的角色不仅是有助于新的基因 的扩散传播,也是为了通过降低共同适应的复杂度来促进这一过程——进而提高新基因优化个体适应性的几率。”
“类似的,丢弃方案中的神经网络中的隐藏层必须学习与其它随机采样的单元协作。这能使得每个隐藏层单元更健壮,驱使它更多依赖自身来产生有用的特征(识别),而不是依赖其它的单元来纠错。”
(丢弃方案)神经网络中的单元学习与其它不同的子集单元协同时自身变得有用,而不是与其它单元结合才能生效。例如,减轻需要用大的正权重来取消大的负权重的情况——(如前面所述)这是一种发生了过拟合的标志。
(丢弃方案产生集群)是一种通过将单元随机归零的方案替代为单元乘上噪声值的方案,这也是卷积层的一种通用方案。
你认为是什么原因使丢弃法之前没有用于卷积层?例如,对于之前论述过的分类算法,它(丢弃法)只用于了全连接层。
(因为这些模型)通过参数捆绑方式降低了参数数量,已经提供了足够强的正则化方案。
*对于DropOut方案的细节,文末会附一篇介绍。
6 批量归一化——Batch Normalization
例如,2D损失函数:学习过程中可能发生低效的跳跃步骤,梯度下降过程可能需要更大的更新次数。
*这里是之前一篇中提到的,数据的标准化过程。
*通过标准化输入数据来简化学习过程,(以上图为例)均值为0、标准差为1。
*通过标准化,使得梯度下降过程更平滑,更容易找到最小值。
*批量范式层:每个层提供标准化值的平移和缩放操作,使其有新的均值和变化范围。
图中的子网络需要训练多少个参数?
*参数数量如图所示。对于想了解更多细节的,文末会附一篇资料进行说明。
*可以看到测试时节点中简化为了2个步骤。
优势——更平滑和优化的函数,能导致:
更快的训练收敛
在不同的超参数和初始化配对时,学习能更稳定
更好的概括性能
缺点——引入了额外的层,会导致更多训练和测试时间。
结语
在上一篇中首次介绍了一些层级较多、参数量巨大的模型,并分析了之前人们面对层级多到一定程度模型的一些困难——例如上一篇介绍的跳跃连接,以及这次着重介绍的正则化方案。
正则化本身是一个稍微宽泛的概念,这篇中介绍的可以算是其中的一些细节方案——以及其中一些方案的演变过程。总的来说,更小的模型、更少的训练次数、更准确的预测一直是人们在机器学习中不断共同提升的一些目标。
接下来的几篇课件会不断补充一些神经网络的改良和优化设计的技术方案,例如下一篇会读到CNN的预训练和微调。
最后是资料链接:
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。