在逻辑回归中找到最小值的最佳方法是什么?

数据挖掘 逻辑回归 梯度下降
2021-10-09 23:58:14

在 Andrew NG 的机器学习教程中,他采用误差函数的一阶导数,然后朝着导数方向迈出一小步以找到最小值。(基本上是梯度下降)

在《统计学习要素》一书中,它找到了误差函数的一阶导数,将其等于零,然后使用数值方法找出根(在本例中为 Newton Raphson)

在论文中,这两种方法都应该产生相似的结果。但从数字上看,它们是不同的还是一种方法比另一种更好?

2个回答

作为二阶方法,如果已知成本函数的 Hessian 矩阵的逆矩阵,Newton-Raphson 算法比梯度下降更有效。然而,反转 Hessian 矩阵,这是一个(n3)随着问题维数的增加,操作很快变得不切实际。这个问题在BFGS 等准牛顿方法中得到了解决,但它们不能很好地处理小批量更新,因此需要将完整的数据集加载到内存中;另请参阅此答案以进行讨论。Andrew Ng 稍后将在他的课程中讨论神经网络。它们可以很容易地包含数百万个自由参数并在庞大的数据集上进行训练,因此梯度下降的变体通常与它们一起使用。

简而言之,对于相对较小的问题,Newton-Raphson 方法可以更快,但梯度下降随着问题的复杂性更好地扩展。

SGD 只需要一阶导数,但 Newton-Raphson 最终需要二阶导数,这可能很难或不可能计算。因此,它还需要更多的计算。

对于非凸问题,请注意,在最大值、最小值和鞍点处导数为 0,这(据我所知)需要更加小心才能正确使用数值方法。

但是对于逻辑回归是可以的,它是凸的并且二阶导数并不复杂,牛顿的方法也可以。我相信它通常使用 L-BFGS 进行优化,而不仅仅是 SGD,这在某种程度上更像是牛顿的方法。

我认为它是用 SGD 解释的,只是为了保持简单。