本文结构:
- 凸优化有什么用?
- 什么是凸优化?
凸优化有什么用?
鉴于本文中公式比较多,先把凸优化的意义写出来吧,就会对它更有兴趣。
我们知道在机器学习中,要做的核心工作之一就是根据实际问题定义一个目标函数,然后找到它的最优解。
不过求解这种优化的问题其实是很难的,但是有一类问题叫做凸优化问题,我们就可以比较有效的找到全局最优解。
例如,SVM 本身就是把一个分类问题抽象为凸优化问题,利用凸优化的各种工具(如Lagrange对偶)进行求解和解释。深度学习中关键的算法反向传播(Back Propagation),本质也是凸优化算法中的梯度下降算法。
凸优化的价值也在于思维转变,当我们在现实生活中遇到计算量接近无穷大的问题时,我们要想办法将模型转换成“凸优化问题”,因为凸优化已经相对嚼得比较烂,所以只要问题转化成凸优化,我们就可以分布迭代去运算。
当然现实中绝大部分优化问题并不是凸优化问题,但是凸优化非常重要, 因为:
- 还是有相当一部分问题是或等价于凸优化问题,例如下面会举例说明 SVM,最小二乘等。
- 大部分凸优化问题解起来比较快。
- 很多非凸优化或NP-Hard的问题可以转化(并非是等价的)为P的凸优化问题。并给出问题的界或近似。例如用对偶(Duality),松弛(Relaxation)等方法将一个优化问题转化为凸优化。
什么是凸优化?
关于凸优化,有几个基础概念:凸集,凸函数,凸优化问题,局部最优和全局最优。以及一个很重要的性质,就是所有局部最优点都是全局最优的
1. 凸集
意思是对这个集合的任何两个元素,我们如果画一条线,那么这线上的所有元素仍然属于这个集合:
下面这几个例子都是凸集:
Rn,因为对任意 x, y ∈ Rn, θx + (1 −