神经净重衰减与学习率之间的差异


Answers:


161

学习速率是确定更新步骤对权重的当前值有多大影响的参数。权重衰减是权重更新规则中的另一个术语,如果未安排其他更新,则权重将导致权重呈指数衰减到零。

假设我们有一个成本或误差函数要最小化。梯度下降告诉我们在中最陡下降的方向上修改权重: 其中是学习率,如果它很大,则权重会有相应的大修改(通常不应太大),否则将超出成本函数中的局部最小值。E(w)wE

wiwiηEwi,
ηwi

为了有效地限制模型中自由参数的数量,以避免过度拟合,可以对成本函数进行正则化。一种简单的方法是在权重上引入零均值高斯先验,等效于将成本函数更改为。在实践中,这会惩罚较大的权重,并有效限制了模型的自由度。正则化参数确定如何权衡较大的权衡代价来权衡原始成本E~(w)=E(w)+λ2w2λE

将梯度下降应用于这个新的成本函数,我们得到: 来自正则化 的新项导致权重与其大小成比例地衰减。

wiwiηEwiηλwi.
ηλwi

2
感谢您的有用解释。一个问题:在“ nnet” R程序包中,用于训练神经网络的参数称为“衰减”。您是否知道衰减是对应于您的lambda还是您的eta * lambda?
Andrea Ianni 2015年

3
对于那些熟悉后者的人,我还要补充说权重衰减与L2正则化相同。
谢尔盖

2
@Sergei,请不要,不要传播这种错误信息!这仅在非常特殊的香草SGD情况下才是正确的。请参见亚当纸的定影重量衰减
LucasB

需要澄清的是:在撰写本文时,亚当的PyTorch文档使用术语“重量衰减”(后称“ L2惩罚”)来指称我认为这些作者称为L2规则。如果我理解正确的话,这个答案是指没有动力的新加坡元,这两者是等效的。
Dylan F

14

除了@mrig的答案(+1),对于神经网络的许多实际应用,最好使用更高级的优化算法,例如Levenberg-Marquardt(中小型网络)或缩放的共轭梯度下降(中大型)网络),因为它们将更快,并且不需要设置学习率(这两种算法本质上都使用曲率和梯度来适应学习率)。任何体面的神经网络软件包或库都将实现这些方法之一,而没有的任何软件包都可能已过时。我将NETLAB库用于MATLAB,这是一个很好的工具。


基于Rprop的优化算法呢?它们如何堆叠?
功率

4
我认为大多数人都在使用rprop + momentum的变体,例如RMSProp,adagrad,SGD + nesterov动量。参见cs231类
facuq

1
好吧,当然这取决于您的应用程序。但是对于现在流行的大型数据集/网络,我认为人们正在发现我提到的更合适的算法。
facuq

6
@DikranMarsupial可能是因为如今(您回答后将近五年)人们倾向于使用亚当代替?
ComputerScientist

2
确实,这个答案已经过时了。这些算法对于当今典型的模型和数据集规模不切实际,并且使用最广泛的软件包(当然不是过时的)缺少这些算法。
LucasB

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.