目录

 

凸优化基础知识

1.AI问题是什么?

2.对于常见的优化问题,我们可以写成什么形式? 

3.针对一般的优化问题,我们从哪几个方向思考?

4.什么样的问题是凸优化问题?

4.1凸优化问题需要同时满足以下两个条件: 

4.2.如何判断定义域是不是凸集合?

4.3怎么判断目标函数是不是凸函数呢?

5. 利用拉格朗日对偶性duality来解决非凸问题

5.1原问题primal 的 拉格朗日对偶问题 diality 的形式

5.2 拉格朗日强对偶怎么证明(不完全版本)

6.接下来的一篇博客将证明常见的凸集 和 凸函数。


凸优化基础知识

1.AI问题是什么?

总的而言:AI问题 = 模型 + 优化(训练)--------等价于------- 程序 = 数据结构 + 算法

模型举例: XGBOOST,SVM等

优化举例: SGD/GD   EM等

2.对于常见的优化问题,我们可以写成什么形式? 

凸优化“傻瓜”教程-----凸优化基础知识

需要注意的是:该形式指的是一般化的优化问题,并不是特指凸优化问题。

另外,我们习惯上对于【限制条件】用小于等于号,大家可以理解为【求最小值的限制条件是小于等于】。

3.针对一般的优化问题,我们从哪几个方向思考?

我们针对以下四个方向思考:标准形式 =》判断4个方面(凸性、连续性、约束性、光滑性);其中最重要的是函数的凸性,针对非凸函数的处理我们主要采用三种处理方式: 1、简单问题:暴力求解  2、可找到对偶问题:Relax放松约束,由对偶问题来近似(可能可以求出最优解)。  3、算法求解:比如采用SGD,这种方法一般都是找的局部最优解。

方面1 Convex(凸函数) Non-convex(非凸函数)
凸性 一般可以获得全局最优解 一般只能获得局部最优解,一般由其对偶问题(例如拉格朗日)近似或全局最优求解。
方面2

continuous(连续)

discrete(离散的)
连续性    
方向3 constrained(有约束条件) un-constrained(无约束条件)
约束性 转化为无约束(比如利用拉格朗日对偶duality转化) 更容易处理
方向4 smooth(光滑) non-smooth(非光滑)
光滑性   例如加了L1正则项后,非光滑;但是产生更多稀疏参数。

4.什么样的问题是凸优化问题?

4.1凸优化问题需要同时满足以下两个条件: 

  1. 定义域:定义域为凸集。(后面4.2讲解如何判断)
  2. 优化函数(objective):优化函数为凸函数。(后面4.3讲解如何判断)

(思考:不满足凸优化问题,就不能采用凸优化只是去解决? 答:不是的,不满足可以寻找其对偶问题,如果对偶问题是凸优化问题呢?)

(对偶问题是什么?答:对偶问题你可以理解为 【函数图像=原问题(primal objective)】在湖面中的 【镜像=对偶dual问题】;其中求解函数图像的最小值====求解镜像的最大值,这里的等于是约等于,可能存在gap)

凸优化“傻瓜”教程-----凸优化基础知识

4.2.如何判断定义域是不是凸集合?

凸集的数学定义: 对任意的凸优化“傻瓜”教程-----凸优化基础知识凸优化“傻瓜”教程-----凸优化基础知识,如果可以推出凸优化“傻瓜”教程-----凸优化基础知识 那么我们就称凸优化“傻瓜”教程-----凸优化基础知识是一个凸集。

凸集的直观理解:凸优化“傻瓜”教程-----凸优化基础知识 到底指的是x,y线段(不是射线、线)上任意一点。(图中会证明)

凸优化“傻瓜”教程-----凸优化基础知识凸优化“傻瓜”教程-----凸优化基础知识

非凸集举例:

凸优化“傻瓜”教程-----凸优化基础知识

4.3怎么判断目标函数是不是凸函数呢?

凸函数的数学定义: 函数的定义域为凸集,对于定义域内任意凸优化“傻瓜”教程-----凸优化基础知识 ,函数满足:

                                                        凸优化“傻瓜”教程-----凸优化基础知识 ,则称函数为凸函数。

凸函数的直观理解:记符号 凸优化“傻瓜”教程-----凸优化基础知识    , 凸优化“傻瓜”教程-----凸优化基础知识,下面证明为什么B在A的正上方,这不不是证明是否是凸函数喔,只是证明B在任何情况下都和A处于同一条垂直线,并未说明A和B的大小关系。

凸优化“傻瓜”教程-----凸优化基础知识

那么如何证明A,B之间的大小关系呢?或者说如何说明一个函数的B一定大于等于A,也就是B>=A时为凸函数。

如果采用定义判断,我们的确不好判断,因此我们采用它的充要条件进行等价判断。

主要有两种判断方法:

  1. 一阶凸性条件 判断法:充要条件(不常用)
  2. 二阶凸性条件 判断法:充要条件(最常用)

一阶凸性条件的数学条件:右图是非正式的证明,直观的理解

凸优化“傻瓜”教程-----凸优化基础知识凸优化“傻瓜”教程-----凸优化基础知识

待补充正式的证明:【-------------------------------------------】

 

二阶凸性条件的数学条件:常用。

凸优化“傻瓜”教程-----凸优化基础知识

注意:多元函数的二阶导数为 海森矩阵 ,里面的凸优化“傻瓜”教程-----凸优化基础知识0的意思是:要求目标函数的海森矩阵为半正定矩阵。(凸优化“傻瓜”教程-----凸优化基础知识意思不同)

预备知识:

  1. 半正定矩阵:参考1、参考2
  2. 半正定矩阵的判断方法:待补充

 

5. 利用拉格朗日对偶性duality来解决非凸问题

利用对偶性本质是是对原问题进行 relax ,简化求解过程,但是不代表一定可以找到全局最优解,这在学术界依然是一个开放性问题。

5.1原问题primal 的 拉格朗日对偶问题 diality 的形式

如何证明拉格朗日对偶是一个对偶问题。

凸优化“傻瓜”教程-----凸优化基础知识

上面介绍了,如何证明拉格朗日对偶条件是一个对偶条件。

5.2 拉格朗日强对偶怎么证明(不完全版本)

1、 slater's conditious(强对偶充要条件)

上面说了拉格朗日弱对偶一定会发生,但是什么情况下是强对偶呢?

利用 slater's conditious :如果满足原问题是凸优化问题(前提),并且至少存在绝对一个绝对可行点(什么叫绝对可行点,就是一个可以让所有不等式约束都不取等号的可行点),且满足等式约束,那么就具有强对偶性。这个条件就是传说中的Slater’s condition。

参考:slater‘s condition

凸优化“傻瓜”教程-----凸优化基础知识

2、对偶问题互补松弛性(complementary slackness)

这是kkt条件中的一部分,也是保证了对偶问题的最优解(x和值)对应原问题的最优解。 个人感觉是必要条件

凸优化“傻瓜”教程-----凸优化基础知识

 

6.接下来的一篇博客将证明常见的凸集 和 凸函数。

 

 

 

相关文章: