为什么用梯度下降而不是解析解来解决优化问题?

机器算法验证 机器学习 神经网络 优化 结石
2022-04-01 09:32:32

我试图理解为什么在尝试最小化目标函数时,经常使用梯度下降,而不是将误差的梯度设置为零,然后解析求解。

在学校里,我被教导为了最小化一个函数,你需要它对参数的一阶导数,然后将它设置为零。求解这个方程然后产生一个或多个解(局部最小值),您可以尝试每一个来找出哪个是全局最小值。

然而,在学习神经网络时,我看到训练是通过使用梯度下降(或多层网络的反向传播)进行的。这里采用误差函数的梯度,但不是将其设置为零,您只需在此梯度的方向上稍微移动参数即可。

我不明白为什么不使用分析方法,因为它具有解决方案完美的明显优势,并保证返回全局最小值,而不是像梯度下降那样可能返回局部最小值。我不使用分析方法的直观原因是手动求解具有所有这些参数的方程变得非常困难,但是,也许天真地,我会认为有自动化的方法来求解这些复杂的方程天?考虑到更好的结果,与让梯度下降工作只是为了获得较差结果的努力相比,实现这一点的努力难道不值得吗?

谢谢 :)

1个回答

将导数设置为零的方程组通常无法解析求解。例如假设我想选择10>x>0尽量减少xln(x)x(这确实达到了最低限度10>x>0) 那么我们的一阶条件是ln(x)+112x=0它不允许封闭形式的解决方案。当然,我们可以尝试使用数值方法找到解决方案,但这正是梯度下降所做的!