神经网络学习一组权重,这些权重能最好地将输入映射到输出。
网络权重较大的网络可能表明网络不稳定,输入端的微小变化可能导致输出端的大变化。这可能表明网络过拟合了训练数据集,在对新数据进行预测时表现可能不佳。
解决此问题的方法是更新学习算法,以鼓励网络保持权重较小。这称为权重正则化,它可以用作减少训练数据集过拟合和提高模型泛化能力的通用技术。
在本帖中,您将了解权重正则化作为一种减少神经网络过拟合的方法。
阅读本文后,你将了解:
- 神经网络中较大的权重表明网络更复杂,并且已经过拟合了训练数据。
- 在训练过程中根据网络权重的大小对网络进行惩罚可以减少过拟合。
- L1 或 L2 向量范数惩罚可以添加到网络的优化中,以鼓励较小的权重。
用我的新书《更好的深度学习》来启动你的项目,书中包含分步教程和所有示例的 Python 源代码文件。
让我们开始吧。

权重正则化以减少深度学习模型过拟合的初步介绍
照片作者:jojo nicdao,部分权利保留。
权重过大的问题
在拟合神经网络模型时,我们必须使用随机梯度下降和训练数据集来学习网络的权重(即模型参数)。
训练网络的时间越长,权重将变得越专门针对训练数据,从而导致训练数据过拟合。权重的大小会增加,以便处理训练数据中看到的示例的具体情况。
较大的权重会使网络不稳定。尽管权重会专门针对训练数据集,但预期的输入发生微小变化或统计噪声会导致输出发生很大差异。
较大的权重倾向于在节点函数中引起急剧的过渡,从而导致输入的小变化引起输出的大变化。
— 第 269 页 Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks,1999 年。
通常,我们将此模型称为具有大方差和小偏差。也就是说,模型对训练数据集中的特定示例和统计噪声敏感。
权重较大的模型比权重较小的模型更复杂。这表明模型可能过度专门化于训练数据。在实践中,我们倾向于选择更简单的模型来解决问题(例如,奥卡姆剃刀)。我们更喜欢权重较小的模型。
…给定一些训练数据和一个网络架构,多组权重值(多个模型)可以解释数据。简单模型比复杂模型更不容易过拟合。在这种情况下,简单模型是指参数值分布熵较低的模型。
— 第 107 页,Deep Learning with Python,2017 年。
另一个可能的问题是,可能有很多输入变量,每个变量与输出变量的相关程度不同。有时我们可以使用方法来帮助选择输入变量,但变量之间的相互关系通常不明显。
为不相关或无关紧要的输入分配较小的权重甚至零权重,可以让模型专注于学习。这同样会产生一个更简单的模型。
想要通过深度学习获得更好的结果吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
鼓励使用较小的权重
可以更新学习算法,鼓励网络倾向于使用较小的权重。
一种方法是在网络优化中使用的损失计算中也考虑权重的数量。这称为损失计算。
请记住,当我们训练神经网络时,我们会最小化损失函数,例如分类中的对数损失或回归中的均方误差。在计算预测值和批次中预期值之间的损失时,我们可以将网络中所有权重的当前大小相加,或在此计算中添加一个层。这称为惩罚,因为我们根据模型中权重的数量来惩罚模型。
许多正则化方法基于限制模型容量,例如神经网络、线性回归或逻辑回归,通过向目标函数添加 [...] 惩罚。
— 第 230 页,Deep Learning,2016 年。
较大的权重会导致惩罚增大,表现为损失得分更大。然后,优化算法将推动模型使用较小的权重,即权重不超过执行训练数据集上的性能所需的程度。
较小的权重被认为更具规则性或专业化程度较低,因此,我们将这种惩罚称为权重正则化。
当这种惩罚模型系数的方法用于其他机器学习模型(如线性回归或逻辑回归)时,它可能被称为收缩,因为惩罚会鼓励系数在优化过程中收缩。
收缩。这种方法包括拟合一个包含所有 p 个预测变量的模型。然而,估计的系数被向零收缩 […] 这种收缩(也称为正则化)会减小方差。
— 第 204 页,An Introduction to Statistical Learning: with Applications in R,2013 年。
在神经网络中添加权重大小惩罚或权重正则化会降低泛化误差,并使模型能够较少地关注不太相关的输入变量。
1) 它通过选择解决学习问题的最小向量来抑制权重向量的任何不相关分量。2) 如果选择的大小合适,权重衰减可以抑制静态噪声对目标的一些影响。
— A Simple Weight Decay Can Improve Generalization,1992 年。
如何惩罚较大的权重
根据权重大小惩罚模型有两个部分。
第一个是计算权重的大小,第二个是优化过程应该对惩罚给予多少关注。
计算权重大小
神经网络权重是实值,可以是正数或负数,因此,仅将权重相加是不够的。计算权重大小主要有两种方法,它们是:
- 计算权重绝对值的总和,称为 L1。
- 计算权重平方值的总和,称为 L2。
L1 尽可能将权重鼓励为 0.0,从而产生更稀疏的权重(具有更多 0.0 值的权重)。L2 提供了更多细微差别,它更严厉地惩罚较大的权重,但产生的权重稀疏性较小。L2 在线性回归和逻辑回归中的应用通常被称为岭回归。在试图理解惩罚或其用法示例时,了解这一点很有用。
在其他学术界,L2 正则化也称为岭回归或 Tikhonov 正则化。
— 第 231 页,Deep Learning,2016 年。
权重可被视为一个向量,向量的模称为其范数,来自线性代数。因此,根据权重大小惩罚模型也称为权重或参数范数惩罚。
可以同时包含 L1 和 L2 方法来计算权重的数量作为惩罚。这类似于在弹性网络算法中同时使用这两种惩罚项来处理线性回归和逻辑回归。
L2 方法可能是最常用的,在神经网络领域通常被称为“权重衰减”。在统计学中,它被称为“收缩”,这个名字会让你联想到学习过程中惩罚对模型权重的影响。
这种特定的正则化器选择在机器学习文献中被称为权重衰减,因为在序列学习算法中,它会促使权重值向零衰减,除非得到数据的支持。在统计学中,它提供了一个参数收缩方法的示例,因为它将参数值向零收缩。
— 第 144-145 页,Pattern Recognition and Machine Learning,2006 年。
请记住,每个节点都有输入权重和偏置权重。偏置权重通常不包含在惩罚中,因为“输入”是恒定的。
控制惩罚的影响
计算出的权重大小在训练网络时会添加到损失目标函数中。
它们不是直接将每个权重添加到惩罚中,而是可以通过一个称为 alpha (a) 或有时称为 lambda 的新超参数来加权。这控制了学习过程应该对惩罚给予多少关注。或者换句话说,根据权重的大小来惩罚模型的程度。
alpha 超参数的值在 0.0(无惩罚)和 1.0(完全惩罚)之间。此超参数控制模型中的偏差量,从 0.0(低偏差,高方差)到 1.0(高偏差,低方差)。
如果惩罚太强,模型将低估权重并导致欠拟合。如果惩罚太弱,模型将允许过拟合训练数据。
权重的向量范数通常是逐层计算的,而不是跨整个网络计算。这允许在选择使用的正则化类型(例如,输入层使用 L1,其他层使用 L2)和 alpha 值方面具有更大的灵活性,尽管默认情况下通常在每层使用相同的 alpha 值。
在神经网络的背景下,有时希望为网络的每一层使用单独的惩罚,并具有不同的 a 系数。因为搜索多个超参数的正确值可能成本很高,所以为了减小搜索空间的大小,仍然合理地在所有层上使用相同的权重衰减。
— 第 230 页,Deep Learning,2016 年。
使用权重正则化的技巧
本节提供了一些使用神经网络权重正则化的技巧。
适用于所有网络类型
权重正则化是一种通用方法。
它可以与大多数(甚至可能所有)类型的神经网络模型一起使用,特别是最常见的网络类型,如多层感知机、卷积神经网络和长短期记忆循环神经网络。
对于 LSTM,可能希望为输入和递归连接使用不同的惩罚或惩罚配置。
标准化输入数据
通常,将输入变量更新为具有相同的尺度是一个好习惯。
当输入变量的尺度不同时,网络权重的尺度也会相应变化。这在使用权重正则化时会带来问题,因为必须将权重的绝对值或平方值相加才能在惩罚中使用。
通过对输入变量进行归一化或标准化可以解决此问题。
使用更大的网络
较大的网络(更多层或更多节点)更容易过拟合训练数据。
在使用权重正则化时,可以使用较大的网络而降低过拟合的风险。一个好的配置策略可能是从较大的网络开始并使用权重衰减。
网格搜索参数
通常使用较小的正则化超参数值,该超参数控制每个权重对惩罚的贡献。
可以尝试在对数量级最有希望的尺度上测试值,例如 0.1、0.001 和 0.0001。然后,在显示出最大潜力的数量级上使用网格搜索。
同时使用 L1 + L2
不要试图在 L1 和 L2 惩罚之间进行选择,而是同时使用它们。
现代有效的线性回归方法(如弹性网络)同时使用 L1 和 L2 惩罚,这可能是一种有用的方法。这为您提供了 L2 的细微差别和 L1 所鼓励的稀疏性。
在已训练的网络上使用
使用权重正则化可以实现更复杂的训练方案。
例如,可以在没有正则化的情况下先在训练数据上拟合模型,然后再使用权重惩罚来减小已良好运行模型的权重的大小。
您是否有使用权重正则化的技巧?
在下面的评论中告诉我。
进一步阅读
如果您想深入了解,本节提供了更多关于该主题的资源。
书籍
- 第 7.1 节 参数范数惩罚,Deep Learning,2016 年。
- 第 5.5 节 神经网络正则化,Pattern Recognition and Machine Learning,2006 年。
- 第 16.5 节 权重衰减,Neural Smithing: Supervised Learning in Feedforward Artificial Neural Networks,1999 年。
- 第 4.4.2 节 添加权重正则化,Deep Learning with Python,2017 年。
- 第 6.2 节 收缩方法,An Introduction to Statistical Learning: with Applications in R,2013 年。
论文
- 简单的权重衰减可以改善泛化, 1992.
- 关于非线性学习系统中的泛化、正则化和架构选择的说明, 1991.
文章
总结
在本帖中,您了解了权重正则化作为一种减少神经网络过拟合的方法。
具体来说,你学到了:
- 神经网络中较大的权重表明网络更复杂,并且已经过拟合了训练数据。
- 在训练过程中根据网络权重的大小对网络进行惩罚可以减少过拟合。
- L1 或 L2 向量范数惩罚可以添加到网络的优化中,以鼓励较小的权重。
你有什么问题吗?
在下面的评论中提出你的问题,我会尽力回答。
另一种可能的权重惩罚类型是“Exp[Abs[w]] – 1”,它会鼓励权重为零,但不如 L1 那么强,同时又像 L2 一样(但更强)严厉惩罚大权重。
非常好!谢谢。
哇,这个很酷!
谢谢。
很棒的资源,简洁明了。
谢谢。
嗨,Jason博士,
如果我在隐藏层中使用 L2 正则化器,同时在损失函数中使用雅可比矩阵,模型会发生什么?在同一网络层中使用多种惩罚会使模型欠拟合吗?
谢谢你。
嗯,你得小心点。添加不同类型的正则化可能会让模型有点混乱。
我明白了。感谢您的建议,Jason 博士。
精彩的解释,谢谢。
我很高兴它有所帮助!
你好 Jason,
感谢您的博文。我读了另一篇,网址是 https://machinelearning.org.cn/introduction-to-regularization-to-reduce-overfitting-and-improve-generalization-error/。
为了防止过拟合,您对以下选项有何指导?
1) 更改层数
2) 更改权重数量
3) 更改权重值。
我认为这三者都降低了模型复杂度。感谢您的帮助。
此致
我建议进行仔细和系统的实验,但具体的配置无法规定。
嗨,杰森,
我可以在 LSTM 分类问题中结合(L1+L2)正则化吗?
或者(L1+L2)组合是否只能用于回归问题?
是的,你可以。
嗨,杰森,
(激活正则化(输出层)+ LSTM)在分类问题中…
精彩的解释!最好的正则化损失博客!谢谢!
谢谢你。
谢谢。我认为这解释了我自己在那些行为不端的网络中看到的大部分内容。我将尝试这种方法,看看我的训练过程是否能更稳定。
感谢您出色的工作。这让我对为什么偏爱较小的权重有了很多启发。
Jason 先生,确实是一个非常有洞察力的话题。谢谢。 WR(权重正则化)也可以用于非神经网络吗?
我拥有实时数据,并遇到了过拟合问题。
我尝试了几乎所有可能的算法,但最好的 R2 值都接近 0.50。
这是一个纯回归问题,所有数据都是数值型的。
有人能帮我指导一下吗?
1. 如何减少过拟合
2. 如何获得更好的预测/R2 分数..
为了克服过拟合,我尝试了剪枝、特征缩减、集成方法等。
在所有工具中,h2o 提供了最佳结果。其次是 ExtraTreesRegressor。
是的,正则化可以应用于所有机器学习,不仅仅是神经网络。事实上,最早的正则化是用于线性回归的。可以看看“岭回归”了解它是如何实现的。
谢谢。我学到了我一直在寻找的遗漏的部分(即为什么大权重可能是一个问题的直觉)。
不客气!很高兴知道您从我们的内容中获得了启发!