当衰减参数λ为 0 时,atv直播,Levenberg-Marquardt 算法就是使用海塞矩阵逼近值的牛顿法。而当 λ很大时,该算法就近似于采用很小学习速率的梯度下降法。如果进行迭代导致了损失函数上升,衰减因子λ就会增加。如果损失函数下降,那么λ就会下降,从而 Levenberg-Marquardt 算法更接近于牛顿法。该过程经常用于加速收敛到极小值点。 使用 Levenberg-Marquardt 法的神经网络训练过程状态图就如下图所示。第一步就是计算损失函数、梯度和海塞矩阵逼近值,随后再在每次迭代降低损失中调整衰减参数。
正如我们所了解到的,Levenberg-Marquardt 算法是为平方误差和函数所定制的。这就让使用这种误差度量的神经网络训练地十分迅速。然而 Levenberg-Marquardt 算法还有一些缺点,第一就是其不能用于平方根误差或交叉熵误差(cross entropy error)等函数,此外该算法还和正则项不兼容。最后,对于大型数据集或神经网络,雅可比矩阵会变得十分巨大,因此也需要大量的内存。所以我们在大型数据集或神经网络中并不推荐采用 Levenberg-Marquardt 算法。 内存与收敛速度的比较 下图展示了所有上文所讨论的算法,及其收敛速度和内存需求。其中收敛速度最慢的是梯度下降算法,但该算法同时也只要求最少的内存。相反,Levenberg-Marquardt 算法可能是收敛速度最快的,但其同时也要求最多的内存。比较折衷方法是拟牛顿法。
总而言之,如果我们的神经网络有数万参数,为了节约内存,我们可以使用梯度下降或共轭梯度法。如果我们需要训练多个神经网络,并且每个神经网络都只有数百参数、数千样本,那么我们可以考虑 Levenberg-Marquardt 算法。而其余的情况,拟牛顿法都能很好地应对。 原文地址:https://www.neuraldesigner.com/blog/5_algorithms_to_train_a_neural_network ©本文为机器之心编译,转载请联系本公众号获得授权。 ?------------------------------------------------ 加入机器之心(全职记者/实习生):[email protected] 投稿或寻求报道:[email protected] 广告&商务合作:[email protected] (责任编辑:本港台直播) |