判断下列函数是否是凸函数_我们为什么要关心一个函数的凸凹性呢?——理解凸函数与非凸函数...

ef12776e98bf7a4771eda5b5af261057.png

函数是凸还是凹,这是一个我们通常仅仅通过观察就能来回答的问题。向外凸出是凸的,向内凸起是凹的。

▌国外凸函数是按照函数上方的区域是否为凸集定义, 国内有些教材中凸/凹函数定义刚好相反.

741855d7aaaf838bbbfd279f632e7825.png

但说到数学函数怎样判定,事情就没那么简单了。

麻省理工学院的一组计算机科学家最近发现,判断一个数学函数是否是凸函数是非常困难的。这个结果不仅让数学家感兴趣,也让工程师和任何从事优化工作的人感兴趣。而且幸运的是,该团队也找到了一种方法来解决这个问题,这种方法在现实生活中的大多数情况下都还适用。

如果一个连续函数的图形上的面积是一个凸集,那么它就是凸的,换句话说,如果连接该图上任意两点的直线位于该图上两点之间的位之上。

47a9d473d5d86b83f511544a4da4521d.png

更正式地说,一个函数 f 是凸的,如果对于任意的点 x1 和 x2 和所有在区间 [0,1] 的t 满足下面不等式:

1eb888101999e69694c03b51b5716436.png

如果函数 -f 是凸的,那函数 f 就是凹的。

(这些定义也适用于多个变量的函数,即函数

c6684b6d6aeb5c1e0722df03624ad6bf.png

要在讨论的点上有定义。在这种情况下,x 应该被理解为由所涉及的变量组成的向量。)

a568f24b5999047045fe8f8ab3e8ebf5.png

(这些定义也适用于两个变量的凸函数图(上两图)和两个变量(下右图)的非凸函数图。

但是我们为什么要关心一个函数是否是凸的呢?

现实生活中的许多问题都涉及到最小化一些量。例如,如果你正在制造一辆汽车,你想要将燃油消耗降到最低,而这取决于汽车的重量和空气动力阻力等其他变量。如果给你一个数学函数用这些变量来描述燃料消耗,那么你的工作就是找到这个函数的全局最小值,也就是说,你需要找到一个点 x0,对所有在函数的定义域内的 x,都有

fbc7d8ae202cb629493006738c864fd3.png

如果您正在研究一个更复杂的函数,可能是包含多变量的,那么要找到这个全局最小值绝非易事。

但是,如果函数是凸的,那么工作就简单得多了。凸函数只有一个极小值。从图像中可以看出,对于单一变量或双变量的凸函数,它们的形状像一个槽,最小值位于槽的底部。要找到这个值很容易,相当于使用“直觉”的技能在图像的斜率上寻找一下。(当你的函数有更多的变量时,这些方法也会起作用,这样你就不用绘制图形了。)

相比之下,一个非凸函数可以具有许多局部最小值,这让它的图像看起来像山脉一样。沿着山坡向下走,会让你进入其中一个山谷,但是你不能确定它仅仅是一个小的倾角还是你所追求的全局最小值。

bcac7cdfa440ef5a7d02d159bbf883c5.png

▲ 一个非凸函数的图像

由于上述和其他一些原因,已知给定函数是否是凸函数是非常有用的。计算机能多快地检验给定函数是否是凸函数的问题,被认为是优化领域中最重要的七个问题之一。

这是Amir Ali Ahmadi,Alex Olshevsky,Pablo A. Parrilo和John N. Tsitsiklis在他们的论文中提出的问题。该团队只研究了一类相对容易处理的函数,即多项式。这些函数是若干项的和,其中每一项都是变量的乘积,每一项都取幂,然后乘以常数,例如:

bb21c860ecbd7065e6338420a70c8550.png

每一项的次数是各变量幂的和,整个多项式的次数是每一项的次数的最大值。在他们的论文中,研究人员只研究偶数次多项式,因为在奇数次情况下检查凸性很容易。

检验一个给定的多项式是否是凸的的方法是众所周知的,所以问题不在于此,而在于检验任意一个多项式需要多长时间。很明显,多项式中的项越多,问题就越难,所以我们希望答案取决于项的个数,而项的个数又与变量的个数有关。

在复杂的理论中,解决问题所需的“时间”是根据计算机完成任务所需的步骤数来衡量的。这取决于问题有多少个部分展开。例如,要找到一列数字中的最大项,您需要查看每个单独的数字,并将其与您迄今为止找到的最大数字进行比较。在算法中有 n 步,所以我们说它的执行时间是与 n 成正比的。其他问题可能与执行时间 n²,n³,或 n^k (k 是正数)。

这当然意味着执行时间的增长随着 n 的增长而增长相当快,初始问题的规模会变大。但与以 n 的指数倍增长的执行时间相比,这根本算不了什么。例如,一个正比于 2^n 的问题。

执行时间与某个多项式中的 n 成正比的算法称为多项式时间算法。它们被认为是相对较快的。这种算法可以解决的一类称为P问题。

503392dd2650299a4ae637d55b46ae79.png

▲ 知道函数是否为凸函数可以帮助解决最小化问题,比如最小化汽车的燃料使用量。

但还有一类问题用 NP 表示(代表不确定时间多项式)。它的性质是如果有人给你这个问题的答案,你可以检查多项式时间是否正确。但是你能在多项式时间内从头开始解决这些问题吗?没有人确切知道。这是著名的 P=NP 问题的主题,这是数学中最大的开放问题之一。尽管还没有人能证明,一般的直觉是你不能: NP 问题的解可以被验证,但不能在多项式时间内找到。换句话说,P 不等于 NP。

现在我们回到凸性的问题。问题是一个算法的执行时间如何随着多项式中项数的增加而增长,该算法检查任意多项式的凸性。研究人员在他们的论文中表明,这个问题是 NP-困难的。这意味着,粗略地说,它至少和 NP 类中的任何问题一样难。所以除非有人证明了 P=NP,否则我们可以假设"它是凸的吗"这个问题不能用一种有效的时间方法来回答一个任意多项式。随着多项式中变量数量的增加,回答这个问题所需的时间也会激增。

但幸运的是,有一个漏洞。还有另一个性质,称为平方和凸性(sum of squared convexity),它可以在多项式时间内检验。任何平方和为凸的多项式也是凸的。对于你在现实生活中可能遇到的大部分多项式来说,反过来也成立的: 如果它们是凸的,它们也是平方和也为凸函数。所以在这些例子中,检验平方和凸性就足够了。这给了我们乐观的理由: 也许凸性问题的困难在于一些非常棘手的多项式例子,但通常它们不会出现在实际应用中。(- End -)

[遇见数学翻译小组] 核心成员: kitty 作品

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值