凸优化【0】之为什么学习CVX与从宏观学习CVX

来源:互联网 发布:firefox json美化插件 编辑:程序博客网 时间:2024/05/17 08:50

凸优化(Convex OptimizationConvex简称CVXOptimization简称OPT


一、为什么要学习CVX?

1. 优化问题

生活中你经常会遇到一些这样的问题:怎么走到目的地的路最短;怎么安排效率最高;怎么分配让成本最少或者是利润最高;这些问题可以归属为优化问题或者规划问题

优化问题形式如下: 给定函数f:A→R,寻找一个元素x0∈A,使得对于所有A中的x,f(x0)≤f(x)最小化);或者f(x0)≥f(x)最大化)。


你一定见过这个例子,举例说明:设a+b=8,求a、b之积最大值。

其实就是这个不等式而已:

但是我们采用求导寻极值的方法,设b=8-a,(i.e.),两数之积ab为求最值(优化)的目标函数,a+b=8为约束条件(等式约束以及不等式约束)。


f(a)=a(8-a),对a求导(不再阐述过程)

2. CVX的重要性

凸优化问题是优化问题的一个重要分支,之所以要研究CVX,是因为CVX有一套非常完备的求解算法,如果能够将某个优化问题确认或者转化为CVX,那么能够快速给出最优解。有人的疑问就是非凸优化怎么办,事实上在非凸优化中CVX同样可以起作用,因为很多非凸优化问题可以转化为凸优化问题来解决。一旦将一个实际问题表述为凸优化问题,大体上意味着相应问题已经得到彻底解决。

凸优化的容易解决体现在一旦找到了一个局部最优解,那么它一定是最好的那个解(即全局最优的)。这句话怎么理解呢?首先即将介绍的凸集(任意两点solution的凸组合仍然在集合里),这样就可以保证算法在迭代过程中不会出现solution不在可行域的情况。凸集结合凸函数,具有非常好的性质【局部最优解即是全局最优解】。

在MATLAB或python等框架中利用现成的软件包来解决CVX问题,e.g. cvx (MATLAB),cvxopt (python).。

近年来凸优化在很多热门领域有所应用,e.g.信号处理、算法设计、机器学习、深度学习等。因此CVX就非常重要,有句玩笑话可以这么说:学好凸优化,走遍天下都不怕。


二、CVX要学些什么?

凸优化在大多数看来是深不可测的math理论,而学习CVX的基础关键是高等数学线性代数。CVX的核心体系主要是凸集->凸函数->凸优化。

1. 凸集

2.凸函数

3.凸优化问题

4.凸优化问题求解

5.对偶问题(将一般优化问题转化为凸优化问题的有效手段)



原创粉丝点击