[机器学习] 凸优化的总结

在机器学习中,很多情况下我们想要优化一个函数。举个例子:给定一个函数 f R n > R ,我们要找到一个 x R n 使得 f ( x ) 取得最大值/最小值。

通常来说,找到一个全局最优解是困难的。但是,对于凸优化问题,局部最优解便是全局最优解。

凸集

在进行凸优化之前,首先我们要知道什么是凸集。

定义:如果集合C是一个凸集,那么对于 x , y C θ R ( θ θ 1 ) ,总有

θ x + ( 1 θ ) y C

几何含义:如果我们对于C中任意两个元素进行连接形成一条直线,那么直线上的任意一个点都在C中,我们称之为凸集。

这里写图片描述

例如上图,左侧是凸集,右侧是非凸集。

凸函数

定义:对于一个函数 f : R n > R ,它的定义域是一个凸集 D ( f ) ,且对于 x , y D ( f ) 0 θ 1 , 有

f ( θ x + ( 1 θ ) y ) θ f ( x ) + ( 1 θ ) f ( y )

几何含义:我们在凸函数的图上任取两个点连成一条直线,在这条直线的范围内,凹函数图上的值小于这个直线上的值。

这里写图片描述

注意:同济高等数学上凸函数,凹函数的定义和国外凹凸函数的定义是相反的。

凸函数的一阶充要条件:

f ( y ) f ( x ) + x f ( x ) T ( y x )

其中要求 f 可微

凸函数的二阶充要条件:

x 2 f ( x ) 0

其中要求 f 的二阶可微。

凸优化问题

我们已经知道啦什么是凸函数、凸集,现在可以考虑凸优化问题。通常一个凸优化问题的形式是:

m i n i m i z e f ( x ) s t . x C

st为subject_to缩写。其中 f 是一个凸函数,C是一个凸集,x是需要优化的变量。然而,上面的式子表达不够清楚,我们通常写成下面的:

m i n i m i z e f ( x ) s t . g i ( x ) 0 , i = 1 , 2 , . . . , m h i ( x ) = 0 , i = 1 , 2 , . . . , p

其中 f 是一个凸函数, g i 是凸函数, h i 是仿射函数,x是需要优化的变量。

对于凸优化问题来说,局部最优解就是全局最优解。

常见的凸优化问题

  1. 线性规划(Linear Programming)
    如果目标函数 f 和约束 g 都是仿射函数,那这种凸优化问题被称为线性规划问题。
    m i n i m i z e c T x + d s u b j e c t   t o G x h A x = b

    其中 x R n 是需要优化的变量, c R n , d R , G R m n , h R m , A R p n , b R p
  2. 二次规划(QP)
    如果目标函数 f 是凸二次函数,约束g是不等式的形式,那么这种凸优化问题被称为二次规划问题。

    m i n i m i z e 1 2 x T P x + c T x + d s u b j e c t   t o G x h A x = b

    其中 x R n 是需要优化的变量, c R n , d R , G R m n , h R m , A R p n , b R p , p S + n

  3. 二次约束的二次规划(QCQP)
    如果目标函数 f g 都是凸二次函数,那么这种凸优化问题被称为二次约束的二次规划问题。

    m i n i m i z e 1 2 x T P x + c T x + d s u b j e c t   t o 1 2 x T Q i x + r i T x + s i 0 i = 1 , 2 , . . . m A x = b

    其中 x R n 是需要优化的变量, c R n , d R , G R m n , A R p n , b R p , p S + n , Q S i n

参考资料

  1. http://www.cnblogs.com/fuleying/p/4481334.html
  2. http://cs229.stanford.edu/section/cs229-cvxopt.pdf

猜你喜欢

转载自blog.csdn.net/siyue0211/article/details/80592788