【机器学习】机器学习中的正则化项

在机器学习中我们时常会遇到模型过拟合的问题,这是由于我们所得到的的模型复杂度过大,过于完美地拟合了训练数据,也就导致模型在预测训练数据时效果很好而预测新数据时效果很差。解决过拟合问题的一个典型方法即是:正则化

1.损失函数和风险函数

首先我们介绍下按照何种标准来选择出最优的模型。这个标准就是由损失函数和风险函数来定义的。损失函数度量的是模型一次预测的好坏,风险函数度量的是平均意义下模型预测的好坏。

监督学习问题是在假设空间 F F F中选取模型 f f f作为决策函数,对于给定的输入 X X X,由 f ( X ) f(X) f(X)给出相应应的输出 Y ^ \hat Y Y^,这个输出的预测值 f ( X ) f(X) f(X)与真实值 Y Y Y可能一致也可能不一致,用一个损失函数(loss function)或代价函数(cost function)来度量预测错误的程度。损失函数 f ( X ) f(X) f(X) Y Y Y的非负实值函数,记作 L ( Y , f ( X ) ) L(Y, f(X)) L(Y,f(X))

常用的损失函数有:

  1. 0-1损失函数
    L ( Y , f ( X ) ) = { 1 Y ≠ f ( X ) 0 Y = f ( X ) L(Y,f(X))=\begin{cases} 1& Y\ne f(X)\\ 0& Y=f(X) \end{cases} L(Y,f(X))={10Y=f(X)Y=f(X)
  2. 平方损失函数
    L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y,f(X))=(Y-f(X))^2 L(Y,f(X))=(Yf(X))2
  3. 绝对损失函数
    L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y,f(X))=|Y-f(X)| L(Y,f(X))=Yf(X)
  4. 对数损失函数或对数似然损失函数
    L ( Y , P ( Y ∣ X ) ) = − l o g P ( Y ∣ X ) L(Y,P(Y|X))=-log P(Y|X) L(Y,P(YX))=logP(YX)

损失函数值越小,模型就越好。由于模型的输入、输出 ( X , Y ) (X,Y) (X,Y)是随机变量,遵循联合分布 P ( X , Y ) P(X,Y) P(X,Y),所以损失函数的期望是
R e x p ( f ) = E p [ L ( Y , f ( X ) ) ] = ∫ L ( y , f ( x ) ) P ( x , y ) d x d y R_{exp}(f)=E_p[L(Y,f(X))]=\int L(y,f(x))P(x,y)dxdy Rexp(f)=Ep[L(Y,f(X))]=L(y,f(x))P(x,y)dxdy
上式是在输入空间和输出空间上进行积分,是在理论上模型 f ( X ) f(X) f(X)关于联合分布 P ( X , Y ) P(X,Y) P(X,Y)的平均意义下的损失,成为风险函数(risk function)或期望损失(expected loss)。

我们学习的目标就是选择期望风险最小的模型。但是联合分布 P ( X , Y ) P(X,Y) P(X,Y)是未知的, R e x p ( f ) R_{exp}(f) Rexp(f)并不能直接求出来,正因为这样,才需要学习。

给定一个训练集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1, y_1), (x_2, y_2),...,(x_N, y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)}。模型 f ( X ) f(X) f(X)关于训练接的平均损失称为经验风险(empirical risk)或经验损失(empirical loss),记作 R e m p R_{emp} Remp
R e m p ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i)) Remp(f)=N1i=1NL(yi,f(xi))
期望风险 R e x p ( f ) R_{exp}(f) Rexp(f)是模型关于联合分布的期望损失,而经验风险 R e m p ( f ) R_{emp}(f) Remp(f)是模型关于训练样本集合的平均损失。根据大数定律,当样本容量 N N N趋于无穷的时候,经验风险 R e m p ( f ) R_{emp}(f) Remp(f)趋于期望风险 R e x p ( f ) R_{exp}(f) Rexp(f)。因此就想利用经验风险来估计期望风险,但是通常实际应用中训练数据有限,这种估计方法会不理想。这就引出了监督学习中两个基本策略:经验风险最小化和结构风险最小化。


