正则化,L1正则和L2正则的分析

正则化是一种防止过拟合的技术,通过在损失函数中添加模型复杂度指标。L1正则化产生稀疏权重,有助于特征选择,而L2正则化避免权重过大,但不会产生稀疏性。在TensorFlow中,可以通过自定义或内置函数实现正则化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

正则化是什么

正则化(regularization)是在机器学习中十分常用的一个避免过拟合的方法。

其思想就是在损失函数中加入刻画模型复杂程度的指标。

假设损失函数使用的是均方误差(MSE),也就是 J ( θ ) = ∑ i = 1 n ( y i − y ^ i ) J(\theta) = \sum_{i=1}^n (y_i -\hat y_i) J(θ)=i=1n(yiy^i)那么在加入正则化 R ( w ) R(w) R(w)的公式之后的损失函数就变成了 J ( θ ) = ∑ i = 1 n ( y i − y ^ i ) + λ R ( w ) J(\theta) = \sum_{i=1}^n (y_i-\hat y_i) + \lambda R(w) J(θ)=i=1n(yiy^i)+λR(w)其中 λ \lambda λ是正则化的权重。从公式中可以看出,正则化就是影响损失函数的,并以此来影响模型的复杂程度,尽可能避免模型过拟合。

有哪些常用的正则化方法

常用的来刻画模型复杂度的函数 R ( w ) R(w) R(w)有两种,一种是L1正则化,一种是L2正则化。

有的论文也叫做L1范数,L2范数

L1正则化的公式为 R ( w ) = ∣ ∣ w 1 ∣ ∣ = ∑ i ∣ w i ∣ R(w)= ||w_1||=\sum_i |w_i| R(w)=w1=iwi
L2的正则化公式为 R ( w ) = ∣ ∣ w 2 ∣ ∣ = ∑ i ∣ w i 2 ∣ R(w)=||w_2||=\sum_i |w_i^2| R(w)=w2=iwi2

无论是哪种正则化方法,基本的思想就是希望通过限制权重的大小,使得模型不能任意拟合训练集中的随机噪音。

两种正则化方法的区别

首先,L1正则化会让参数变得稀疏,而L2正则却不会。所谓稀疏就是会有很多的参数变成0,这样还可以达到类似特征选取的功能,比如Lasso Regression就是使用的L1正则,会让部分的参数变为0,可以间接的达到提取特征的功能。

之所以L2正则化不会让参数变得稀疏的原因1是当某个参数很小的时候,比如0.001,这个参数的平方基本上就可以忽略了,于是模型不会进一步将这个参数调整为0。

其次,L1正则化的计算公式不可导,而L2正则化公式可导。因为在优化时需要计算损失函数的偏导数,所以对含有L2正则化的损失函数的优化要更加简洁。优化L1正则化的损失函数要更加复杂,而且优化方法也有很多种。

在实践中,也可以L1正则化和L2正则化同时使用:
R ( w ) = ∑ i α 1 ∣ w i ∣ + α 2 w i 2 R(w)=\sum_i \alpha_1 |w_i| + \alpha_2 w_i^2 R(w)=iα1wi+α2wi2Elastic Net Regression中就是用的这种正则方法。

在TensorFlow中使用正则化

  1. 在TensorFlow中要使用正则化可以根据公式自己定义一个Loss函数。

  2. 也可以使用tf.contrib.layers.l1_regularizertf.contrib.layers.l2_regularizer其用法如下所示

loss = tf.reduce_mean(tf.square(y_ - y)) + tf.contrib.layers.l2_regularizer(lambda)(w)
#lambda是正则化的权重

  1. 《TensorFlow 实战Google深度学习框架》 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值