详解岭回归与L2正则化

在上文中(一文让你彻底搞懂最小二乘法(超详细推导)),我们经过推导得到了最小二乘法的解析解 θ = ( X T X ) − 1 X T Y \theta=\left(X^{T} X\right)^{-1} X^{T} Y θ=(XTX)1XTY,其中 X X X 为观测到的将样本按行排列的特征矩阵,假设大小为 m × n m \times n m×n,则 m m m 代表样本的个数, n n n 代表样本的特征数。

PS:解析解其实很好记
X θ = y X T X θ = X T y θ = ( X T X ) − 1 X T y X \theta=y \\ X^{T} X \theta=X^{T} y \\ \theta=\left(X^{T} X\right)^{-1} X^{T} y Xθ=yXTXθ=XTyθ=(XTX)1XTy

有了解析解,在得到观测数据后,直接带入公式即可算出参数 θ \theta θ。然而在实际应用中可能会面临一个情况: X T X X^{T} X XTX不可逆,显然这个式子就没法计算了,那么这个时候应该怎么办呢?

下面先具体分析导致最小二乘法失效的情况,然后再给出常用的解决方法。

最小二乘法中的不可逆与病态问题

X T X X^{T} X XTX为奇异矩阵时(不可逆),此时最小二乘法的解析解无法进行计算。导致 X T X X^{T} X XTX不可逆比较可能的原因是 X X X中的列向量线性相关,即数据中存在特征冗余,某些特征可以根据其它特征的线性组合来得到。

奇异矩阵:对于一个方阵,若该方阵的行列式等于0,则称该方阵为奇异矩阵,若不等于0,则称为非奇异矩阵。由此:不逆矩阵 ⇔ \Leftrightarrow 奇异矩阵

事实上,除了不可逆外,当 X T X X^{T} X XTX病态矩阵(ill-conditioned matrix) 时,最小二乘法也会失效,此时虽然也能按照解析解进行计算,但由于解的方差过大,不稳定,结果精度很差。

病态矩阵,一言蔽之,就是在求解方程组时对数据的微小扰动比较敏感的矩阵。比如在求解方程组 A x = b Ax=b Ax=b时,如果我们对系数矩阵 A A A或右端项 b b b进行了一个微小的扰动,算出的解和原方程组的解差别很大,这样的矩阵 A A A就称为病态矩阵。

举个例子,比如对于方程组:
[ 400 − 201 − 800 401 ] [ x 1 x 2 ] = [ 200 − 200 ] \left[\begin{array}{cc}400 & -201 \\ -800 & 401\end{array}\right]\left[\begin{array}{l}x_{1} \\ x_{2}\end{array}\right]=\left[\begin{array}{c}200 \\ -200\end{array}\right] [400800201401][x1x2]=[200200]

解为 x 1 = − 100 , x 2 = − 200 x_1=-100,x_2=-200 x1=100,x2=200,如果我们对 A A A施加一个微小的扰动,比如400改成401,则方程组:
[ 401 − 201 − 800 401 ] [ x 1 x 2 ] = [ 200 − 200 ] \left[\begin{array}{cc}401 & -201 \\ -800 & 401\end{array}\right]\left[\begin{array}{l}x_{1} \\ x_{2}\end{array}\right]=\left[\begin{array}{c}200 \\ -200\end{array}\right] [401800201401][x1x2]=[200200]

会得到一个截然不同的解: x 1 = 40000 , x 2 = 79800 x_1=40000,x_2=79800 x1=40000,x2=79800

由于数据 X X X我们是通过观测得来的,其本身就存在一定的误差,这是不可避免也是正常的,但这个误差却导致了方程组解的截然不同,这就说明这个方程的结果缺乏稳定性。理想情况下方程组应该对数据微小的扰动具有抗噪性,保证其解的大体一致。

一般用条件数来衡量矩阵的病态程度,条件数定义为:矩阵的范数,乘以其逆矩阵的范数,即:
cond ⁡ ( A ) = ∥ A ∥ ⋅ ∥ A − 1 ∥ \operatorname{cond}(A)=\|A\| \cdot\left\|A^{-1}\right\| cond(A)=AA1
条件数的具体值依赖于矩阵范数的选取,比如可以选1范数、2范数、无穷范数等(各种矩阵范式的定义和计算方式见 矩阵范数与向量范数的公式及其理解),虽然值有所不同,但相对大小一致。

条件数越大,矩阵越病态,越接近不可逆,从而也越难得到精确解。极端情况下,当 A A A不可逆时,条件数为无穷,这时我们即使不改变 b b b,解 x x x也可以改变(因为有无穷组解)。当然判断是否病态有时候不需要去计算条件数,可以通过经验观察得知,比如矩阵行/列近似相关,元素间相差较大数量级等情况下通常容易出现病态。

病态问题在最小二乘法法中是容易出现的,比如当我们在处理包含较多自变量的大型回归问题时,由于自变量较多, 有时难免自变量间存在近似的线性关系从而导致特征矩阵的列向量近似线性相关, 即呈现出病态,这时最小二乘估计的的精度较差, 会表现出相当的不稳定。

