赞
踩
在深度学习领域中,正则化是一种用于防止过拟合的技术。过拟合是指模型在训练数据上表现良好,但在未见过的数据上表现较差的情况,这可能是因为模型学习到了训练数据中的噪声或者细节,而无法泛化到新数据。
正则化的本质是通过修改学习算法,使其降低泛化误差而非训练误差。正则化是在损失函数的基础上加入一个正则项(或罚项),这个正则项通常是对模型参数的某种惩罚,例如L1范数或L2范数。 这样做的目的是在不改变模型复杂度的情况下,减小某些参数的值,从而减少模型对训练数据的过度拟合。
在深度学习和更广泛的机器学习领域中,L1正则化是一种用于控制模型复杂度和防止过拟合的技术。过拟合是指模型在训练数据上表现得过于出色,以至于它开始捕捉数据中的噪声或偶然的细节,这会导致模型在未见过的数据上的性能下降。
L1正则化通过在模型的损失函数中添加一个额外的项来实现,这个项被称为正则化项。正则化项基于模型权重的L1范数,即所有权重绝对值的总和。具体来说,如果 w w w 代表模型的权重向量,那么L1正则化项可以表示为:
λ ∥ w ∥ 1 = λ ∑ i = 1 n ∣ w i ∣ \lambda \|w\|_1 = \lambda \sum_{i=1}^{n} |w_i| λ∥w∥1=λi=1∑n∣wi∣
这里, λ \lambda λ 是正则化参数,控制正则化项对总体损失的影响程度, n n n 是权重的数量。较大的 λ \lambda λ 值意味着正则化项对最终损失的贡献更大,从而导致模型权重的值更小。
L1正则化的一个关键特性是它倾向于产生稀疏的权重向量,也就是说,许多权重会被精确地推至零。 这是因为L1范数的梯度在权重接近零时是恒定的,这有助于权重进一步向零移动。这种效果有利于特征选择,因为它可以自动消除不重要的特征,从而使模型更简单,更易于解释,并且减少计算成本。
下面是L1正则化如何影响梯度下降更新过程的简化示例。假设我们有一个损失函数 L L L ,并且我们正在使用梯度下降法来最小化它。在没有正则化的情况下,权重 w w w 的更新规则如下:
w : = w − α ∂ L ∂ w w := w - \alpha \frac{\partial L}{\partial w} w:=w−α∂w∂L
其中 α \alpha α 是学习率。引入L1正则化后,更新规则变为:
w : = w − α ( ∂ L ∂ w + λ sign ( w ) ) w := w - \alpha \left( \frac{\partial L}{\partial w} + \lambda \text{sign}(w) \right) w:=w−α(∂w∂L+λsign(w))
这里的 sign ( w ) \text{sign}(w) sign(w) 函数返回 w w w 的符号,即如果 w > 0 w > 0 w>0 ,则 sign ( w ) = 1 \text{sign}(w) = 1 sign(w)=1 ,如果 w < 0 w < 0 w<0 ,则 sign ( w ) = − 1 \text{sign}(w) = -1 sign(w)=−1 ,如果 w = 0 w = 0 w=0 ,则 sign ( w ) \text{sign}(w) sign(w) 可以被定义为任何值,但通常定义为0。
关键:
Q1. 如何理解:L1正则化的一个关键特性是它倾向于产生稀疏的权重向量,也就是说,许多权重会被精确地推至零。
在没有正则化的情况下,模型可能分配非零权重给所有特征,即使某些特征实际上并不重要。然而,当应用L1正则化时,正则化项会惩罚大权重,尤其是那些对模型贡献较小的特征的权重。由于L1正则化基于权重的绝对值,它会在权重接近零时产生一个恒定的梯度,这意味着这些权重在每一步梯度下降中都会朝着零的方向移动。因此,不重要的特征权重逐渐减小,直至变为零。这也意味着L1正则化具备特征筛选的能力。
在深度学习以及更广泛的机器学习领域中,L2正则化是一种常用的防止模型过拟合的技术。它的核心思想是在模型的损失函数中添加一个额外的项,这个项惩罚模型参数(权重)的大小,从而鼓励模型寻找较小的权重值,这样可以减少模型的复杂度,提高模型的泛化能力。
L2正则化项基于模型权重的L2范数,也就是权重向量各个元素平方的和再开平方。在深度学习中,我们通常只计算平方和而不进行开方操作,因为开方不会改变优化方向,同时可以节省计算资源。L2正则化项可以表示为:
λ ∥ w ∥ 2 2 = λ ∑ i = 1 n w i 2 \lambda \|w\|^2_2 = \lambda \sum_{i=1}^{n} w_i^2 λ∥w∥22=λi=1∑nwi2
其中 w w w 是权重向量, λ \lambda λ 是正则化参数,用来控制正则化项对总损失函数的影响程度。较大的 λ \lambda λ 值会使正则化项对总损失的贡献更大,从而导致模型权重的值更小。
在训练神经网络时,L2正则化项被加到损失函数上。如果 J ( w ) J(w) J(w) 是没有正则化项的损失函数,那么加上L2正则化后的损失函数 J r e g ( w ) J_{reg}(w) Jreg(w) 可以表示为:
J r e g ( w ) = J ( w ) + λ ∥ w ∥ 2 2 J_{reg}(w) = J(w) + \lambda \|w\|^2_2 Jreg(w)=J(w)+λ∥w∥22
在梯度下降的更新步骤中,L2正则化会影响权重的更新规则。没有正则化时,权重的更新规则是:
w : = w − α ∂ J ∂ w w := w - \alpha \frac{\partial J}{\partial w} w:=w−α∂w∂J
其中 α \alpha α 是学习率。而在L2正则化下,权重更新规则变为:
w : = w − α ( ∂ J ∂ w + 2 λ w ) w := w - \alpha \left( \frac{\partial J}{\partial w} + 2\lambda w \right) w:=w−α(∂w∂J+2λw)
可以看到,L2正则化项在更新过程中起到了“权重衰减”的作用,它会使得权重在每次更新时都朝向零的方向稍微移动一点,但这并不像L1正则化那样会把权重精确地推至零。
L2正则化的主要效果是平滑权重,它鼓励模型参数分布在一个较小的范围内,而不是让某些参数变得非常大。这有助于减少模型的波动性,使得模型对输入数据的变化更加稳健,从而降低过拟合的风险。此外,L2正则化有助于模型在参数空间中找到一个“平均”解决方案,这通常意味着更好的泛化性能。
Weight Decay
本质上是一种实现L2正则化的方法,但是它是在权重更新步骤中直接应用的,而不是通过修改损失函数来实现。
Dropout是深度学习中一种非常流行的正则化技术,由Geoffrey Hinton和他的团队在2012年提出。其主要目的是减少神经网络的过拟合问题,增强模型的泛化能力。在训练过程中,Dropout通过随机“丢弃”(即设置为0)网络中的一部分神经元,从而模拟训练多个不同的神经网络,这样可以防止神经元之间过于依赖彼此,增强网络的鲁棒性和泛化能力。
在训练阶段,Dropout以一个固定的概率p(通常称为dropout比率或丢弃概率)随机地将网络中的神经元的输出置为0,而存活下来的神经元的输出则被放大1/(1-p)倍,以保持前向传播的期望值不变。在测试阶段,所有神经元都活跃,但它们的权重会被乘以(1-p),这是因为在训练时每个神经元的输出都被放大了,所以在测试时需要相应地缩小。
同时,在dropout的基础上也衍生出了许多相关技术:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。