1.1 经验风险最小化

经验风险最小化(empirical risk minimization,ERM)策略认为,经验风险最小的模型就是最优模型。根据这一策略求最优模型即是求解最优问题:
min ⁡ f 1 N ∑ i = 1 N L ( y i , f ( x i ) ) (1) \min_f \frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i)) \tag 1 fminN1i=1NL(yi,f(xi))(1)
当样本容量足够大时,经验风险最小化能保证很好的学习效果。如:极大似然估计(maximum likelihood estimation)就是经验风险最小化的一个例子。当模型是条件概率分布,损失函数是对数损失函数时,经验风险最小化就等价于极大似然估计。
但是当样本容量很小时,经验风险最小化学习的效果就难以保证了,常会出现过拟合(over fitting)现象。

1.2 结构风险最小化

结构风险最小化(structural risk minimization,SRM)就是为了防止过拟合而提出的策略,它等价于正则化(regularization)。结构风险是在经验风险上加上表示模型复杂度的正则化项(regularizer)或惩罚项(penalty term):
R s r m ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) R_{srm}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f) Rsrm(f)=N1i=1NL(yi,f(xi))+λJ(f)
其中 J ( f ) J(f) J(f)为模型的复杂度,模型 f f f越复杂,复杂度 J ( f ) J(f) J(f)就越大;反之,模型 f f f越简单,复杂度 J ( f ) J(f) J(f)就越小。这个复杂度表示了对复杂模型的惩罚。 λ ≥ 0 \lambda \geq 0 λ0是正则化系数,以权衡经验风险和模型复杂度。结构风险小就会迫使经验风险和模型复杂度都小。如:贝叶斯估计中的最大后验概率估计就是结构风险最小化的一个例子。当模型是条件概率分布、损失函数是对数损失函数、模型复杂度由模型的先验概率表示时,结构风险最小化等价于最大后验概率估计。

结构风险最小化策略认为结构风险最小的模型是最优模型。所以根据此策略求最优模型就是求解最优问题:
min ⁡ f 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) (2) \min_f\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f) \tag 2 fminN1i=1NL(yi,f(xi))+λJ(f)(2)


所以监督学习问题就变成了经验风险或结构风险函数的最优化问题 ( 1 ) (1) (1) ( 2 ) (2) (2)。此时经验风险或结构风险函数就是最优化的目标函数。

2. 过拟合

过拟合是指学习时选择的模型所包含的参数过多,以致于出现这一模型对已知数据预测很好,但对未知数据预测很差的现象。比如在吴恩达机器学习课程中的一个多项式拟合的问题,如图:
在这里插入图片描述
左侧图像表示欠拟合情况,指模型还未很好地捕捉住数据特性,对数据拟合不好。
右图即是过拟合情况,得益于高次多项式参数复杂,模型能够非常完美地拟合数据点,但是它太过完美了,只关注在了训练数据特性上,没有抓住数据背后真正的趋势/规律,因此对于新出现的数据点预测效果会很差。
中图即是较好的拟合情况,抓住了数据规律,对新数据预测也有较好效果,鲁棒性较好。

如何解决过拟合问题呢?一个方法就是下面将要说的正则化。

3. 正则化

如前文所说,正则化是结构风险最小化策略的实现,是在经验风险加上一个正则化项或者惩罚项。正则化项一般是模型复杂度的单调递增函数,模型越复杂,正则化值越大。正则化项可以是模型参数向量的范数。正则化一般具有以下形式:
min ⁡ f 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) \min_f\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i))+\lambda J(f) fminN1i=1NL(yi,f(xi))+λJ(f)
其中第1项为经验风险,第2项为正则化项, λ ≥ 0 \lambda \geq 0 λ0为正则化系数。

