tensorflow中的正则化函数在_人工智能算法问题——正则化解决神经网络中的过度拟合...

本文探讨了深度学习中过度拟合的问题及其危害,介绍了如何通过正则化来防止过度拟合。正则化包括L2和L1正则化,其中L2正则化通过惩罚权重矩阵的大小来降低模型复杂性,而L1正则化则可能导致权重稀疏。正则化有助于减少模型对训练数据的过拟合,提高泛化能力。此外,文章还讨论了在梯度下降过程中如何实施正则化,并解释了正则化减少过度拟合的两种直观理解:使网络简化和促使激活函数接近线性。
摘要由CSDN通过智能技术生成

过度拟合是一个很大的问题,尤其是在深度神经网络中。如果你正在怀疑你的神经网络过度拟合了。有很多方法可以确定过度拟合了数据,也许有一个高方差问题,或者绘制了一个训练图和测试精度图,然后发现过度拟合了。在这种情况下,我们应该怎么办呢?

第一件事是正则化

887295c8ab30ecd87f8c26b5a56ae262.png

为什么要正规化?

解决高方差的另一种方法是获取更多可靠的训练数据。如果要获得更多的训练数据,则可以通过这种方式来思考,尝试针对所有情况归纳权重。那在大多数时候都可以解决问题,那为什么还要其他呢?但是这样做的一个巨大缺点是,我们不能总是获取更多的培训数据,获取更多的数据可能会很昂贵,有时甚至无法访问。

所以我们有必要讨论一些有助于减少过度拟合的方法。而添加正则化通常有助于防止过度拟合。通常进行正则化还可以帮助我们最大程度地减少网络中的随机错误。

了解L2正则化

在尝试最小化一个J称为cost函数的函数。

09f5d040ba5ba704cc291cdd5e1216ad.png

而w是大小的矩阵x并且L是损失函数。如果只是快速更新,就没什么意思。因此,要为此添加正则化,我们将向此成本函数方程添加一个项,我们将看到更多这样的内容

ed68005c44c3f280cc6639ce8a1d0f86.png

因此,λ是可能需要调整的另一个超参数,称为正则化参数。

根据理想惯例,||w||²₂仅表示L2的欧几里德L2范数,w然后对其平方即可,让我们在一个方程式中对其进行总结,以便对我们来说变得容易,我们将对L2范数项进行简化。

只是用矢量素数到矢量素数的平方欧几里德范数表示的w。因此,我们刚才所说的术语称为L2正则化。我们将在一段时间内详细讨论如何获得λ项,但至少现在对它的工作原理有了一个大概的了解。这种方法实际上有一个原因称为“ L2归一化”,之所以这样称呼是因为我们正在计算的L2范数w。

到现在为止,我们讨论了参数的正则化w,可能会问自己一个问题,为什么w?为什么不加上b?这是一个逻辑问题。事实证明,实际上可以添加一个w术语或为其添加术语,w但是我们通常只是省略它。因为如果查看参数,你会注意到w通常这是一个非常高的维向量,尤其是具有高方差问题。理解它是因为w它具有很多单独的参数,因此我们不能很好地拟合所有参数,而b仅仅是一个数字。因此,几乎所有主要参数都位于中,w而不是b。因此,即使最后添加b方程式中的项,在实践中不会有很大的不同。

L1正则化

我们刚刚讨论了L2正则化,你可能还听说过L1正则化。L1正则化是何时添加参数向量的L1范数而不是我们之前讨论的术语w。让我们以数学的方式来看这个术语。

5180e10841a11b71bff4455cf6ebe236.png

如果使用L1正则化,则w可能会变得稀疏,这意味着w向量中将有很多零。人们常说这可以帮助压缩模型,因为参数集为零,并且需要更少的内存来存储模型。我觉得在实践中,使模型稀疏的L1正则化只会有所帮助。因此,我不建议大家在模型压缩中使用它。而且,当在训练网络时,使用L2正则化的频率要高得多。

扩展到神经网络上面

我们刚刚看到了我们将如何对逻辑函数进行正则化,现在对正则化的含义及其工作方式有了清晰的认识。因此,现在最好看看这些想法如何扩展到神经网络是上面。因此,神经网络的召回或成本函数看起来像这样

6b1ce8ecfac7aff0022d63cd25887449.png

因此,现在回想一下我们在前面讨论时所添加的内容,我们添加了正则化参数λ,缩放参数以及最重要的L2范数,因此我们将执行类似的操作,而只是将其求和。因此,我们添加的术语如下所示:

7ebfc68d72dd6ad9a8570f4137afd790.png

现在让我们来简化这个L2范数项,它定义为该矩阵的每个元素的的i总和的j平方之和:

7c4000ec44670d501bda5c8571cb4e7d.png

