为什么对偶问题一定是凸优化问题?

大家在学习SVM的对偶问题部分的时候一定会看到一句话:使用对偶问题的一个原因是对偶问题一定是凸优化问题。这句话可能没接触过凸优化人表示一头雾水。凭啥呀?

本文就给大家简单地证明一下。(前面主要是科普,有基础的可以直接跳到最后)

写在前面的注意点

可能有些同学在一些英语课程中会学到这件事。那就是中文和英语对凸 / 凹函数的定义往往是相反的。比如,下面这个函数图像在中国大部分教材(包括同济的那本微积分)中叫做凹函数,英语中却叫convex function(凸函数)。具体是哪边思维比较反人类咱就不争论了,总之,在本博文中统一采取英语的起名法。即下面这个函数视作凸函数。
在这里插入图片描述

什么是凸函数

在这里插入图片描述
凸函数,首先它的几何特征就像是我们看到的上面那张图片一样,函数上方区域像是从平行于x轴的线上凸出来一块。由于其特殊的性质,还衍生出了高中数学竞赛中赫赫有名的琴生不等式,不过这里就不细提了。

凸函数的微分有一些很特别的性质,比如一个一元二阶可微函数在某区间是凸函数的充要条件是它在区间上的二阶导是非负的。不过这篇博文里用不到这些,就不多做介绍了。

什么是仿射

仿射集(Affine set):通过集合C中任意两个不同点的直线仍然在集合C内,则称集合C为仿射集。即 ∀ x 1 , x 2 ∈ C , ∀ θ ∈ R , 则 x = θ ∗ x 1 + ( 1 − θ ) ∗ x 2 ∈ C \forall x_1, x_2 \in C, \forall \theta\in R, 则x=\theta*x_1+(1-\theta)*x_2\in C x1,x2C,θR,x=θx1+(1θ)x2C其实说着很高端,实际上就是线性变换。

举个例子,高中做解析几何的时候,博主喜欢在处理椭圆相切的时候变换坐标系,比如把椭圆 x 2 16 + y 2 4 = 1 \frac{x^2}{16}+\frac{y^2}{4}=1 16x2+4y2=1上的所有点的x坐标缩小一半,这就是一个半径为2的圆,只不过这个变换是对坐标系而言的,也就是说你不能只让椭圆上的点变呀,这不公平。所以整个坐标空间的点的x坐标都缩小了一半,包括之前相切的那条直线。这时候就可以只求和圆相切的直线,然后再把x坐标变回去。非常的爽。

这其实就是一个简单的仿射变换。

由于是线性变换,你可以认为存在一个变换矩阵 [ a 11 a 12 b 1 a 21 a 22 b 2 0 0 1 ] [ x y 1 ] = [ x ′ y ′ 1 ] \left[ \begin{matrix} a_{11} & a_{12} & b_1\\a_{21}&a_{22}&b_2\\0&0&1 \end{matrix} \right] \left[ \begin{matrix} x\\y\\1\end{matrix} \right]=\left[ \begin{matrix}x'\\y'\\1 \end{matrix} \right] a11a210a12a220b1b21xy1=xy1看,这样是不是就一目了然了?所谓的仿射,不过是新的坐标等于原坐标的线性组合。

什么是凸集

凸集(Convex set):连接集合C中任意两个不同点的线段仍然在集合C内,则称集合C为凸集。即 ∀ x 1 , x 2 ∈ C , ∀ θ ∈ [ 0 , 1 ] , 则 x = θ ∗ x 1 + ( 1 − θ ) ∗ x 2 ∈ C \forall x_1, x_2 \in C, \forall \theta\in [0, 1], 则x=\theta*x_1+(1-\theta)*x_2\in C x1,x2C,θ[0,1],x=θx1+(1θ)x2C这个式子和仿射集定义很像,区别在哪呢?在于 θ \theta θ的取值,凸集限制更多。所以说仿射集一定是凸集,凸集是一种特殊的仿射集。

什么是凸优化问题

凸优化问题是这么一个问题: m i n   f ( x ) min f(x) min f(x) s . t .   h i ( x ) ≤ 0   i = 1 , 2 , . . . , m s.t. h_i(x)\leq 0 i = 1,2,...,m s.t. hi(x)0 i=1,2,...,m g j ( x ) = 0   j = 1 , 2 , . . . , p g_j(x)=0 j=1,2,...,p gj(x)=0 j=1,2,...,p 其 中 h i ( x ) 和 f ( x ) 都 是 凸 函 数 , g j ( x ) 是 仿 射 函 数 其中h_i(x)和f(x)都是凸函数,g_j(x)是仿射函数 hi(x)f(x)gj(x)仿

很多人看到这里,可能会一拍脑袋:这不是KKT条件里的式子吗?没错,KKT条件,或者说拉格朗日乘子法本质上就是解决了一个凸优化问题。

为什么要使用凸优化问题

SVM里花了那么多的功夫做对偶变换,只为了最后和你说一句:因为对偶问题一定是凸优化问题。为什么要转换成凸优化问题呢?

因为凸优化有一个很重要的性质:局部最优点必定是全局最优点