以线性回归为例,给定数据集 T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\{(x_1, y_1), (x_2, y_2),...,(x_N, y_N)\} T={(x1,y1),(x2,y2),...,(xN,yN)},其中 x ∈ R d x \in \R ^d xRd y ∈ R y \in \R yR x x x d d d维特征, y y y为一个实值量。在最基本的线性回归模型中,以平方误差为损失函数,我们的优化目标如下:
min ⁡ w 1 N ∑ i = 1 N ( f ( x i ; w ) − y i ) 2 (3) \min_w \frac{1}{N}\sum_{i=1}^{N}(f(x_i;w)-y_i)^2 \tag 3 wminN1i=1N(f(xi;w)yi)2(3)
其中 f ( x i ; w ) = w T x f(x_i;w)=w^Tx f(xi;w)=wTx
但是当样本特征很多,而样本数量相对较少的时候,上式很容易出现过拟合。为了缓解过拟合问题,可以对 ( 3 ) (3) (3)式引入正则化项。

若正则化项为 L 2 L_2 L2范数,则有:
min ⁡ w 1 N ∑ i = 1 N ( f ( x i ; w ) − y i ) 2 + λ 2 ∥ w ∥ 2 2 (4) \min_w \frac{1}{N}\sum_{i=1}^{N}(f(x_i;w)-y_i)^2 + \frac{\lambda}{2}\parallel w \parallel_2^2 \tag 4 wminN1i=1N(f(xi;w)yi)2+2λw22(4)
其中 ∥ w ∥ 2 2 \parallel w \parallel_2^2 w22表示向量 w w w L 2 L_2 L2范数的平方,即向量元素的平方和 ∑ i = 1 d w i 2 \sum_{i=1}^{d}w_i^2 i=1dwi2通常不考虑偏置。正则化系数 λ 2 > 0 \frac{\lambda}{2} > 0 2λ>0,这个 1 2 \frac{1}{2} 21仅是为了在求导的时候消去 L 2 L_2 L2范数的平方。 ( 4 ) (4) (4)式又称为“岭回归”(ridge regression),通过引入 L 2 L_2 L2正则化项,能有效降低过拟合风险。

若正则化项为 L 1 L_1 L1范数,则有:
min ⁡ w 1 N ∑ i = 1 N ( f ( x i ; w ) − y i ) 2 + λ ∥ w ∥ 1 (5) \min_w \frac{1}{N}\sum_{i=1}^{N}(f(x_i;w)-y_i)^2 + \lambda \parallel w \parallel_1 \tag 5 wminN1i=1N(f(xi;w)yi)2+λw1(5)
其中 ∥ w ∥ 1 \parallel w \parallel_1 w1表示向量 w w w L 1 L_1 L1范数,即向量元素的绝对值之和 ∑ i = 1 d ∣ w i ∣ \sum_{i=1}^{d} |w_i| i=1dwi。正则化系数 λ > 0 \lambda > 0 λ>0 ( 5 ) (5) (5)式被称为LASSO(Least Absolute Shrinkage and Selection Operator)。

L 1 L_1 L1范数和 L 2 L_2 L2范数都有助于降低过拟合风险,但 L 1 L_1 L1范数还能够带来“稀疏”解,即求得的 w w w有更少的非零分量。所以它们的主要作用是:

  • L 1 L_1 L1范数可以产生稀疏权值,可以用来特征选择。
  • L 2 L_2 L2范数可以防止过拟合。同样 L 1 L_1 L1范数也可以起到一定程度的防止过拟合作用。

3.1 L 1 L_1 L1正则化

L 1 L_1 L1正则化是如何产生“稀疏”解的呢?如何让某些参数为0的呢?同样还是拿大家常来解释这个作用的例子来看一下,研究线性回归损失函数,假设我们获取的数据 x i x_i xi仅有两个特征,在解 ( 4 ) (4) (4) ( 5 ) (5) (5)式得到的 w w w是一个2维向量,即 w 1 w_1 w1 w 2 w_2 w2,然后将 L 1 L_1 L1正则化项和平方误差项的等值线绘制在平面直角坐标系中。如:
在这里插入图片描述
上图中蓝色线表示平方误差项的等值线,即取值相同点的连线。红色线表示 L 1 L_1 L1正则化项的等值线。

