博舍

为什么凸优化这么重要 人工智能是个伪命题对吗为什么这么重要

为什么凸优化这么重要

与此相对应的,即使是一个P问题,但是如果实际当中你的问题规模超级大呢?实际上反而这个问题会让你更头疼的。

举个例子,比如现在优酷、天猫、京东、亚马逊这些个平台,每天你登陆网站,它在推荐栏都需要根据你的历史活动记录决定推荐哪些产品给你。这个在线推荐算法,本质上只是需要求解一个线性规划问题(LP,linearprogramming,比一般的凸优化还简单),甚至还不是一个一般的线性规划,有个专门的名字叫做packingLP,这类packingLP理论上可以有跟问题规模呈线性的复杂度的算法(忽略log项,跟排个序差不多...)。听起来是不是很简单?然而,实际这些问题的规模无比巨大,每天这些平台上线人次数以亿记,这些平台可以推荐的商品也是至少百万千万规模的。。而且实际问题还有各种各样的现实约束,比如我们希望我们的算法可以完全在线更新(online,甚至是streamingalgorithm),我们的算法需要灵活运用存储数据的数据结构,需要利用计算集群的并行能力,分布式能力,这也是需要非常非常专门的(一阶)优化算法设计的。。这边就不再多说了,因为我个人确实在之前公司实习的时候,发现中国最好的IT公司面对这类海量规模的“简单”LP,实际上远没有能力去完美地求解。

因此你说现有的方法能解决所有的凸优化问题,但从实际的角度其实还差的远。事实上,目前的大公司面对如此规模的优化问题,也就LP还可以勉强接受,像是什么second-orderconeprorgamming(SOCP),semidefiniteprogramming(SDP)根本目前实际中都不可能大规模求解。而这两类问题在理论上还仍然都是“线性”的,因为可以写成linearconicprogramming,所以就更不要说一般的带约束的凸优化问题了。

实际上,在这个方面,无论是求解器(solver)还是更好的理论算法的开发都还有大量的研究空间。比如,SDP实际当中的大规模算法设计目前来看还基本一片空白,有很多很基本的问题都还没有在理论上得到满意的解答(像SDP其实和另一类凸优化问题只有一丝之隔,copositiveprogramming,而这类凸优化问题的计算复杂度却是NPcomplete的,所以即使是凸优化也未必复杂度就容易!实际上,所有mixed0/1nonconvexquadraticprogram都可以写成copositiveprogram这个凸优化的形式。两者的算法设计也因此都很蛋疼)。。还有这么多没有解决的问题,又如何能说凸优化的问题都已经被“解决”了呢?

至于具体如何把mixed0/1nonconvexquadraticprogram写成凸优化形式,这是个很cute的结果,有兴趣的同学可见我这篇专栏文章的第二部分。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