凸优化的问题是经常碰到的,常见的KKT求解、包括最小二乘法的一种解释等等。
其实凸优化的概念并不复杂,牵扯到凸集合、上镜面、凸函数等概念。下面为网络中比较好的一种解释,收藏。
1、前言
凸优化,是数学最优化的一个子领域,研究定义于凸集中的凸函数最小化的问题。虽然条件苛刻,但应用广泛,具有重要价值,主要体现在:
凸优化本身具有很好的性质
一来,凸问题的局部最优解就是全局最优解。二来,凸优化理论中的Lagrange对偶,为凸优化算法的最优性与有效性提供了保证。近些年来关于凸问题的研究非常透彻,以至于只要把某一问题抽象为凸问题,就可以近似认为这个问题已经解决了。
凸优化具有很强扩展性
对于非凸问题,通过一定的手段,要么可以等价地化归为凸问题,要么可以用凸问题去近似、逼近得到边界。例如,几何规划、整数规划,虽然本身是非凸的,但是可以借助凸优化手段去解,这就极大地扩张了凸优化的应用范围。
以深度学习来说,其中关键的反向传播(Back Propagation)算法,本质就是凸优化算法中的梯度下降法,即使问题极度非凸,梯度下降还是有很好的表现,当然深度学习的机制还有待研究。
凸优化的应用十分广泛
如线性回归、范数逼近、插值拟合、参数估计,以及许多的几何问题等。
针对其他非凸问题的研究还不充分
凸优化之重要,从另一个角度说,就是我们没有找到很好的非凸优化的算法,这一部分还有许多学者都在努力。
虽然说凸优化的研究已经比较成熟,但由于还没有行业公认的通行解决方法,所以Boyd也说过“we cannot claim that solving general convex optimization problem is a technology, like solving least-squares or linear programming problems……it is fair to say that interior-point methods are approaching a technology”,即目前已有的凸优化方法还不能称之为技术。但还是说那句话,基本上,如果你把一个现实问题建成凸优化问题模型,你就可以认为这个问题已经被解决了。
多说几句,对于非凸优化中,凸优化同样起到很重要的作用:
解决一个非凸优化问题时,可以先试图建立一个简化的多凸优化模型,解出以后作为非凸问题的一个起始点
很多非凸优化问题的启发式算法的基础都是基于凸优化
可以先建立非凸优化的松弛问题,使用凸优化算法求解,然后作为非凸优化问题的上限或下限
那么,下面将分几章花些篇幅好好讲解下凸优化的主要知识点和常用结论。
2、凸集
2.1 定义
A set CC is convex, if θx+(1−θ)y∈Cθx+(1−θ)y∈C, for any x,y∈Cx,y∈C and θ∈Rθ∈R with 0≤θ≤10≤θ≤1.
简言之,凸集即过集合C内任意两点的线段均在集合C内。
2.2 常用凸集
RnRn
The non-negative orthant: Rn+R+n
Norm ball: {x:∥x∥≤1}{x:‖x‖≤1}
Affine subspace: {x∈Rn:Ax=b,A∈Rn×n,b∈Rn×1}{x∈Rn:Ax=b,A∈Rn×n,b∈Rn×1}
Polyhedra: {x∈Rn:Ax≺=b}{x∈Rn:Ax≺=b}
Intersections of convex sets (Note