梯度下降可以应用于非凸函数吗?

机器算法验证 优化
2022-02-09 11:48:13

我只是在学习优化,并且无法理解凸优化和非凸优化之间的区别。据我了解,凸函数是“函数图形上任意两点之间的线段位于图形上方或图形上”的函数。在这种情况下,可以使用梯度下降算法,因为只有一个最小值,并且梯度总是会带你到那个最小值。

但是,这个图中的函数呢:

在此处输入图像描述

在这里,蓝色线段穿过红色函数下方。但是,该函数仍然有一个最小值,因此梯度下降仍然会将您带到这个最小值。

所以我的问题是:

1)这个图中的函数是凸的还是非凸的?

2)如果是非凸的,那么凸优化方法(梯度下降)还能用吗?

2个回答

您绘制的函数确实不是凸的。但是,它是准凸的。

梯度下降是一种用于连续优化的通用方法,因此它可以并且非常普遍地应用于非凸函数。使用平滑函数和合理选择的步长,它将生成一系列点,其值严格递减x1,x2,f(x1)>f(x2)>

不管凸性如何,梯度下降最终都会收敛到函数的一个固定点。如果函数是凸的,这将是一个全局最小值,但如果不是,它可能是一个局部最小值,甚至是一个鞍点。

拟凸函数是一个有趣的例子。拟凸函数的任何局部最小值也是全局最小值,但拟凸函数也可以有非局部最小值的驻点(以为例)。因此,理论上梯度下降可能会卡在这样的静止点上,而不是进展到全局最小值。在您的示例中,如果图表左侧的肩部要完美平整,则梯度下降可能会卡在那里。但是,诸如重球方法之类的变体可能能够“滚动”并达到全局最小值。f(x)=x3

保罗已经提到了一个重要的观点:

  • 如果 f 是凸的,则没有鞍点,并且所有局部最小值也是全局的。因此 GD(具有合适的步长)可以保证找到一个全局最小化器。

使非凸优化变得困难的是鞍点和局部最小值的存在,其中梯度为 (0,...,0) 并且具有任意错误的目标值。

在这样的设置中找到全局最小化器通常是 NP-hard 的,而是以寻找局部最小化器为目标。

但是,请注意:

  • GD 卡在鞍座上的概率实际上是 0(见这里)。
  • 然而,鞍点的存在可能会严重减慢 GD 的进展,因为低曲率的方向被利用得太慢(见这里

因此,根据问题的维度,建议进行二阶优化例程。