🍅 写在前面
👨🎓 博主介绍:大家好,这里是hyk写算法了吗,一枚致力于学习算法和人工智能领域的小菜鸟。
🔎个人主页:主页链接(欢迎各位大佬光临指导)
⭐️近期专栏:机器学习与深度学习
LeetCode算法实例
张量分解
凸优化系列知识,详见下方链接:
凸优化学习(1)——什么是凸优化、凸集、凸函数
 本系列文章主要参考:卡耐基梅隆 凸优化系列课程
目录
- 什么是凸优化
 - 优化
 - 凸优化
 
- 凸集
 - 凸函数
 - 向量范数
 - 凸优化一般形式
 
什么是凸优化
优化
首先介绍什么是优化问题。优化可等同于数学规划,指的是在一系列可行解中找到最优的元素。
凸优化
在凸集上进行的最优化过程就是凸优化。在众多最优化过程中,凸优化是一种最为常见并且最重要的优化过程。因为凸优化有一个良好的性质:局部最优解也是全局最优解。 有了这个性质,我们就不需要证明局部解是否能收敛到全局最优。因此,凸优化有着广泛的应用范围,在有的问题不是凸的时候,我们往往也会将问题转化为凸优化问题来解决。
凸集

 即凸集中任意两点连线均还在凸集中,下图中左侧为凸集,右侧为非凸集。
 
凸函数
h(x)为在n维空间定义域为凸集S的函数,若对于任意实数 α ( 0 < α < 1 ) \alpha (0<\alpha<1) α(0<α<1),以及凸集S中任意两个不同的点x和y,都有:
 
      
       
        
        
          h 
         
        
          ( 
         
        
          α 
         
        
          x 
         
        
          + 
         
        
          ( 
         
        
          1 
         
        
          − 
         
        
          α 
         
        
          ) 
         
        
          y 
         
        
          ) 
         
        
          ≤ 
         
        
          α 
         
        
          h 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          + 
         
        
          ( 
         
        
          1 
         
        
          − 
         
        
          α 
         
        
          ) 
         
        
          h 
         
        
          ( 
         
        
          y 
         
        
          ) 
         
        
       
         h(\alpha x+(1-\alpha) y) \leq \alpha h(x)+(1-\alpha) h(y) 
        
       
     h(αx+(1−α)y)≤αh(x)+(1−α)h(y)
 即任意两点的连线都在函数的上方,下图就是一个标准的凸函数。
 
 凸函数f拥有以下几个重要性质
 1、一阶特性
 
      
       
        
        
          f 
         
        
          ( 
         
        
          y 
         
        
          ) 
         
        
          ≥ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          + 
         
        
          ∇ 
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          ( 
         
        
          y 
         
        
          − 
         
        
          x 
         
        
          ) 
         
        
       
         f(y) \ge f(x) + \nabla f(x)(y - x) 
        
       
     f(y)≥f(x)+∇f(x)(y−x)
 2、二阶特性
  
      
       
        
         
         
           ∇ 
          
         
           2 
          
         
        
          f 
         
        
          ( 
         
        
          x 
         
        
          ) 
         
        
          ≻ 
         
        
          0 
         
        
       
         {\nabla ^2}f(x) \succ 0 
        
       
     ∇2f(x)≻0
 这里的 
     
      
       
       
         f 
        
       
         ( 
        
       
         x 
        
       
         ) 
        
       
         ≻ 
        
       
         0 
        
       
      
        f(x) \succ 0 
       
      
    f(x)≻0表示的是矩阵是半正定的
 3、Jensen不等式
f ( E ( x ) ) ≤ E ( f ( x ) ) f(E(x)){\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} \le {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} E(f(x)) f(E(x))≤E(f(x))
向量范数
这里补充一个非常重要的概念,很多运算都是基于其:向量范数
 1、0范式: 
     
      
       
        
         
         
           ∥ 
          
         
           x 
          
         
           ∥ 
          
         
        
          0 
         
        
       
      
        {\left\| x \right\|_0} 
       
      
    ∥x∥0表示向量或集合中非零元素的个数。
 2、1范式: 
     
      
       
        
         
         
           ∥ 
          
         
           x 
          
         
           ∥ 
          
         
        
          1 
         
        
       
      
        {\left\| x \right\|_1} 
       
      
    ∥x∥1表示向量或集合中所有元素绝对值之和。
 3、2范式: 
     
      
       
        
         
         
           ∥ 
          
         
           x 
          
         
           ∥ 
          
         
        
          2 
         
        
       
      
        {\left\| x \right\|_2} 
       
      
    ∥x∥2表示向量或集合中所有元素平方和的平方根。
凸优化一般形式

 当f(x),g(x)均为凸函数,而h(x)为仿射函数时,该优化问题是一个凸优化问题。凸优化也可以解释为目标函数 f(x) 为凸函数而起约束围成的可行域为一个凸集。
常见的凸优化问题有:线性规划(linear programs)、二次规划(quadratic programs)、半正定规划(semidefinite programs)。接下来详细介绍每一种凸优化问题的形式。
- 线性规划(c为向量,D、A为矩阵)
min  x c T x s . t . D x ≤ d A x = b {\min _x}{\kern 1pt} {\kern 1pt} {c^T}x\\ s.{\kern 1pt} {\kern 1pt} t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Dx \le d\\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Ax = b xmincTxs.t.Dx≤dAx=b - 二次规划(要求Q为半正定矩阵)
min  x c T x + 1 2 x T Q x s . t . D x ≤ d A x = b {\min _x}{\kern 1pt} {\kern 1pt} {c^T}x + \frac{1}{2}{x^T}Qx\\ s.{\kern 1pt} {\kern 1pt} t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Dx \le d\\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} Ax = b xmincTx+21xTQxs.t.Dx≤dAx=b - 半正定规划(X一般表示矩阵)
 
min  C X s . t . A i X ≤ b i , i = 1 , . . . . . m X ≻ 0 \begin{array}{l} {\min _{{\kern 1pt} {\kern 1pt} {\kern 1pt} }}CX\\ s.{\kern 1pt} {\kern 1pt} t.{\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {A_i}X \le {b_i},i = 1,.....m\\ {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} {\kern 1pt} X \succ 0 \end{array} minCXs.t.AiX≤bi,i=1,.....mX≻0
下一节讲解如何具体进行凸优化方法分析问题。

