关于这一点也很好证。我们假设 ∃ x 0 \exists x_0 x0,它是函数的局部最优点,另 ∃ x 1 ≠ x 0 \exists x_1 \neq x_0 x1=x0,它是函数的全局最优点。我们不妨假设 x 1 > x 0 x_1>x_0 x1>x0,随后 ∀ 0 < δ < x 1 − x 0 , ∃ k = x 0 − x 1 + δ x 0 − x 1 , 0 < k < 1 \forall 0 < \delta <x_1-x_0, \exists k =\frac{x_0-x_1+\delta}{x_0-x_1}, 0<k<1 0<δ<x1x0,k=x0x1x0x1+δ,0<k<1 s . t .   x 0 + δ = k x 0 + ( 1 − k ) x 1 s.t.  x_0+\delta=kx_0+(1-k)x_1 s.t. x0+δ=kx0+(1k)x1此时有 f ( x 0 + δ ) = k f ( x 0 ) + ( 1 − k ) f ( x 1 ) < f ( x 0 ) f(x_0+\delta)=kf(x_0)+(1-k)f(x_1)<f(x_0) f(x0+δ)=kf(x0)+(1k)f(x1)<f(x0)这也就是说, x 0 x_0 x0的领域内任何一个点都比它的函数值大,不符合局部最优的定义。所以说假设不成立。即得到结论:局部最优点必定是全局最优点

为什么对偶问题一定是凸优化问题

回到本文的正题,究竟怎么证明对偶问题一定是凸优化问题呢?

首先提到证明过程的时候就不得不提到这么张图,可能你们在别的博客里也见过。

图片名称

这张图是Boyd大佬在《凸优化》中对该问题的证明原文。(别管那么多了,%%%)

首先我们对原问题 m i n x f ( x ) min_x f(x) minxf(x) s . t .   g i ( x ) ≤ 0   i = 1 , 2 , . . . , m s.t. g_i(x)\leq0 i=1, 2, ..., m s.t. gi(x)0 i=1,2,...,m h j ( x ) = 0   j = 1 , 2 , . . . , p h_j(x)=0 j=1, 2, ..., p hj(x)=0 j=1,2,...,p进行一次拉格朗日乘子法,转换为 m i n x , λ , ν L ( x , λ , ν ) = f ( x ) + ∑ i = 1 m λ i g i ( x ) + ∑ j = 1 p ν j h j ( x ) min_{x, \lambda, \nu}L(x, \lambda, \nu)=f(x)+\sum^m_{i=1}\lambda_ig_i(x)+\sum^p_{j=1}\nu_j h_j(x) minx,λ,νL(x,λ,ν)=f(x)+i=1mλigi(x)+j=1pνjhj(x)再求一次对偶问题 m a x λ , ν m i n x L ( x , λ , ν )   s . t .   λ ≥ 0 max_{\lambda, \nu}min_{x} L(x, \lambda, \nu)  s.t. \lambda \geq 0 maxλ,νminxL(x,λ,ν) s.t. λ0首先约束条件一定是凸函数,因为它是线性的,也就是说其实我们现在只要证明 − m i n x L ( x , λ , ν ) - min_{x} L(x, \lambda, \nu) minxL(x,λ,ν)是一个凸函数即可。

这一步的证明就是我们必须要求一次对偶的原因。(大家可以尝试一下,使用原始问题这一步是证明不出来的)

既然我们已经调整 x x x来极小化 L ( x , λ , ν ) L(x, \lambda, \nu) L(x,λ,ν)了,那么我们极小化 L L L x x x是一个定值了。

(关于这一点,就好比一个二元函数要你求最小值,你分成两步,先求 y y y固定时 x x x变化能取到的最小值函数,最后求 y y y变化时的最小值函数。在这个过程中,第一步完成后得到的函数一定不能再含有变量 x x x,即 x x x被固定了,这样我后面才能只变化 y y y

所以 f ( x ) , g ( x ) , h ( x ) f(x), g(x), h(x) f(x),g(x),h(x)就全部是定值了。那么此时的 − m i n L ( x , λ , ν ) = − k 1 λ − k 2 ν − b -minL(x, \lambda, \nu)=-k_1\lambda-k_2\nu-b minL(x,λ,ν)=k1λk2νb,其中 k 1 = g ( x ) , k 2 = h ( x ) , b = f ( x ) k1=g(x), k2=h(x), b=f(x) k1=g(x),k2=h(x),b=f(x)。再次强调,这里 x x x已经在极小化的过程中确定了,上面跟 x x x有关的全部是一个定值。这就是一个线性变化,或者说仿射变换。然后就用到了我们前面用到的那个重要定理:仿射集一定是凸集。所以说这是一个凸函数。

所以说 − m i n L ( x , λ , ν ) -minL(x, \lambda, \nu) minL(x,λ,ν)一定是凸函数。这也就意味着凸优化问题的最后一个条件被满足了。所以对偶问题一定是凸优化问题。

SVM中的凸优化

SVM中的对偶问题其实就是 L ( w , b , α ) L(w, b, \alpha) L(w,b,α)。换言之 x = ( w , b ) x = (w, b) x=(w,b) λ = α \lambda=\alpha λ=α ν = 0 \nu=0 ν=0

把这个条件带入到上面就可以很简单地证明出来啦。

  • 8
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值