R中nnet函数的衰减参数的目的?

时间:2012-02-22 06:52:22

标签: r

我在R中使用nnet函数来训练我的神经网络。我没有得到nnet中的衰减参数是什么?这个步长是用于梯度下降方法还是用于克服过度拟合的正则化参数?

2 个答案:

答案 0 :(得分:7)

避免过度拟合是正规化的。

来自the documentation (pdf)

  重量衰减的

decay:参数。默认为0.

有关详细信息,请参阅作者的书Modern Applied Statistics with S. Fourth Edition,第245页:

  

确保f平滑的一种方法是限制估计类别,例如,使用有限数量的样条结。另一种方法是 正则化 ,其中拟合标准被更改为

     

E + λC(f)

     

在f的'粗糙度'上有一个惩罚C.体重衰减,特定于神经   网络,用作权重wij的平方和的罚分。   ...   使用重量衰减似乎既有助于优化过程,也有助于避免过度补偿。 (重点补充)

答案 1 :(得分:2)

通过查看源代码来补充blahdiblah的答案我认为参数weights对应于反向传播的学习率(通过阅读手册我不能不明白它是什么。查看文件 nnet.c ,行 236 ,在函数 fpass 中:

TotalError += wx * E(Outputs[i], goal[i - FirstOutput]);

这里,在一个非常直观的命名法中,E对应于 bp 错误,wx是传递给函数的参数,最终对应于标识符{{ 1}}。

此外,您可以确定参数Weights[i]确实是它所声称的那个,通过转到同一文件的 317~319 行,在函数 VR_dfunc <中/ em>:

decay

其中for (i = 0; i < Nweights; i++) sum1 += Decay[i] * p[i] * p[i]; *fp = TotalError + sum1; 对应于连接的权重,这是权重衰减正则化的确切定义。