凸函数和凹函数的区别

机器算法验证 机器学习 优化
2022-01-26 09:39:45

凸函数、非凸函数、凹函数和非凹函数有什么区别?我们如何知道给定函数是凸函数还是非凸函数?如果一个函数是非凸的,那么它一定是凹的?提前致谢

2个回答

凸函数有一个最小值 - 一个很好的属性,因为优化算法不会陷入不是全局最小值的局部最小值。x21, 例如:凸函数

非凸函数是波浪形的——有一些“谷”(局部最小值)不如整体最深的“谷”(全局最小值)那么深。优化算法可能会陷入局部最小值,并且很难判断何时会发生这种情况。x4+x32x22x, 例如:在此处输入图像描述

凹函数是凸函数的负数。x2, 例如:凹函数

非凹函数不是一个广泛使用的术语,只要说它是一个非凹函数就足够了——尽管我已经看到它曾经指代非凸函数。我真的不会担心这个。

要定义凸函数,您需要一个凸集X作为域和R作为共域。

一个函数是凸的,如果它满足以下性质:

x1,x2X,t[0,1],f(tx1+(1t)x2)tf(x1)+(1t)f(x2)

您应该通读凸函数的维基百科页面。

在一个维度中,您可以将维度可视化,因为每当您选择域上的任意两个点并使用直线连接它们时,直线始终等于或高于图形。

在此处输入图像描述

就个人而言,我发现以下检查凸属性的属性非常有用:

“当且仅当其二阶偏导数的 Hessian 矩阵在凸集内部是半正定时,多个变量的连续、两次可微函数在凸集上是凸的。”

  • 如果函数不是凸函数,则该函数是非凸函数。

  • 一个函数,g如果是凹的g是一个凸函数。

  • 如果函数不是凹函数,则函数是非凹函数。

请注意,函数可以同时是凸函数和凹函数,直线既是凸函数又是凹函数。

非凸函数不一定是凹函数。例如,函数f(x)=x(x1)(x+1)定义于[1,1].