正则化的具体做法
全面讨论泛化(generalization)和正则化(regularization)
来源:PaperWeekly本文约5800字,建议阅读9分钟本文全面地讨论机器学习和深度学习中的泛化(generalization)/正则化(regularization)。
模型泛化能力,是设计和评估一个机器学习 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 之后无意义的训练。
1『引子』
定义:正则化(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)是经验损失(emp
erical loss,在训练样本上计算损失),并非真实损失(所有可能样本的损失),最终到的模型只是在训练集上损失小。因此,我们不能放任样本过于复杂、只拟合训练数据,所以需要正则化。
下面就来逐一讨论不同的 regularizer 吧!
2『Norm Penalty,及其深度学习中的实现方式』
假设模型输入为 ,输出为 ,参数为 ,在训练模型的过程中,解决优化问题 来求解参数 。Norm penalty 就是在原本的目标函数上,添加一个基于参数 norm 的惩罚项 ,新优化问题变成了:
是个超参数,用来调整惩罚的力度, 相当于没有 regularization, 增加代表强化 regularization,实际使用过程中往往通过交叉验证来调整。 理论上是基于 L-p norm(任意 p)的函数,但常用的是 L1 和 L2-norm。
L1-regularization:基于 L1-norm 的惩罚项(向量 L1-norm 定义:),添加在回归模型也叫LASSO,优化问题变成了 ,能起到增强 稀疏性(sparsity)的特殊效果,在需要稀疏特征
提取(feature selection)的情况下非常重要。
比如物体识别,如果一只猫的图片,头有点像狐狸,身子有点像狗,我们希望输出 ,而不是 猫狐狸狗 。另外,稀疏性表示(sparse representation)本身是一类 regularization,除了基于 L1 penalty 的方法,还有很多方式,我们之后会讨论到。
L2-regularization:模型的优化问题变成了 ,它在几乎所有的 ML 模型都可以用,也真的太常用了。
L1-regularization 促进稀疏性,L2-regularization 能降低模型容量,减少 overfitting,这已经是耳熟能详的。但从理论上看,他们究竟起了什么作用、怎样起的作用呢?我们先谈 L2,再谈 L1。
2.1 从理论角度看L2-regularization的机制
模型:
从求解过程来看: ML 模型往往通过梯度下降法(gradient decent)来迭代更新参数,在第
k 个 iteration,更新公式为:, 是 learning rate。易见,L2-norm penalty 是通过在每一次迭代时以固定比例缩小、衰减参数,来避免复杂的模型。 基于此的实现手段称为 weight decay 我们稍后提到它的具体问题。
从最终解的结果来看: 添加 L2-regularization 后得到的解,相比于没有 regularization,究竟有什么区别?假设 为原优化问题的最优解,即 ,而 为加了 regularization 后的最优解,即 ,特征值分解提供了很好的视角。
首先我们对问题做一个简化,假设 为二次函数(quadratic function),如果它不是,那我们就在 周围对 做 quadratic 近似, 可以表达为 ,这里的 H 是 Hessian 矩阵。我们知道, 的最优解是一阶导 = 0 的解,也就有 ,也就有 。
我们得到了 与 之间的变换关系,答案即将揭晓了!让我们做个特征值分解 ,得到 ,答案来了: 在 H 特征向量的方向上进行了缩放 ! 具体地,在第 个方向上的参数分量,以 的倍率缩小,显然,特征值越小的方向,也就是不重要的方向上,缩小的程度越严重!
总结一下就是,L2-regularization 使重要方向上(目标函数非常敏感的方向)参数分量获得保存,在不重要的方向上得到衰减减,来实现精简参数的效果!
▲ L2-regularization 的工作机理:在不重要的方向上(图中横向:特征值小,目标函数不敏感)大幅衰减参数,在重要的方向上(图中纵向,特征值大,目标函数敏感)小幅衰减参数,最终实现降低模型复杂度的作用
2.2 从理论角度看L1-regularization的机制
模型:
从求解过程来看: 由于 L1-norm 在 处不可导,我们无法使用梯度,而需要次梯度(subgradient)。在第 k 个 iteration,更新公式为:, 是 learning rate。易见,相比于没有 regularization,L1-regularization 在更新时额外根据参数的符号来调整,如果参数为正,就减少一点,如果为负,就增加一点,这样就使得参数向 0 靠近。因此,L1-regularization 是通过在每一次迭代时,依据符号调整数值,使其趋近于 0。
从最终解的结果来看: 我们以一个进一步简化的情况来讨论,假设 Hessian 矩阵 是对角线矩阵,(实际可能不是,但我们这里只想看一个最简单直观的例子),并假设对角线上的每个值 (保证目标函数是凸函数),我们和之前一样,对加入了 L1-regularization 的目标函数做一个二次函数近似 ,可以推导得出,L1-regularization 的最优解满足 。
答案揭晓了!L1-regularization 使低于一定阈值的参数全部清 0,高于阈值的参数减少一部分,来精简参数并迫使参数稀疏!具体地,在第 个维度上,如果 ,参数被直接逼成 0,这就造成了稀疏性;反之如果大于这个阈值,这个维度上的参数值被减少一定量,但溢出阈值的那部分被保留下来。
2.3 实现方式:weight decay与reprojection
具体地在 ML 和 DL 中,norm penalty 一般有两种方式实现,各有优劣。
第一种,最常用的,是 weight decay,根据 gradient descent 时的 update rule,我们只需要在每一次迭代对参数做一点衰减,尤其对于 L2-regularization,参数只需乘一个缩放引子。关于 weight decay 的使用和优劣有一些值得注意的地方。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。