凸优化1:什么是凸优化问题

一些闲话

去年就想看一下优化泛函变分相关的内容,但没有空余的排期,大部分学习时间花在了强化学习方面。

今年,正好近期项目也有需要,凸优化提上了自学日程。

参考书目:
《凸优化》清华大学出版社,Stephen Boyd, Lieven Vandenberghe著,王书宁,许鋆,黄晓霖 译

全书700页,计划用半年的时间完成一刷。

凸优化问题

数学优化:

数学模型

m i n i n i z e   f 0 ( x ) s u b j e c t   t o   f i ( x ) ≤ b i ,   i = 1 , 2 , ⋯   , m \begin{aligned} mininize \ &f_0(x) \\ subject \ to \ &f_i(x)\leq b_i, \ i=1,2,\cdots,m \end{aligned} mininize subject to ​f0​(x)fi​(x)≤bi​, i=1,2,⋯,m​

  • x x x 优化变量
  • f 0 ( x ) f_0(x) f0​(x) 目标函数
  • f i ( x ) f_i(x) fi​(x) 约束函数

线性优化:目标函数和约束函数均为线性函数;
凸优化:目标函数和约束函数均为凸函数;

凸性是较线性更为一般的性质,线性函数是凸函数的一个特例,因此线性规划问题也是凸优化问题。

应用

  • 资源分配、成本控制
  • 数据拟合
  • 最优决策 等

求解

  • 以给定精度求解优化问题中的一个实例;
  • 即便目标函数和约束函数是光滑的,一般形式的优化问题仍然难以求解;
  • 一些特殊的优化问题,存在一些有效地算法
    • 最小二乘问题
    • 线性规划
    • 凸优化

最小二乘问题

m i n i n i z e   f 0 ( x ) = ∥ A x − b ∥ 2 2 \begin{aligned} mininize \ &f_0(x)=\lVert Ax-b\rVert _2^2 \end{aligned} mininize ​f0​(x)=∥Ax−b∥22​​

等效于求解:

A T A x = A T b A^TAx=A^Tb ATAx=ATb

存在解析解:
x = ( A T A ) − 1 A T b x=(A^TA)^{-1}A^Tb x=(ATA)−1ATb

即 b b b左乘 A A A的广义逆。
可以认为,最小二乘问题的求解是一项(成熟的)技术

线性规划

目标函数和约束函数均为线性函数

m i n i n i z e   f 0 ( x ) = c T x s u b j e c t   t o   f i ( x ) = a i T x ≤ b i ,   i = 1 , 2 , ⋯   , m \begin{aligned} mininize \ &f_0(x)=c^Tx \\ subject \ to \ &f_i(x)=a_i^Tx\leq b_i, \ i=1,2,\cdots,m \end{aligned} mininize subject to ​f0​(x)=cTxfi​(x)=aiT​x≤bi​, i=1,2,⋯,m​

不存在解析解,但存在很多有效地求解方法:

  • 单纯形法
  • 内点发

可以说,求解(大部分)线性规划问题,也是一项(成熟的)技术

凸优化

目标函数和约束函数,都是凸函数。

有效的求解方法:内点法。

虽然有点夸张,如果某个实际问题可以表述为凸优化问题,那么事实上已经解决了这个问题

非线性优化

目标函数或者约束函数,是非线性,且不一定为凸函数。

局部优化

  • 可能不能找到全局最优解
  • 对初始值敏感
  • 局部优化方法是一种技巧而不是技术

全局优化

  • 付出的代价是计算效率,只能寄希望遇到特殊问题
  • 适用于:
    • 变量个数少的小规模问题;
    • 对计算时间没有苛刻要求;
    • 全局最优足够有价值
  • 例子:最坏情况分析,寻找最坏情况的参数值;
    • 无法保证系统是可靠的,只是没找到更坏情况的参数取值。

应用

  • 局部优化中利用凸优化进行初始值的选取;
  • 非凸优化中的凸启发算法
上一篇:将 0-1 变量的乘积转化成线性


下一篇:势函数