深度学习总结(九)——正则化

这里写图片描述


1. 正则化简介

以逻辑斯蒂回归为例,介绍正则化。
原来的成本函数(cost function):

minw,bJ(w,b)=minw,b1mi=1mL(y^(i),y(i))

其中:wRnx,bR
加入正则化项得:
J(w,b)=1mi=1mL(y^(i),y(i))+λ2m||w||22

其中:
||w||22=j=1nxw2j=wTw

上式中的正则化是L2正则化。
正则化是一种非常实用的减少方差的方法,正则化时会出现偏差方差权衡问题,偏差可能略有增加。如果网络足够大,增幅通常不会太高。人们通常会用交叉验证集的方式来选择正则化参数:λ。

注意:损失函数指的是单个样本的误差,成本函数指的是所有训练样本的误差。

2. 为什么正则化项没有b

因为w往往是一个高维向量,包含了绝大多数参数,已经可以表达高方差问题。而b只是单个数字,加了也没有太大影响。

3. L1正则化使得模型变得稀疏,是否有利于模型压缩

实际上L1正则化虽然使得模型变得稀疏,但是却没有降低太多存储内存(因为参数的个数没有变,只是值变为了0)。所以L1正则化的主要目的不是为了模型压缩。

4. 为什么L2正则化被称为weight decay

首先我们来看成本函数,其包含w[1],b[1]到w[L],b[L]所有参数,L是神经网络所含的层数。其定义如下:

J(w[1],b[1],...,w[L],b[L])=1mi=1mL(y^(i),y(i))+λ2ml=1L||w[l]||2

其中:
||w[l]||2=i=1n[l1]j=1n[l](w[l]ij)2

w:(n[l1],n[l])

n[l]表示第l层单元的数量,这个式子求的是w[l]矩阵中所有元素的平方和。
在加上正则化前,w[l]用反向传播算法更新参数的公式为:
w[l]:=w[l]αdw[l]=w[l]αJw[l]
但是加上正则化之后,公式变为:
w[l]:=w[l]αdw[l]=w[l]α(Jw[l]+λmw[l])=(1αλm)w[l]αdw[l]

因为1αλm小于1,所以L2正则化相当于让权重矩阵变小,即权重衰减(weight decay)。

5. 为什么说L1正则化是假设参数满足拉普拉斯分布、而L2正则化是满足高斯分布

首先我们对参数w引入协方差为α、均值为0的高斯先验。则根据极大后验概率,求得成本函数为:

L(w)=p(y|X;w)p(w)=i=1mp(y(i)|x(i);θ)p(w)=i=1m12πδexp((y(i)wTx(i))22δ2)j=1n12παexp((w(j))22α)=i=1m12πδexp((y(i)wTx(i))22δ2)12παexp(wTw2α)

取对数:
l(w)=logL(w)=mlog12πδ+nlog12πα1δ212i=1m(y(i)wTx(i))21α12wTwwMAPGuassian=argminw(1δ212i=1m(y(i)wTx(i))2+1α12wTw)

等价于:
JR(w)=1n||ywTX||2+λ||w||2

显然这就是L2正则化的形式,L1正则化同理可以推得。

6. 正则化是如何防止过拟合的

这里写图片描述

根据上图所示,当λ增大时,w[l]变小,z[l]也会变小。这时z就会落入激活函数的线性区,这时整个网络就会接近一个线性模型。分类面的就会相对简单,就不容易出现右下角的那种过拟合的现象。

### L1正则化与L2正则化的参数取值范围及应用场景 #### 参数取值范围 L1正则化和L2正则化的超参数通常表示为λ(lambda),用于控制模型复杂度与数据拟合之间的权衡。理论上,λ可以取任意非负实数值[^1]。具体来说: - 当λ=0时,正则化项被忽略,模型退化为普通的最小二乘回归或其他无约束优化问题。 - 随着λ增大,正则化的作用增强,从而抑制权重的大小以减少过拟合。 尽管如此,在实际应用中,λ的选择往往依赖于交叉验证技术来寻找最优值[^2]。 #### 应用场景对比 ##### L1正则化 (Lasso Regression) L1正则化通过绝对值惩罚系数使得某些特征对应的权重变为零,因此具有稀疏性特点。这种特性使其非常适合处理高维数据集中的特征选择问题[^3]。如果目标是从大量候选变量里挑选出最重要的几个,则优先考虑采用L1正则化方法。 ##### L2正则化 (Ridge Regression) 相比之下,L2正则化通过对平方后的权重求和施罚金,促使所有权重都趋向较小但不等于零的状态。它不会像L1那样直接消除掉任何维度的影响而是均匀缩小各个方向上的贡献程度。所以当面临多重共线性的状况或者希望保持全部原始输入信息不变的情况下更倾向于运用L2策略[^4]。 #### 区别比较 | 特征 | L1 正则化 | L2 正则化 | |----------------|-------------------------------|----------------------------| | **数学形式** | 使用权重向量的一范数 | 使用权重向量的二范数 | | **效果** | 导致稀疏解 | 不会完全置零 | | **适用场合** | 数据存在冗余特征 | 所有特征均重要 | ```python import numpy as np from sklearn.linear_model import Lasso, Ridge # 创建模拟数据 X = np.array([[1, 2], [3, 4]]) y = np.dot(X, np.array([1, 2])) + 3 # 定义并训练L1/L2模型 lasso_reg = Lasso(alpha=0.1).fit(X, y) ridge_reg = Ridge(alpha=1.0).fit(X, y) print(f"Lasso coefficients: {lasso_reg.coef_}") print(f"Ridge coefficients: {ridge_reg.coef_}") ``` 上述代码片段展示了如何利用scikit-learn库实现简单的Lasso和Ridge回归分析过程[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值