机器学习概念篇:一文详解凸函数和凸优化,干货满满


在机器学习各类优化问题中,凸集、凸函数和凸优化等概念常常出现,其是各类证实的前提条件,所以认识其性质对于优化问题的理解尤其重要,本文便就凸集、凸函数和凸优化等各类性质进行阐述,文末分享一波凸优化的学习资料和视频!



html

1、几何体的向量表示

在介绍凸集等概念以前,首先介绍一下空间几何体的向量表示,下面在定义凸集概念时便用到了线段的线段表示。先经过一个例子来认识一下如何使用向量表示线段web

已知二维平面上两定点A(5, 1)、B(2, 3),给出线段AB的方程表示以下:算法

{ x 1 = θ 5 + ( 1 θ ) 2 x 2 = θ 1 + ( 1 θ ) 3           θ [ 0 ,   1 ] \left\{ \begin{matrix} x_{1} = \theta*5 + \left( 1 - \theta \right)*2 \\ x_{2} = \theta*1 + \left( 1 - \theta \right)*3 \\ \end{matrix} \right.\ \ \ \ \ \ \ \ \ \theta \in \lbrack 0,\ 1\rbrack app

若是将点A当作向量a,点B当作向量b,则线段AB的向量表示为:curl

x = θ a + ( 1 θ ) b         θ [ 0 ,   1 ] \overrightarrow{x} = \theta\overrightarrow{a} + \left( 1 - \theta \right)*\overrightarrow{b}\ \ \ \ \ \ \ \theta \in \lbrack 0,\ 1\rbrack 机器学习

而直线的向量表示是:ide

x = θ a + ( 1 θ ) b         θ R \overrightarrow{x} = \theta\overrightarrow{a} + \left( 1 - \theta \right)*\overrightarrow{b}\ \ \ \ \ \ \ \theta \in R svg

由此衍生推广到高维,可得如下几何体的向量表示,三角形的向量表示:函数

x = θ 1 a 1 + θ 2 a 2 + θ 3 a 3        θ i [ 0 ,   1 ]  and  θ i = 1 \overrightarrow{x} = \theta_{1}{\overrightarrow{a}}_{1} + \theta_{2}{\overrightarrow{a}}_{2} + \theta_{3}{\overrightarrow{a}}_{3}\text{\ \ \ \ \ \ }\theta_{i} \in \left\lbrack 0,\ 1 \right\rbrack\text{\ and\ }\sum_{}^{}\theta_{i} = 1 学习

三维平面的向量表示:

x = θ 1 a 1 + θ 2 a 2 + θ 3 a 3        θ i R  and  θ i = 1 \overrightarrow{x} = \theta_{1}{\overrightarrow{a}}_{1} + \theta_{2}{\overrightarrow{a}}_{2} + \theta_{3}{\overrightarrow{a}}_{3}\text{\ \ \ \ \ \ }\theta_{i} \in R\text{\ and\ }\sum_{}^{}\theta_{i} = 1

超几何体的向量表示:

x = θ 1 a 1 + θ 2 a 2 + + θ k a k        θ i [ 0 ,   1 ]  and  θ i = 1 \overrightarrow{x} = \theta_{1}{\overrightarrow{a}}_{1} + \theta_{2}{\overrightarrow{a}}_{2} + \ldots + \theta_{k}{\overrightarrow{a}}_{k}\text{\ \ \ \ \ \ }\theta_{i} \in \lbrack 0,\ 1\rbrack\text{\ and\ }\sum_{}^{}\theta_{i} = 1

超平面的向量表示:

x = θ 1 a 1 + θ 2 a 2 + + θ k a k        θ i R  and  θ i = 1 \overrightarrow{x} = \theta_{1}{\overrightarrow{a}}_{1} + \theta_{2}{\overrightarrow{a}}_{2} + \ldots + \theta_{k}{\overrightarrow{a}}_{k}\text{\ \ \ \ \ \ }\theta_{i} \in R\text{\ and\ }\sum_{}^{}\theta_{i} = 1




2、凸集凸函数定义


一、凸集

集合C内任意两点间的线段也均在集合C内,则称集合C为凸集,数学定义为:
在这里插入图片描述

上面凸集定义中便用到了线段的向量表示,含义是若是点x1和点x2在集合C内,则线段x1x2上全部点都在集合c内,凸集的交集还是凸集,下面展现几个凸集示例:
在这里插入图片描述
在这里插入图片描述



二、凸函数

凸函数定义为:
f : C   R n > R 1 ,   C . x 1 , x 2 C , : f:C \subseteq \ R^{n} - > R^{1},\ C.x_{1},x_{2} \in C,:

f ( α 1 x 1 + α 2 x 2 ) < =   α 1 f ( x 1 ) +   α 2 f ( x 2 )     α i = 1 , α i > = 0 f\left( \alpha_{1}x_{1} + \alpha_{2}x_{2} \right) < = \ \alpha_{1}f\left( x_{1} \right) + \ \alpha_{2}f\left( x_{2} \right)\text{\ \ \ }\sum_{}^{}\alpha_{i} = 1,\alpha_{i} > = 0

则成 f(x) 为定义在凸集C上的凸函数

严格凸函数定义:设 f ⊆ Rn–> R1,C是凸集,对于x1, x2∈C 都有:

f ( α 1 x 1 + α 2 x 2 ) <   α 1 f ( x 1 ) +   α 2 f ( x 2 )     α i = 1 , α i > 0 f\left( \alpha_{1}x_{1} + \alpha_{2}x_{2} \right) < \ \alpha_{1}f\left( x_{1} \right) + \ \alpha_{2}f\left( x_{2} \right)\text{\ \ \ }\sum_{}^{}\alpha_{i} = 1,\alpha_{i} > 0

则成 f(x) 为定义在凸集C上的严格凸函数

凸函数的等价定义:设f ⊆ Rn–> R1,C是凸集,对于x1, x2, x3∈C且x1<x2<x3,下式成立则 f(x) 为凸函数:

f ( x 2 )   f ( x 1 ) x 2   x 1 &lt; =   f ( x 3 )   f ( x 1 ) x 3   x 1 &lt; =   f ( x 3 )   f ( x 2 ) x 3   x 2 \frac{f\left( x_{2} \right) - \ f\left( x_{1} \right)}{x_{2} - \ x_{1}} &lt; = \ \frac{f\left( x_{3} \right) - \ f\left( x_{1} \right)}{x_{3} - \ x_{1}} &lt; = \ \frac{f\left( x_{3} \right) - \ f\left( x_{2} \right)}{x_{3} - \ x_{2}}



三、凸函数定义几何解释

对于凸函数公式描述:

f ( α 1 x 1 + α 2 x 2 ) &lt; =   α 1 f ( x 1 ) +   α 2 f ( x 2 )     α i = 1 , α i &gt; = 0 f\left( \alpha_{1}x_{1} + \alpha_{2}x_{2} \right) &lt; = \ \alpha_{1}f\left( x_{1} \right) + \ \alpha_{2}f\left( x_{2} \right)\text{\ \ \ }\sum_{}^{}\alpha_{i} = 1,\alpha_{i} &gt; = 0

以下图所示,设A一、A2是凸函数曲线上的两个点,他们对应的横坐标x1<x2,且x∈(x1, x2),则存在 α1, α2>0且 α1+ α2=1,使得x= α1x1+ α2x2,过点x作x轴的垂线交函数于A,交直线A1A2于B点,则上式左端即为A的纵坐标,右端即为B的纵坐标

y A =   f ( α 1 x 1 + α 2 x 2 ) y_{A} = \ f\left( \alpha_{1}x_{1} + \alpha_{2}x_{2} \right)

y B = α 1 f ( x 1 ) +   α 2 f ( x 2 ) y_{B} = \alpha_{1}f\left( x_{1} \right) + \ \alpha_{2}f\left( x_{2} \right)

所以,凸函数的几何含义是:函数任意两点A1和A2之间的部分位于弦A1A2的下方或曲线任一点切线上方,不严谨一个说法:割线始终位于两点间函数曲线的上方
在这里插入图片描述




3、凸函数各类性质及其证实


一、性质1:设 f ⊆ Rn–> R1,C是凸集,若f是凸函数,则对于∀β,证实下面水平集Dβ是凸集
D β = { x f ( x ) &lt; = β ,   x C } D_{\beta} = \{ x|f\left( x \right) &lt; = \beta,\ x \in C\}

证实一个集合是凸集,按照凸集性质即证实凸集中任意两点构成的线段仍然在凸集内,证实见下图:
在这里插入图片描述



二、性质2:凸优化问题的局部极小值是全局极小值

这个性质是凸优化问题一个良好的性质,在机器学习任务中咱们只需将非凸问题转化为凸优化问题,即可直接求出问题的全局极值,下面给出证实:
在这里插入图片描述

咱们观察下面两幅图,形象感觉一下为何凸优化问题的局部最优解是全局最优解
(1) 从下图能够看出当函数不是凸函数时,当对非凸函数f(x)进行最优化时,即可能获得局部最优解,没法得到全局最优解
在这里插入图片描述

(2) 从下图能够看出当目标函数可行域是非凸时,则此时对函数进行优化时也可能错过全局最优解
在这里插入图片描述



三、性质3:设 f ⊆ Rn–> R1,C是凸集,对于x1, x2∈C

(1) f为凸函数的充要条件是:对于∀x1, x2∈C且x1≠x2都有:

f ( x 2 ) &gt; f ( x 1 ) +   f ( x 1 ) T ( x 2 x 1 ) f\left( x_{2} \right) &gt; f\left( x_{1} \right) + \ \nabla{f\left( x_{1} \right)}^{T}(x_{2} - x_{1})

(2) f为严格凸函数的充要条件是:对于∀x1, x2∈C且x1≠x2都有:
f ( x 2 ) &gt; =   f ( x 1 ) +   f ( x 1 ) T ( x 2 x 1 ) f\left( x_{2} \right) &gt; = \ f\left( x_{1} \right) + \ \nabla{f\left( x_{1} \right)}^{T}(x_{2} - x_{1})

证实过程以下:
在这里插入图片描述
在这里插入图片描述

性质3描述的凸函数一阶可微时具备的性质,下面给出该性质的几何解释
在这里插入图片描述

看上图,凸函数f(x),在函数f(x)上取一点(x, f(x))作曲线的切线,切线的斜率为k,能够看出对于凸函数f(x)来讲,切线始终是凸函数f(x)的下界,咱们看点A、B,B是曲线上一点,A点是切线上一点,且A、B的横坐标都为y,则B点的纵坐标始终大于A点的纵坐标,因而即可获得上述性质:

f ( y ) f ( x ) +   f ( x ) T ( y x ) f\left( y \right) \geq f\left( x \right) + \ \nabla{f\left( x \right)}^{T}(y - x)

当y不断逼近x时,则上式等号成立



四、性质4:凸函数其Hessian矩阵半正定

性质4描述的凸函数二阶可微时知足的性质,即凸函数Hessian矩阵半正定,此性质可经过泰勒公式进行,在给出该性质证实以前,Hessian矩阵和泰勒公式定义

Hessian矩阵是一个多元函数的二阶偏导数构成的方阵,一个多元函数Hessian矩阵定义以下:
在这里插入图片描述

泰勒公式是用若干项连加来表示一个函数,这些相加的项由函数在某一点的导数求得,下面给出一个函数f(x)在x=a点的泰勒展开式:
在这里插入图片描述

上述性质凸函数其Hessian矩阵半正定的证实以下:
在这里插入图片描述



五、性质5:若 x ⊆ Rn,y⊆ Rn,Q为半正定对称阵,证实f(x) = XTQX为凸函数

在这里插入图片描述



六、性质6:凸函数f(x),其中Q1+Q2+…+Qn=1,0<= Qi<=1,证实下面不等式:

f ( Q 1 x 1 + Q 2 x 2 + + Q n x n + ) &lt; =   Q 1 f ( x 1 ) + Q 2 f ( x 2 ) + + Q n f ( x n ) f\left( Q_{1}x_{1} + Q_{2}x_{2} + \ldots + Q_{n}x_{n} + \right) &lt; = \ Q_{1}f\left( x_{1} \right) + Q_{2}f\left( x_{2} \right) + \ldots + Q_{n}f(x_{n})

在这里插入图片描述



七、Jessen不等式,f(x)为凸函数,其中E(x)是x的指望,证实:

f ( E ( x ) ) &lt; = E ( f ( x ) ) f\left( E\left( x \right) \right) &lt; = E(f(x))

在这里插入图片描述




4、凸优化定义


一、凸优化问题定义

一个凸优化问题可描述为:

f ( x )       s . t .    x C \operatorname{}{f\left( x \right)}\text{\ \ \ \ \ }s.t.\ \ x \in C

s.t.   g i ( x ) &lt; = 0    h i ( x )   = 0 \text{s.t.\ \ }g_{i}\left( x \right) &lt; = 0\ \ h_{i}\left( x \right)\ = 0

经过如下凸优化性质即可理解何为凸优化问题:

(1) 目的是求解目标函数的最小值;
(2) 目标函数f(x)和不等式约束函数g(x)都是凸函数,定义域是凸集;
(3) 若存在等式约束函数,则等式约束函数h(x)为仿射函数;仿射函数指的是最高次数为1的多项式函数,通常形式为f(x)= Ax + b,A是m*k矩阵,x是一个k向量,b是一个m向量
(4) 凸优化问题有一个良好的性质即:局部最优解即是全局最优解



二、常见凸优化问题

(1) 线性规划LinearProgramming(LP)

若是目标函数和不等式约束函数都是仿射函数,则凸优化问题称为线性规划,数学表示为:

c T x + d \operatorname{}{c^{T}x} + d

s . t .    G x   h     A x = b s.t.\ \ Gx\ \preccurlyeq h\ \ \ Ax = b


(2) 二次规划QuadraticProgramming(QP)

若是目标函数是凸二次函数,而不等式约束还是仿射函数,则凸优化问题称为二次规划,数学表示为:

1 2 x T P x + c T x + d \operatorname{}\frac{1}{2}x^{T}Px + c^{T}x + d

s . t .    G x   = h     A x = b s.t.\ \ Gx\ \prec = h\ \ \ Ax = b


(3) 二次约束的二次规划Quadratically Constrained Quadratic Programming(QCQP)

若是目标函数和不等书约束均为凸二次函数,则凸优化问题称为二次约束的二次规划,数学表示为:

1 2 x T P x + c T x + d \operatorname{}\frac{1}{2}x^{T}Px + c^{T}x + d

s.t.   1 2 x T Q i x + r i T x + s i 0      i = 1 , 2 , , m    A x = b \text{s.t.\ \ }\frac{1}{2}x^{T}Q_{i}x + r_{i}^{T}x + s_{i} \leq 0\ \ \ \ i = 1,2,\ldots,m\ \ Ax = b


(4) 半正定规划Semidefinite Programming(SDP)

半正定规划较前面的复杂,在机器学习中也常常用到,下面给出数学描述:

t r ( C X ) \operatorname{}{tr(CX)}

s.t.  tr ( A i x ) = b i      i = 1 , 2 , , p     X 0 \text{s.t.\ \ tr}\left( A_{i}x \right) = b_{i}\ \ \ \ i = 1,2,\ldots,p\ \ \ X \succcurlyeq 0

其中符号tr(A)表示矩阵A的迹,矩阵A的迹是指A的对角线上各个元素的总和




5、浅谈凸优化问题为什么如此重要


一、凸优化具备良好性质,如局部最优解是全局最优解,且凸优化问题是多项式时间可解问题,如:线性规划问题;

二、不少非凸优化或NP-Hard问题能够转化成凸优化问题,方法:对偶、松弛(扩大可行域,去掉部分约束条件),在SVM算法中,为了对目标函数进行优化,便使用了拉格朗日乘子法、对偶问题、引入松弛因子等


凸优化资料:百度云盘连接,密码:ei8e
在这里插入图片描述