这里的第二个是权重矩阵或w这里的尺寸nˡ, nˡ⁻¹和这些单位在层的数量l和l-1分别。这也称为矩阵的“ Frobenius范数”,Frobenius范数非常有用,并用于很多应用程序中,其中非常好的是推荐系统。按照惯例,用下标“ F”表示。可能只是说将它称为L2范式较为容易,但是由于某些常规原因,我们将其称为Frobenius范式,并且具有不同的表示形式

||⋅||²²-L²范数||⋅||²_F-Frobenius范数

实施梯度下降

因此,年初的时候我们会做的是计算dw采用反向传播,让你的成本函数的偏导数J相对于w任何给定层l,然后你只需更新你wˡ,也包括α参数。现在我们已经将正则化项纳入了目标,因此我们只需添加一个正则化项即可。而且,这些是我们为此制定的步骤和方程式

2af1035a3b670d481f7b38c5d6261784.png

因此,之前的第一步曾经只是从反向传播中获得的东西,现在我们在其中添加了一个正则化术语。其他两个步骤与在任何其他神经网络中所做的几乎相同。dw[l]现在,已经在最后添加了额外的正则项,因此对于参数而言,此新功能仍然是对成本函数的导数的正确定义。因此,L 2正则化有时也称为重量衰减。因此,现在,如果只是从第1步中提取方程式,并在第3步方程式中替换它

980d4eac5965cdbfdeb5318d028ec5c8.png

因此,这将显示w[l]要使矩阵变小的任何矩阵。实际上,这就像我们要提取矩阵w并将其乘以1 - α λ/m。因此,这就是L 2范数正则化也称为权重衰减的原因。因为这就像通常的梯度下降,所以可以w通过减去从反向传播中获得的原始梯度的α倍来进行更新。但是现在也要用w乘以这个东西,它比1小一点。因此,L 2正则化的替代名称是权重衰减。我不经常使用该术语,但是现在知道其名称的直觉是如何产生的。

为什么正则化可以减少过度拟合

在实施正则化时,我们添加了一个称为Frobenius范数的术语,该术语惩罚权重矩阵过大。那么,现在要考虑的问题是为什么缩小Frobenius范数会减少过度拟合?

想法1

一个想法是,如果将正则化参数λ增大得很大,就会真正激励它们将权重矩阵w设置为合理地接近零。因此,一种直觉是,对于许多隐藏的单位,权重设置得非常接近零,从而基本上消除了这些隐藏的单位的影响。如果是这种情况,则神经网络将变得更小,更简化。实际上,它几乎就像一个逻辑回归单元,但堆叠的深度可能最大。这样一来,可以从过度拟合情况中更接近高偏差情况。但希望应该有一个λ的中间值,从而得出最佳解。因此,总而言之,只是将某些隐藏层和本质上更简单的网络的影响归零或减少。

从一堆隐藏单元中完全清零的直觉并不完全正确,在实践中效果也不佳。事实证明,实际发生的情况是我们仍将使用所有隐藏的单位,但是每个隐藏单位的影响都小得多。但是最终会得到一个更简单的网络,并且好像拥有一个较小的网络,因此不太容易过度拟合。

想法2

这是正则化的另一种直觉或想法,以及为什么它可以减少过度拟合。为了理解这个想法,我们以tanh激活函数为例。因此,我们的g(z) = tanh(z)

2bb6227032d32bc6483a5616f63ebb39.png

在这里请注意,如果z仅接受很小范围的参数|z|(接近于零),那么将使用tanh函数的线性状态。如果仅z允许向上或向下移动较大的值或|z|远离0,则激活函数的线性度开始降低。因此,您可能会避免直觉,如果正则化参数λ大,则您的参数将相对较小,因为它们会因代价函数大而受到不利影响。

因此,如果的权重w 较小,则因为z = wx+b但如果w趋于非常小,则权重z也将相对较小。特别是,如果z最终采用相对较小的值,则将导致g(z)大致呈线性。因此,好像每一层都将像线性回归一样大致呈线性。这将使其像线性网络一样。因此,即使是具有线性激活函数的非常深的网络,最终也只能计算线性函数。这将无法适应一些非常复杂的决定。

如果拥有神经网络和一些非常复杂的决策,则可能会过度拟合,这肯定会有助于减少过度拟合。

当实现梯度下降时,调试梯度下降的步骤之一是将成本函数绘制J为梯度下降的高程数的函数,并且希望看到成本函数J在每次梯度下降的高程后都单调减少。而且,如果要实施正则化,请记住J现在有了一个新定义。如果绘制的旧定义J,则可能不会单调减少。因此,要调试梯度下降,请确保要绘制的新定义J也包括第二个术语。否则,可能不会J在每个高程上都看到单调减少。

正则化在深度学习模型中非常有帮助,并且帮助解决了过度拟合的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值