我在R中使用nnet函数来训练我的神经网络.我没有得到nnet中的衰减参数是什么?这个步长是用于梯度下降方法还是用于克服过度拟合的正则化参数?
这是正规化以避免过度拟合.
从文档(pdf):
decay:重量衰减的参数.默认值为0.
有关更多信息,请参阅作者的书" 现代应用统计与S.第四版",第245页:
确保f平滑的一种方法是限制估计类别,例如,通过使用有限数量的样条结.另一种方式是正则化,其中拟合标准被改变为
E + ?C(f)对f的'粗糙度'处以罚分C. 权重衰减,特定于神经网络,使用权重wij的平方和作为惩罚....使用重量衰减似乎既有助于优化过程,又可以避免过度补偿.(重点补充)
通过查看源代码来补充blahdiblah的答案,我认为该参数weights对应于反向传播的学习率(通过阅读手册我无法理解它是什么)。查看文件nnet.c,第236行,在函数fpass 中:
TotalError += wx * E(Outputs[i], goal[i - FirstOutput]);
Run Code Online (Sandbox Code Playgroud)
在这里,在一个非常直观的命名法中,E对应于bp错误,wx是传递给函数的参数,最终对应于标识符Weights[i]。
此外,您可以decay通过转到同一文件的第317~319行,在函数内部确定该参数确实是它声称的那样VR_dfunc 中那样:
for (i = 0; i < Nweights; i++)
sum1 += Decay[i] * p[i] * p[i];
*fp = TotalError + sum1;
Run Code Online (Sandbox Code Playgroud)
其中p对应于连接的权重,这是权重衰减正则化的确切定义。