多层神经网络的隐层大多采用sigmoid型传递函数,这类函数又称为“挤压”函数。因为它们将没有边界限制的输入信号压缩到有限的输出范围内,当输入量很大或很小时,输出函数的斜率接近于0。那么当应用梯度下降法训练多层网络时,其梯度数量级会很小,从而使得权值和阈值的调整范围很小,也就是说即使没有达到最优值,也会形成训练停止的结果。
弹性梯度下降法就能够消除这种影响。应用弹性梯度下降法训练BP网络时,权值修正取决于表现函数导数的正负号,而导数的数量级对权值修正并没有影响。其原理是:权值变化的大小由不同的修正值决定。当前两次训练时导数的正负号没有改变,权值和阈值的修正值随着参数delt_inc增加;当前两次训练时导数的正负号有改变,权值和阈值的修正值随着参数delt_dec减小;如果导数为0,则修正值不变。这样调整的结果是,权值的变化呈振荡趋势,不过权值变化量逐步减小了。如果权值变化连续几次都在同一个方向,则增加权值变化的量级。
Matlab 神经网络, newff, train trainrp叫弹性梯度下降法 , 的原理解释
最新推荐文章于 2024-05-17 02:43:32 发布