岭回归

从上述分析我们知道传统的最小二乘法在矩阵不可逆或病态的情况下缺乏稳定性与可靠性。岭回归是一种改良版的最小二乘法,它放弃了最小二乘法的无偏性,但更加稳定可靠,在实际应用中也更加常用。

先给出结论,岭回归解为:
θ = ( X T X + λ I ) − 1 X T y \theta=\left(X^{T} X+\lambda I\right)^{-1} X^{T} y θ=(XTX+λI)1XTy

其中 λ λ λ是一个超参数,称为岭系数, I I I是单位矩阵(由于对角线全是1,看起来像 “山岭”,由此得名岭回归)。

可以看到,相比传统最小二乘法,它加入了一个常数λ乘以单位矩阵的扰动 λ I \lambda I λI,这使得 ( X T X + λ I ) \left(X^{T} X+\lambda I\right) (XTX+λI)一定可逆,保证能进行计算。

因为,对于任意非零向量 u u u,有:
u ⊤ X T X u = ( X u ) T X u ⟶  令  v = X u v T v ≥ 0 u^{\top} X^{T} X u=(X u)^{T} X u \stackrel{\text { 令 } v=X u}{\longrightarrow} v^{T} v \geq 0 uXTXu=(Xu)TXu  v=XuvTv0

所以 ( X T X ) \left(X^{T} X \right) (XTX)是半正定矩阵,那么对于任意的实数 λ > 0 \lambda >0 λ>0 X T X + λ I X^{T} X +\lambda I XTX+λI必正定,一定可逆。

半正定矩阵:设 A A A n n n阶方阵, A ∈ R n × n A \in R^{n \times n} ARn×n,如果对于任意的非零向量 X ∈ R n X \in R^{n} XRn ,都有 X T A X ≥ 0 X^{T} A X \geq 0 XTAX0 ,则称 A A A为半正定矩阵,如果严格 X T A X > 0 X^{T} A X > 0 XTAX>0 ,则称 A A A为正定矩阵。

老实讲,线代里面的概念真不少……,但很多概念又是互相等价的(只是侧重点不同),长时间不用就容易忘记了,这里我从网上收集进行了整理,如下

A ∈ R n × n \mathbf{A} \in \mathbb{R}^{n \times n} ARn×n A A A可逆的等价于:

  • A A A的行列式 ∣ A ∣ | A | A不等于0
  • A A A是非奇异矩阵
  • A A A为满秩矩阵,即 rank ⁡ ( A ) = n \operatorname{rank}(A)=n rank(A)=n
  • A的行(列)向量组线性无关
  • 齐次方程组 A x = 0 \mathbf{A x}=\mathbf{0} Ax=0 只有零解,非齐次方程组 A x = b \mathbf{A x}=\mathbf{b} Ax=b 有且仅有唯一解 x = A − 1 b \mathbf{x}=\mathbf{A}^{-1} \mathbf{b} x=A1b
  • A A A 与单位矩阵 I I I等价(秩相等或可以经过初等行/列变换得到)
  • A T A A^{T} {A} ATA 是对称正定矩阵
  • A A A 所有的特征值非零

L2正则化

岭回归更多是从线性代数的角度来解释并解决传统最小二乘法的不可逆或病态问题。事实上,从机器学习角度来看,岭回归对应着L2正则化。

在机器学习中,正则化(regularization)是防止模型过拟合(overfitting)、降低模型泛化误差的一类方法

过拟合,简单来说就是模型对当前数据拟合得非常好,训练集上的误差损失甚至可以等于0,但是在实际应用中的泛化误差却很大。为什么会出现这种情况?

直观上来理解,我们在训练集上训练一个模型,目标是期望模型能够归纳学习出训练集中存在的普遍规律,之后好将该其应用于未知数据中。然而训练集是由我们观测、采集得到的,可能存在噪声、误差、错误等情况,在某些情况下(比如模型过于复杂),模型很有可能把这些噪声、错误的也学进去,也就是模型把当前训练集的特有规律学了,反而没有学到普遍规律,那么假如我们重新采样一批数据来训练,模型可能学到的又是别的东西,这将导致模型预测的结果非常不稳定,也就是具有很高的方差(variance)。

解决这类问题的一种有效方法是正则化,而正则化方法又包括很多,比如Norm penalty、Dropout、BatchNorm、LayerNorm等。Norm penalty的解决方法就是在原有的损失函数基础上增加一项对模型参数的惩罚项(penalty),其基本框架可以表示为:
J ( θ ) = argmin ⁡ [ L ( θ ) + λ P ( θ ) ] J(\theta)=\operatorname{argmin}[L(\theta)+\lambda P(\theta)] J(θ)=argmin[L(θ)+λP(θ)]
其中惩罚项 P ( θ ) P(\theta) P(θ)可以看作是我们提前对模型的参数应该具有的样子做了一个假设或者说是约束,比如L1正则化下,我们期望模型的参数应该是稀疏的,L2正则化下,我们期望模型的参数应该是很小,接近于0的。

