全面讨论泛化 (generalization) 和正则化 (regularization) — Part 1
©作者 | 李诗淼
学校 | 卡内基梅隆大学
研究方向 | Physics-informed ML
模型泛化能力,是设计和评估一个机器学习 or 深度学习方法时无比重要的维度,所以我想通过一系列文章,与大家全面地讨论机器学习和深度学习中的泛化(generalization)/正则化(regularization),一方面从多角度理解模型的泛化问题,另一方面,从泛化角度来解释机器学习和深度学习中的很多方法(norm panalty, weight decay, dropout, parameter sharing等许多)。
这里的大部分内容基于 Ian Goodfellow 的《Deep Learning》一书第七章“Regularization for Deep Learning”(墙裂推荐!),并结合一些其他文章和我自己的经验。
这个系列的主要内容有:
引子
1. 定义:正则化(regularization)是所有用来降低算法泛化误差(generalization error)的方法的总称。
2. 正则化的手段多种多样,是以提升 bias 为代价降低 variance。
3. 现实中效果最好的深度学习模型,往往是【复杂的模型(大且深)】+【有效的正则化】。
目录:正则化方法(Regularizer)
1. Norm penalty:常用 L1/L2 regularization,理论机制不同,按特征方向重要性,L1 以阈值“削砍”参数分量,L2 “缩水”参数分量;深度学习中的实现方式有【weight decay】和【硬约束(重投影)】两种,各有不足。
2. L2-regularization 的特殊作用:解决【欠定问题】,调整协方差矩阵(covariance matrix)使其可逆。
3. Dropout layer 与 batchnorm layer:dropout 本质是一种 ensemble method;dropout 与 batchnorm 用于 regression 时有弊端;同时使用时理论上有冲突。
4. 深度学习的 Early stopping:减少 overfit 之后无意义的训练。
引子(可以速读或略过哦)
定义:正则化(regularization)是所有用来降低算法泛化误差(generalization error)的方法的总称。
在机器学习中,为了让模型不局限于训练集上,我们通常采用很多手段来降低测试集误差(test error),或者说泛化误差(generalization error),未见过的新样本,我们也希望模型能表现良好。这些手段和方法又往往是以训练误差(training error)升高为代价的。所有用来降低泛化误差的手段和方法统称为正则化(regularization);单独一种手段,可以称之为一个 regularizer。
手段多样,是以提升 bias 为代价降低 variance。
正则化的手段和方法多种多样,常见的比如给模型添加约束、给目标函数加惩罚项(其实是一种软约束)、模型集成(ensemble method)等等。采用约束或惩罚的手段,所起的作用可以是:融入先验(prior knowledge)、使模型变简单、把欠定问题转化成正定/超定问题(比如样本数量低于特征维度时,linear regression 无法使用,需要 ridge regression 才能有解)等等。
在深度学习中,对模型添加正则化,是以提升偏差(bias)为代价降低方差(variance)。一个有效的 regularizer,就是要很好地折中平衡 bias 和 variance,使 variance 大幅降低,而又不过度增加 bias。
现实中,效果最好的深度学习模型往往是【复杂的模型(大且深)】+【有效的正则化】。
现实的深度学习任务,比如处理图像、音频、文本,往往本身就是复杂的,因此我们设计复杂的神经网络结构,提供足够的模型容量(model capacity),才有可能描述输入-输出之间的复杂映射。神经网络中的参数取不同的值对应不同的模型,这些所有可能的模型构成了一个模型集(model class),大多数情况下,即使我们用复杂的结构,真实的映射也不在我们所选择的这个 model class 中。
然而,我们却又只有有限的数据,用有限的数据训练一个模型,即使真实的映射在 model class 中,我们一定能找到吗?不一定!因为训练使用的损失函数(loss)是经验损失(emperical loss,在训练样本上计算损失),并非真实损失(所有可能样本的损失),最终找到的模型只是在训练集上损失小。因此,我们不能放任样本过于复杂、只拟合训练数据,所以需要正则化。
下面就来逐一讨论不同的 regularizer 吧!
Norm Penalty,及其深度学习中的实现方式
假设模型输入为 ,输出为 ,参数为 ,在训练模型的过程中,解决优化问题 来求解参数 。Norm penalty 就是在原本的目标函数上,添加一个基于参数 norm 的惩罚项 ,新优化问题变成了:
是个超参数,用来调整惩罚的力度, 相当于没有 regularization, 增加代表强化 regularization,实际使用过程中往往通过交叉验证来调整。 理论上是基于 L-p norm(任意 p)的函数,但常用的是 L1 和 L2-norm。
L1-regularization 促进稀疏性,L2-regularization 能降低模型容量,减少 overfitting,这已经是耳熟能详的。但从理论上看,他们究竟起了什么作用、怎样起的作用呢?我们先谈 L2,再谈 L1。
2.1 从理论角度看L2-regularization的机制
2.3 实现方式:weight decay与reprojection
2. 给每层 NNlayer 不同的 decay?研究发现,在神经网络中,有时候每一层 layer 使用不同的 weight decay 常数会得到更好的效果。但是可能的组合太多了,很难找到最正确的配置。
- 对每一层神经网络的参数矩阵,约束其列向量的 norm,而不是整个矩阵的 norm。这样可以有效防止某一个神经元的 weight 过大。分析发现,这其实等价于对每个神经元的 weight,用不同的常数来做 weight decay。
2. 重投影稳定性更高,可以使用较大的 learning rate。Hinton 的研究提出使用硬约束+大 learning rate 来快速探索参数,并保持稳定性。
4. 选定常数后,weight decay 可以在更新参数的同时一步实现,但重投影则需要额外的步骤。
L2-regularization与【欠定问题】
此时的解决方案之一就是采用ridge regression,优化问题变成了
数学上与 L2-regularization 一模一样, 此时的解变成了
求逆的矩阵一个满秩的可逆矩阵,使欠定问题得以求解。从特征值的角度解释,协方差矩阵的特征值都是非负的,ridge regression 使所有特征值增加 c,保证所有特征值都为正,矩阵变得可逆。
Dropout layer
4.1 促进泛化的机理是什么呢
4.2 什么情况下dropout没有用,甚至使结果变差?
4.3 与batchnorm一起使用时的问题:variance shift
实际上,我们经常发现 dropout 和 batchnorm 一起使用,比如 DNN 中这样搭配
layers = [
nn.Linear(in_size, 1024),
nn.BatchNorm1d(1024),
nn.ReLU(),
nn.Dropout(0.2),
......
然而,有研究提出,dropout 和 batchnorm 一起用时有可能会使效果变差,这是因为,当我们结束训练进入测试时,dropout 会改变一个神经元的方差(variance),而 batchnorm 由于归一化,在测试时,则会致力于保持训练时所累积的统计方差。这种 variance 上的冲突,被称为 variance shift,研究发现他会导致测试阶段不稳定。有兴趣的可以详细阅读这篇文章“Understanding the Disharmony between Dropout and Batch Normalization by Variance Shift”。
Early stopping
- 预热时长 -n:先预训练 n 个 epochs,不测试模型,之后开始训练+测试+训练+测试.....
- 耐心 -p:当连续 p 个 epochs 都观测到测试结果变差,则放弃训练
- 最佳模型:训练过程中保存和更新迄今为止的最佳模型
更多阅读
#投 稿 通 道#
让你的文字被更多人看到
如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。
总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。
PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析、科研心得或竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。
📝 稿件基本要求:
• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注
• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题
• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算
📬 投稿通道:
• 投稿邮箱:[email protected]
• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者
• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿
△长按添加PaperWeekly小编
🔍
现在,在「知乎」也能找到我们了
进入知乎首页搜索「PaperWeekly」
点击「关注」订阅我们的专栏吧
关键词
神经元
方法
矩阵
正则化
深度学习
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。