平方误差项和 L 1 L_1 L1正则化项的交点 w ∗ w^* w即是 ( 5 ) (5) (5)式的最优解,可以看出来平方误差项和 L 1 L_1 L1正则化项的交点经常出现在坐标轴位置上,即某一维的取值会为0,比如上图中的 w 1 = 0 w_1=0 w1=0,这就相当于参数变少了,变得“稀疏”了。(至于为什么交点会在坐标轴上,个人的理解,只有当平方损失项正对着 L 1 L_1 L1正则化项才会在边上相交,否则很大概率会先交在顶点处。)类似地,对于高维 w w w向量, L 1 L_1 L1正则化项的形状会是有多个突出的角,这些角与平方损失项相交会比 L 1 L_1 L1其他部位与之相交的概率高,也就让某些维度的取值为0了。

再一点就是 λ \lambda λ取值的影响, λ \lambda λ取值越大,说明对模型参数惩罚越厉害,当然参数就越小了,由此 L 1 L_1 L1正则化项的形状就越小,这样就可能出现欠拟合的情况,平方损失项与 L 1 L_1 L1正则化项早早地相交了(或者说 w w w各维度取值都趋近0),还没往极值点处靠近就停止了。反之 λ \lambda λ取值越小,说明对模型参数惩罚越弱,参数就越大了,因此 L 1 L_1 L1正则化项的形状就越大

参数更新角度来看 L 1 L_1 L1正则化项的作用,这里就直接贴李宏毅《机器学习2017》课件中的推导了:
在这里插入图片描述
上图中的 L ( θ ) L(\theta) L(θ)即前文所述的经验损失函数, L ′ ( θ ) L^\prime(\theta) L(θ)表示一个新函数,注意这里不是函数的导数。
由最后推导得到的参数更新公式可以看出, L 1 L_1 L1正则化项起到的作用相当于每次迭代更新使得权重 w w w都减一个正实数或者加一个负实数,使得 w w w中元素值都向0靠近。

3.2 L 2 L_2 L2正则化

同样地,还是上一节的假设背景,不过是解 ( 4 ) (4) (4)式,也将 ( 4 ) (4) (4)中前一部分平方损失项和后一部分 L 2 L_2 L2正则化项的等值线画出来,如图:
在这里插入图片描述

上图中蓝色线表示平方误差项的等值线,即取值相同点的连线。红色线表示 L 2 L_2 L2正则化项的等值线。

同样交点 w ∗ w^* w ( 4 ) (4) (4)式的最优解,从图中可见, w ∗ w^* w取值位置大多在某个象限内,即 w 1 w_1 w1 w 2 w_2 w2均不为0, L 2 L_2 L2正则化项会选择多个维度特征,而这些对应维度的参数都很小。

λ \lambda λ的取值对 L 2 L_2 L2正则化项的形状影响同上一节中所说的。

周志华《机器学习》中的图示将 L 1 L_1 L1 L 2 L_2 L2画在了一起,看起来更有对比性:

在这里插入图片描述

除此之外, L 2 L_2 L2正则化还被称为权重衰减(weight decay)。其参数更新上的作用如下,同样来自李宏毅课件
在这里插入图片描述
从图中可以看出, L 2 L_2 L2正则化项在参数更新时起到的作用,即是每次迭代参数权重都会乘上一个小于1的系数,经过多次迭代以后参数权重就会趋于0。相当于一个指数倍数的衰减,因此被称为权重衰减也就很自然了(注:权重衰减和 L 2 L_2 L2正则化在SGD优化方法下是等价的,但在如Adam等方法下是有些区别的[6])。


上面的许多资料大多是从文献中摘过来的,参考了一些博客,为了做个在线笔记吧,捋一捋知识点啥的,也供大家参考,如有不足之处欢迎指出。

参考资料

[1] 统计机器学习 1.3节. 李航
[2] 机器学习 11.4节. 周志华
[3] 机器学习中正则化项L1和L2的直观理解
[4] 机器学习中的范数规则化之(一)L0、L1与L2范数
[5] 【机器学习】正则化的线性回归 —— 岭回归与Lasso回归
[6] 都9102年了,别再用Adam + L2 regularization了

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值