为什么对模型参数进行惩罚可以防止模型过拟合?可以这么理解,大多情况下,过拟合主要是因为数据太少或者是模型过于复杂,解决方法要么增加数据,要么精简模型。参数惩罚相当于后者,它通过参数衰减(极端情况下衰减为0)的方式来使得数据中那些不重要的特征几乎不起作用,这样间接就实现了精简模型参数的效果。

在该框架视角下,岭回归即对应着在最小二乘法基础上增加了一个L2正则化,如下公式所示,其中第一项 L ( θ ) L(\theta) L(θ)就是传统的优化项—样本的误差平方和,第二项 P ( θ ) P(\theta) P(θ)为L2正则化项::
J ( θ ) = ∑ i = 1 n ( y i − f θ ( x i ) ) 2 + λ ∑ j = 1 m ( θ j 2 ) J(\theta)=\sum_{i=1}^{n}\left(y_{i}-f_\theta(x_i)\right)^{2}+\lambda \sum_{j=1}^{m}\left( {\theta}_j^2\right) J(θ)=i=1n(yifθ(xi))2+λj=1m(θj2)
将这个式子表达成矩阵形式:
J ( θ ) = ( X θ − Y ) T ( X θ − Y ) + λ θ T θ J(\theta)=(\mathbf{X} \theta-\mathbf{Y})^{T}(\mathbf{X} \theta-\mathbf{Y})+\lambda {\theta}^{T} \theta J(θ)=(XθY)T(XθY)+λθTθ
目标仍然不变,求使得该式值最小的 θ \theta θ。对这个式子进行求导,第一项的导数在上文我们已经知道: ∂ ∂ θ L ( θ ) = 2 X T X θ − 2 X T Y \frac{\partial}{\partial \theta} L(\theta)=2 X^{T} X \theta-2 X^{T} Y θL(θ)=2XTXθ2XTY,再次根据辣个公式 ∂ x T a ∂ x = ∂ a T x ∂ x = a \frac{\partial x^{T} a}{\partial x}=\frac{\partial a^{T} x}{\partial x}=a xxTa=xaTx=a,第二项的导数可以求得: ∂ ∂ θ λ P ( θ ) = 2 λ θ \frac{\partial}{\partial \theta} \lambda P(\theta)=2\lambda \theta θλP(θ)=2λθ,(忘记的同学建议复习一下~),令其等于0:
∂ ∂ θ J ( θ ) = 2 X T X θ − 2 X T Y + 2 λ θ = 0 \frac{\partial}{\partial \theta} J(\theta)=2 X^{T} X \theta-2 X^{T} Y+2\lambda \theta=0 θJ(θ)=2XTXθ2XTY+2λθ=0
解得 θ = ( X T X + λ I ) − 1 X T y \theta=\left(X^{T} X+\lambda I\right)^{-1} X^{T} y θ=(XTX+λI)1XTy,殊途同归!

补充一下,我们都知道,在误差符合高斯正态分布下,最小二乘法是最佳的线性无偏估计,而作为一种改良的最小二乘估计法,岭回归显然是有偏估计,它放弃了最小二乘法的无偏性来换取低方差,使得解相对稳定,这个性质也和正则化的普遍特性一致,即以提升bias为代价来降低variance,这里借用网上的一张图来表示,岭回归和正则化所作的事情就是如下图中的从右上——>左下。

无偏估计:很多批次样本估计出来的参数值的平均值(更严格说应该是期望)和真实的参数值相等,如下图中Low Bias的两个图,与之相反,有偏估计如High Bias的两个图所示。

在这里插入图片描述

Reference
https://www.jianshu.com/p/1677d27e08a7
https://blog.csdn.net/weixin_44692890/article/details/120233459
https://zhuanlan.zhihu.com/p/85940993
https://zhuanlan.zhihu.com/p/464085937

如果对你有帮助,请点个赞让我知道:-D

  • 112
    点赞
  • 204
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
在TensorFlow 2.0中,可以使用`kernel_regularizer`来实现L2正则化。2正则化是一种通过惩罚较大的权重值来减少过拟合的技术。在代码中,可以使用`regularizers.l1_l2`函数来指定L2正则化的参数。例如,下面的代码展示了如何在TensorFlow 2.0中使用L2正则化: ``` from tensorflow.keras import layers from tensorflow.keras import regularizers layer = layers.Dense(units=64, kernel_regularizer=regularizers.l1_l2(l1=1e-5, l2=1e-4)) ``` 这里,`kernel_regularizer`参数接受一个`regularizers.l1_l2`对象,该对象的参数`l1`和`l2`分别代表L1正则化L2正则化的权重。通过调整这些参数的值,可以控制正则化的强度。 值得一提的是,上述代码只展示了L2正则化的实现,并未给出L1正则化的代码。如果你想了解如何实现L1正则化,可以参考一些相关的教程或自行实现。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【小白学PyTorch】扩展之Tensorflow2.0 | 21 Keras的API详解(上)卷积、激活、初始化、正则...](https://blog.csdn.net/fengdu78/article/details/109020054)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [简洁明了的tensorflow2.0教程——正则化操作](https://blog.csdn.net/JohnLeeK/article/details/106335532)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值