先转载几个链接,关于理论的介绍。
作者:王业磊
链接:https://www.zhihu.com/question/20343349/answer/17347657
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
数学中最优化问题的一般表述是求取
,使
,其中
是n维向量,
是
的可行域,
是
上的实值函数。
凸优化问题是指
是闭合的凸集且
是
上的凸函数的最优化问题,这两个条件任一不满足则该问题即为非凸的最优化问题。
其中,
是 凸集是指对集合中的任意两点
,有
,即任意两点的连线段都在集合内,直观上就是集合不会像下图那样有“凹下去”的部分。至于闭合的凸集,则涉及到闭集的定义,而闭集的定义又基于开集,比较抽象,不赘述,这里可以简单地认为闭合的凸集是指包含有所有边界点的凸集。
是
凸函数是指对于定义域
中任意两点
,有
(
这里应该是小于等于号,作者注),
直观上就是
向下凸出,如下图示意。
<img src="https://i-blog.csdnimg.cn/blog_migrate/c8f3ca015c20c3d5fb0fdf91dcdb6208.png" data-rawwidth="300" data-rawheight="156" class="content_image" width="300">
实际建模中判断一个最优化问题是不是凸优化问题一般看以下几点:
![x^{*}\in \chi](https://i-blog.csdnimg.cn/blog_migrate/79271a73b75b1b2971964504afad8a27.png%5E%7B%2A%7D%5Cin+%5Cchi+)
![f(x^{*} )=min\{f(x):x\in \chi \}](https://i-blog.csdnimg.cn/blog_migrate/b1546fe57556d315e29ee6712725da66.png%28x%5E%7B%2A%7D+%29%3Dmin%5C%7Bf%28x%29%3Ax%5Cin+%5Cchi+%5C%7D)
![x](https://i-blog.csdnimg.cn/blog_migrate/79271a73b75b1b2971964504afad8a27.png)
![\chi](https://i-blog.csdnimg.cn/blog_migrate/18a965a5e89d35749e1a67d6c98776c8.png)
![x](https://i-blog.csdnimg.cn/blog_migrate/79271a73b75b1b2971964504afad8a27.png)
![f](https://i-blog.csdnimg.cn/blog_migrate/b1546fe57556d315e29ee6712725da66.png)
![\chi](https://i-blog.csdnimg.cn/blog_migrate/18a965a5e89d35749e1a67d6c98776c8.png)
凸优化问题是指
![\chi](https://i-blog.csdnimg.cn/blog_migrate/18a965a5e89d35749e1a67d6c98776c8.png)
![f](https://i-blog.csdnimg.cn/blog_migrate/b1546fe57556d315e29ee6712725da66.png)
![\chi](https://i-blog.csdnimg.cn/blog_migrate/18a965a5e89d35749e1a67d6c98776c8.png)
其中,
![\chi](https://i-blog.csdnimg.cn/blog_migrate/18a965a5e89d35749e1a67d6c98776c8.png)
![tx_{1}+(1-t)x_{2}\in \chi,t\in[0,1]](https://i-blog.csdnimg.cn/blog_migrate/b739b9273e60ff43d85015295f1b2cc2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2a845bfac202d6c5458235495b9c0c75.png)
![f](https://i-blog.csdnimg.cn/blog_migrate/b1546fe57556d315e29ee6712725da66.png)
![\chi](https://i-blog.csdnimg.cn/blog_migrate/18a965a5e89d35749e1a67d6c98776c8.png)
![f(t x_{1}+(1-t) x_{2}) \ge t f(x_{1})+(1-t)f( x_{2}),t\in[0,1]](https://i-blog.csdnimg.cn/blog_migrate/b1546fe57556d315e29ee6712725da66.png%28t+x_%7B1%7D%2B%281-t%29+x_%7B2%7D%29+%5Cge+t+f%28x_%7B1%7D%29%2B%281-t%29f%28+x_%7B2%7D%29%2Ct%5Cin%5B0%2C1%5D)
![f](https://i-blog.csdnimg.cn/blog_migrate/b1546fe57556d315e29ee6712725da66.png)
<img src="https://i-blog.csdnimg.cn/blog_migrate/c8f3ca015c20c3d5fb0fdf91dcdb6208.png" data-rawwidth="300" data-rawheight="156" class="content_image" width="300">
![](https://i-blog.csdnimg.cn/blog_migrate/c8f3ca015c20c3d5fb0fdf91dcdb6208.png)
实际建模中判断一个最优化问题是不是凸优化问题一般看以下几点:
- 目标函数
如果不是凸函数,则不是凸优化问题
- 决策变量
中包含离散变量(0-1变量或整数变量),则不是凸优化问题
- 约束条件写成
时,
如果不是凸函数,则不是凸优化问题
资料来自维基,稍有删减改动。
以上重要部分都已经标出,关键就是1)定义域是闭合的凸集 2)函数满足凸函数定义。
其实在自己理解问题和听课时,直观理解更好。
比如吴恩达教授提到的1/2*(y'-y)^2这个函数,课件中提到他是一个非凸函数。那么画下图来是底下这样的。
可以看到这是个马鞍形的,并没有满足(下)凸函数条件,有可能出现两点连线的中值小于函数在该中间点的取值的情况。或者二维看不出来的话就转为一维度来看,切一条线初来,明显是上凸的,这种函数存在的最大问题,知乎回答也提及了,就是局部最优解有可能不是全局最优解。根据这种函数定义出来的损失函数(或者叫优化函数)会容易陷入局部最优解的问题,所以一般不采用这种函数。
底下这个函数就很棒了。
PS,记住底下这个公式,excel画曲面图必备。
=$A2^2/2+B$1^2/2-2*$A2*B$1