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

这里写图片描述


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就会落入激活函数的线性区,这时整个网络就会接近一个线性模型。分类面的就会相对简单,就不容易出现右下角的那种过拟合的现象。

### 深度学习中的正则化 #### 正则化的定义 正则化是一种用于减少模型过拟合的技术,在深度学习中通过引入额外的信息或约束条件,使得模型更加简单并具有更好的泛化性能。它主要通过对损失函数增加惩罚项的方式实现,从而抑制模型参数的过度增长。 #### 常见的正则化方法及其作用 1. **L1 正则化** L1 正则化通过对权重向量的绝对值之和施加惩罚来简化模型结构。其核心在于促使部分权重变为零,从而使模型更稀疏[^2]。这种特性对于特征选择非常有用,因为它可以自动忽略那些不重要的输入特征。 数学表达式如下: \[ J(w) = Loss + \lambda \|w\|_1 \] 2. **L2 正则化 (Ridge Regression)** L2 正则化则是通过对权重平方和进行惩罚,使所有权重都趋向于较小数值而非完全为零。这种方法能够有效平滑权重分布,避免某些权值过大而导致模型不稳定的情况发生。 表达形式为: \[ J(w) = Loss + \frac{\lambda}{2} \|w\|_2^2 \] 3. **Dropout 技术** Dropout 是一种专门针对神经网络设计的独特正则化手段。在训练过程中随机丢弃一部分节点(即让这些节点暂时失效),以此模拟多个子网络的同时工作状态。最终预测时采用整个网络作为平均效果输出。这种方式不仅降低了各层之间可能存在的依赖关系,还显著增强了系统的鲁棒性和抗干扰能力。 4. **Early Stopping 提前终止法** Early stopping 并不属于严格意义上的正则化策略,但它确实可以通过监控验证集误差变化趋势及时停止迭代过程达到类似目的——既防止因长时间优化而陷入局部最优解又保持了一定程度上的简洁性[^1]。 以下是基于 PyTorch 的一个简单的 L2 正则化代码实例: ```python import torch from torch import nn, optim class SimpleModel(nn.Module): def __init__(self): super(SimpleModel, self).__init__() self.fc = nn.Linear(10, 1) model = SimpleModel() criterion = nn.MSELoss() optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=0.001) # 设置weight decay即实现了L2 regularization for epoch in range(num_epochs): outputs = model(inputs) loss = criterion(outputs, targets) optimizer.zero_grad() loss.backward() optimizer.step() ``` 上述代码片段展示了如何利用 `torch.optim` 中的 `SGD` 类内置选项轻松完成带有 L2 正则化的梯度下降操作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值