第十二次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇主要是为了下面要讲的SVM和SVR做理论储备,这部分涉及到的数学知识稍难理解,文章内容是结合网上的解释,以自己的理解写出来的。本文脉络清晰,非常适合读者为学习支持向量机打下一定基础。
首先回顾一下梯度(Gradient)的相关知识,这部分是整篇文章的基础,从不同的角度介绍了不同空间下的梯度定义,然后对拉格朗日乘子法(Lagrange Multipliers)进行介绍和原理证明,之后介绍一些最优化中的凸优化问题,最后对对偶问题进行推导和证明。
首先介绍一下几个定义:
导数,在自变量变化趋于无穷小的时候,函数值的变化与自变量变化的比值代表了导数,几何中的意义为该点的切线。物理中的意义为该时刻的(瞬时)变化率 。
偏导数,沿着某一个自变量方向的导数。
方向导数,是空间中一个点沿各个(自变量)方向的导数。
梯度的本意是一个向量(矢量),表示某一函数在空间某一点处的方向导数沿着该方向将会取得最大值,即函数在该点处沿着该方向(该点梯度的方向)变化最快,变化率最大(为该点梯度的模)。具体的介绍可见如何直观形象的理解方向导数与梯度以及它们之间的关系?(知乎),梯度的计算方法可见梯度(百度百科),下面分别对二维和三维情况进行讨论:
(1) 曲线(二维)上某点的切向量、法向量和梯度之间的关系
1) 假设二维空间上存在一条曲线 l l l,当采用普通形式进行表示时,即 y = f ( x ) y=f\left(x\right) y=f(x)或者 F ( x , y ) F\left(x,y\right) F(x,y),那么曲线上某点 ( x , y ) \left(x,y\right) (x,y)的
a.切向量为 [ d x d x , d y d x ] T [\frac{dx}{dx},\frac{dy}{dx}]^T [dxdx,dxdy]T或 [ d x d x , d f ( x ) d x ] T [\frac{dx}{dx},\frac{df\left(x\right)}{dx}]^T [dxdx,dxdf(x)]T
b.法向量为 [ ∂ F ( x , y ) ∂ x , ∂ F ( x , y ) ∂ y ] T [\frac{\partial{F\left(x,y\right)}}{\partial{x}},\frac{\partial{F\left(x,y\right)}}{\partial{y}}]^T [∂x∂F(x,y),∂y∂F(x,y)]T
c.梯度同样为 [ ∂ F ( x , y ) ∂ x , ∂ F ( x , y ) ∂ y ] T [\frac{\partial{F\left(x,y\right)}}{\partial{x}},\frac{\partial{F\left(x,y\right)}}{\partial{y}}]^T [∂x∂F(x,y),∂y∂F(x,y)]T
2) 假设二维空间XOY上存在一条曲线 l l l,当采用参数形式进行表示时,即 f ( n ) = { n 2 , if n is even 3 n + 1 , if n is odd f(n)=\begin{cases}\frac{n}{2},&\text{if $n$ is even}\\[2ex]3n+1,&\text{if $n$ is odd}\\[2ex]\end{cases} f(n)=⎩⎪⎨⎪⎧2n,3n+1,if n is evenif n is odd或者转化为不带参数 t t t的 F ( x , y ) F\left(x,y\right) F(x,y),那么曲线上某点 ( x , y ) \left(x,y\right) (x,y)的
a.切向量为 [ d x ( t ) d x ( t ) , d y ( t ) d t ⋅ 1 d x ( t ) d t ] T [\frac{dx\left(t\right)}{dx\left(t\right)},\frac{dy\left(t\right)}{dt}\cdot\frac{1}{\frac{dx\left(t\right)}{dt}}]^T [dx(t)dx(t),dtdy(t)⋅dtdx(t)1]T
b.法向量为 [ ∂ F ( x , y ) ∂ x , ∂ F ( x , y ) ∂ y ] T [\frac{\partial{F\left(x,y\right)}}{\partial{x}},\frac{\partial{F\left(x,y\right)}}{\partial{y}}]^T [∂x∂F(x,y),∂y∂F(x,y)]T
c.梯度同样为 [ ∂ F ( x , y ) ∂ x , ∂ F ( x , y ) ∂ y ] T [\frac{\partial{F\left(x,y\right)}}{\partial{x}},\frac{\partial{F\left(x,y\right)}}{\partial{y}}]^T [∂x∂F(x,y),∂y∂F(x,y)]T
以曲线 y = sin x y=\sin{x} y=sinx上 ( 0 , 0 ) \left(0,0\right) (0,0)处为例,从下图中可以看出,原函数 y = sin x y=\sin{x} y=sinx,切向量 y = x y=x y=x,法向量(梯度) y = − x y=-x y=−x三者之间的关系。
从上面的讨论中我们可以看出在二维情况下,某点的法向量与梯度是相同的,均与该点的切向量垂直。
(2) 曲面(三维)上某点的切平面、法向量和梯度之间的关系
假设三维空间中存在一个曲面 z = f ( x , y ) z=f\left(x,y\right) z=f(x,y),梯度的意义是“沿着哪一个方向,值上升的最快 z z z”,这时对于梯度的讨论要依赖于二维空间XOY中的等高线。以三维抛物面 z = x 2 4 + y 2 4 z=\frac{x^2}{4}+\frac{y^2}{4} z=4x2+4y2为例,如下图所示
这时要讨论梯度,首先要将三维曲面映射为二维空间XOY上的等高线图,如下图(等高线和梯度)所示
从这张图中我们可以看出,梯度的方向是由低等高线指向高等高线的。对于这个例子的讨论,适用于所有三维情况下的梯度分析。
1) 梯度
通过上面对梯度的讨论,可知三维曲面 z = ( x , y ) z=\left(x,y\right) z=(x,y)的梯度可以表示为 z z z对参数 x x x、 y y y的偏导数,即 [ ∂ z ∂ x , ∂ z ∂ y ] T [\frac{\partial{z}}{\partial{x}},\frac{\partial{z}}{\partial{y}}]^T [∂x∂z,∂y∂z]T或 [ ∂ f ( x , y ) ∂ x , ∂ f ( x , y ) ∂ y ] T [\frac{\partial{f\left(x,y\right)}}{\partial{x}},\frac{\partial{f\left(x,y\right)}}{\partial{y}}]^T [∂x∂f(x,y),∂y∂f(x,y)]T;
2) 法向量
这里要尤其注意与二维情况的不同,要求三维曲面 z = f ( x , y ) z=f\left(x,y\right) z=f(x,y)上某点的法向量,首先原三维曲面的方程可以转化为 F ( x , y , z ) = 0 F\left(x,y,z\right)=0 F(x,y,z)=0,然后令 u = F ( x , y , z ) u=F\left(x,y,z\right) u=F(x,y,z),最后法向量可以表示为 u u u对参数 x x x、 y y y、 z z z的偏导数,即 [ ∂ u ∂ x , ∂ u ∂ y , ∂ u ∂ z ] T [\frac{\partial{u}}{\partial{x}},\frac{\partial{u}}{\partial{y}},\frac{\partial{u}}{\partial{z}}]^T [∂x∂u,∂y∂u,∂z∂u]T或 [ ∂ F ( x , y , z ) ∂ x , ∂ F ( x , y , z ) ∂ y , ∂ F ( x , y , z ) ∂ z ] T [\frac{\partial{F\left(x,y,z\right)}}{\partial{x}},\frac{\partial{F\left(x,y,z\right)}}{\partial{y}},\frac{\partial{F\left(x,y,z\right)}}{\partial{z}}]^T [∂x∂F(x,y,z),∂y∂F(x,y,z),∂z∂F(x,y,z)]T,这里法向量与梯度是完全不相同的。
3) 切平面
三维空间 z = f ( x , y ) z=f\left(x,y\right) z=f(x,y)上某点的切平面是由该点指向各个方向的切向量构成的,与该点的法向量垂直,计算方法见切平面方程怎么求。这里就引出了梯度的第二个定义,即切平面上使上升得最快的方向向量到二维空间XOY的投影,如下图所示
测标签值,则指数损失函数可以表示为,
拉格朗日乘子法是一种寻找多元函数在一组约束下的极值的方法,通过引入拉格朗日乘子,可以将 d d d个变量的多元函数和 k k k个约束条件的最优化问题转化为具有 d + k d+k d+k个变量的无约束优化问题来进行求解。下面分别对不同情况进行讨论:
(1) 约束条件为等式约束
假设优化问题的优化变量 x = [ x , y ] \mathbf{x}=[x,y] x=[x,y],目标优化函数为 z = f ( x ) z=f\left(\mathbf{x}\right) z=f(x),等式约束为 h ( x ) = 0 h\left(\mathbf{x}\right)=0 h(x)=0, d = 3 d=3 d=3, k = 1 k=1 k=1,例如
从几何角度上看,这个问题的目的是,求出 h ( x , y ) = 0 h\left(x,y\right)=0 h(x,y)=0确定的曲线上的某一点 x ∗ \mathbf{x}^* x∗,使得 z = f ( x ) z=f\left(\mathbf{x}\right) z=f(x)最小。
以 f ( x , y ) = x 2 + y 2 f\left(x,y\right)=x^2+y^2 f(x,y)=x2+y2, h ( x , y ) = y − x 2 − 2 = 0 h\left(x,y\right)=y-x^2-2=0 h(x,y)=y−x2−2=0为例,通过下图可以很明显的看出目标函数、约束曲线和最优点这三者之间的关系,图中黑色箭头为约束曲线在最优点上的梯度方向,蓝色箭头为目标函数在最优点上的梯度方向,这两个梯度是相互平行的。
那么下面两条结论成立:
① 由二维空间下梯度与法向量的关系可知,曲线 h ( x , y ) = 0 h\left(x,y\right)=0 h(x,y)=0上每点的梯度均为该点的法向量,即正交于该约束曲线;
② 由三维空间下梯度的定义可知,目标函数在最优点 x ∗ \mathbf{x}^* x∗上的梯度与约束曲线 h ( x , y ) = 0 h\left(x,y\right)=0 h(x,y)=0正交,如果不满足正交条件,那么肯定存在半径( z \sqrt{z} z)更小的圆(等高线)可以与约束曲线正交;
由此可知,在最优点 x ∗ \mathbf{x}^* x∗,梯度 ▽ h ( x ∗ ) \triangledown{h\left(\mathbf{x}^*\right)} ▽h(x∗)和 ▽ f ( x ∗ ) \triangledown{f\left(\mathbf{x}^*\right)} ▽f(x∗)的方向相同或相反,即存在 λ ≠ 0 \lambda\neq0 λ̸=0使得
其中, λ \lambda λ被称为拉格朗日乘子,定义拉格朗日函数
将上式对 x \mathbf{x} x求偏导 ∂ L ( x , λ ) ∂ x \frac{\partial{L\left(\mathbf{x},\lambda\right)}}{\partial{\mathbf{x}}} ∂x∂L(x,λ)并置零即得式(1),将上式对 λ \lambda λ求偏导 ∂ L ( x , λ ) ∂ λ \frac{\partial{L\left(\mathbf{x},\lambda\right)}}{\partial{\lambda}} ∂λ∂L(x,λ)并置零即得等式约束 h ( x ) = 0 h\left(\mathbf{x}\right)=0 h(x)=0,因此,原等式约束优化问题可以转化为对拉格朗日函数的无约束优化问题。
推论:
上述讨论可以进行如下推广,假设优化问题的目标优化函数为 f ( x ) f\left(\mathbf{x}\right) f(x),等式约束为 h i ( x ) = 0 h_i\left(\mathbf{x}\right)=0 hi(x)=0,例如
在这种情况下,拉格朗日函数可以定义为
(2) 约束条件为不等式约束
假设优化问题的优化变量 x = [ x , y ] \mathbf{x}=[x,y] x=[x,y],目标优化函数为 z = f ( x ) z=f\left(\mathbf{x}\right) z=f(x),不等式约束为 g ( x ) ⩽ 0 g\left(x\right)\leqslant0 g(x)⩽0, d = 3 d=3 d=3, k = 1 k=1 k=1,例如
从几何角度上看,这个问题的目的是,求出由 g ( x ) ⩽ 0 g\left(x\right)\leqslant0 g(x)⩽0这条曲线所围成的曲面上的某一点 x ∗ \mathbf{x}^* x∗,使得 z = f ( x ) z=f\left(\mathbf{x}\right) z=f(x)最小。
这个问题可以看做是,在 g ( x ) < 0 g\left(x\right)<0 g(x)<0和 g ( x ) = 0 g\left(x\right)=0 g(x)=0这两种情况下分别求得各自的最优点,再进行比较,其中,第一种情况就是等式约束下的优化问题,这里的讨论与上一部分相同,而当满足第二种情况时,不等式约束 g ( x ) ⩽ 0 g\left(x\right)\leqslant0 g(x)⩽0不起作用,最优点 x ∗ \mathbf{x}^* x∗可直接通过对目标函数求梯度并置零得到(由 z = x 2 4 + y 2 4 z=\frac{x^2}{4}+\frac{y^2}{4} z=4x2+4y2的梯度示意图可知,目标函数 z = f ( x ) z=f\left(\mathbf{x}\right) z=f(x)上梯度为零的点就是最低点即最优点 x ∗ \mathbf{x}^* x∗,假设不考虑局部最低点的情况),这等价于将拉格朗日函数中的参数 λ \lambda λ置零,求其梯度并置零。综合以上两种情况,可以得到以下结论
上式被称为KKT条件,即在满足KKT条件的情况下,可以将不等式约束的优化问题转化为拉格朗日函数的无约束优化问题,并定义拉格朗日函数为
推论:
上述讨论可以进行如下推广,假设优化问题的目标优化函数为 f ( x ) f\left(\mathbf{x}\right) f(x),不等式约束为 g i ( x ) g_i\left(x\right) gi(x),例如
在这种情况下,拉格朗日函数可以定义为
可以证明,不等式约束下的拉格朗日乘子法要满足KKT条件,即
(3) 包含以上两种情况
假设优化问题的目标优化函数为 z = f ( x ) z=f\left(\mathbf{x}\right) z=f(x),等式约束为 h i ( x ) = 0 h_i\left(x\right)=0 hi(x)=0,不等式约束为 g i ( x ) ⩽ 0 g_i\left(x\right)\leqslant0 gi(x)⩽0,例如
在这种情况下,拉格朗日函数可以定义为
可以证明,这种情况下的拉格朗日乘子法要满足KKT条件,即
在凸几何中,凸集(convex set)是在凸组合下闭合的仿射空间的子集。更具体地说,在欧氏空间中,凸集是对于集合内的每一对点,连接该对点的直线段上的每个点也在该集合内。例如,立方体是凸集,但是任何中空的或具有凹痕的例如月牙形都不是凸集。特别的凸集是实数R上(或复数C上)的向量空间中,如果集合S中任两点的连线上的点都在S内,则称集合S为凸集。以下图为例
首先要明确一点,中国大陆数学界某些机构关于函数凹凸性定义和国外的定义是相反的,Convex Function在某些中国大陆的数学书中指凹函数,Concave Function指凸函数,但在这里使用国外的定义。
假设向量空间 X X X是是向量空间中的一个凸集(见上),且存在从该向量空间到实数空间的映射 f : X → R f:X\rightarrow{R} f:X→R,那么,凸函数(Convex Function)的定义为
严格凸函数(Strictly Convex Function)的定义为
有关凸函数的其他性质和重要不等式见Convex function(维基百科)。
“仿射变换”就是:“线性变换”+“平移”。见如何通俗地讲解「仿射变换」这个概念?(知乎)中“马同学”的解释。
从n维实空间 R n \mathbb{R}^n Rn到m维实空间 R m \mathbb{R}^m Rm的映射 f : x ↦ A x + b f:\mathbf{x}\mapsto{\mathbf{Ax}+\mathbf{b}} f:x↦Ax+b,称为仿射变换(Affine Transform)或仿射映射(Affine Map),其中 x \mathbf{x} x是一个n维向量, A \mathbf{A} A是一个mxn矩阵, b \mathbf{b} b是一个m维向量。当 m = 1 m=1 m=1时,称上述仿射变换为仿射函数(Affine Function)。通俗地讲,仿射函数就是最高次数为1的多项式函数,而常数项为零的仿射函数称为线性函数。
凸优化问题的标准形式满足以下三个条件:
1) 目标函数 f ( x ) f\left(\mathbf{x}\right) f(x)为凸函数,其中 x \mathbf{x} x为优化变量;
2) 不等式约束 g i ( x ) ⩽ 0 g_i\left(\mathbf{x}\right)\leqslant0 gi(x)⩽0中,函数 g i ( x ) g_i\left(\mathbf{x}\right) gi(x)为凸函数;
3) 等式约束 h i ( x ) = 0 h_i\left(\mathbf{x}\right)=0 hi(x)=0中,函数 h i ( x ) h_i\left(\mathbf{x}\right) hi(x)为仿射函数。
需要注意的是,对于凸优化问题,局部最优解就是全局最优解。具体解释见Convex optimization(维基百科)。
一个优化问题可以从两个角度考虑,即“主问题”(Primal Problem)和“对偶问题”(Dual Problem)。对主问题
基于其拉格朗日函数
其拉格朗日“对偶函数”(Dual Function) Γ : R m × R n ↦ R \Gamma:\mathbb{R}^m\times{\mathbb{R}^n}\mapsto{\mathbb{R}} Γ:Rm×Rn↦R定义为
若 x ~ ∈ D \tilde{x}\in{D} x~∈D为主问题可行域中(满足约束)的点,则对任意 λ ≠ 0 \lambda\neq0 λ̸=0和 μ ⩾ 0 \mu\geqslant0 μ⩾0都有
进而有
若主问题的最优值为 p ∗ p^* p∗,则对任意 λ ≠ 0 \lambda\neq0 λ̸=0和 μ ⩾ 0 \mu\geqslant0 μ⩾0都有
即对偶函数给出了主问题最优值的下界,这个下界取决于参数 λ ≠ 0 \lambda\neq0 λ̸=0和 μ ⩾ 0 \mu\geqslant0 μ⩾0的值。那么,主问题的对偶问题可以表示为
且无论主问题的凸性如何,其对偶问题始终是凸优化问题。
当主问题不满足凸优化问题的条件(见上)时,对偶问题的最优值 d ∗ d^* d∗满足 d ∗ ⩽ p ∗ d^*\leqslant{p^*} d∗⩽p∗,这称为“弱对偶性”(Weak Duality)成立;当主问题满足凸优化问题的条件(见上)时,对偶问题的最优值 d ∗ d^* d∗满足 d ∗ = p ∗ d^*={p^*} d∗=p∗,这称为“强对偶性”(Strong Duality)成立,当强对偶性成立时,对偶问题的最优解就是主问题的最优解。