我试图理解为什么在尝试最小化目标函数时,经常使用梯度下降,而不是将误差的梯度设置为零,然后解析求解。
在学校里,我被教导为了最小化一个函数,你需要它对参数的一阶导数,然后将它设置为零。求解这个方程然后产生一个或多个解(局部最小值),您可以尝试每一个来找出哪个是全局最小值。
然而,在学习神经网络时,我看到训练是通过使用梯度下降(或多层网络的反向传播)进行的。这里采用误差函数的梯度,但不是将其设置为零,您只需在此梯度的方向上稍微移动参数即可。
我不明白为什么不使用分析方法,因为它具有解决方案完美的明显优势,并保证返回全局最小值,而不是像梯度下降那样可能返回局部最小值。我不使用分析方法的直观原因是手动求解具有所有这些参数的方程变得非常困难,但是,也许天真地,我会认为有自动化的方法来求解这些复杂的方程天?考虑到更好的结果,与让梯度下降工作只是为了获得较差结果的努力相比,实现这一点的努力难道不值得吗?
谢谢 :)