python学智能算法(三十))|SVM-KKT条件的数学理解

【1】引言

前序学习进程中,通过类比力的平衡对KKT条件进行了初步的理解。

今天我们更进一步,常使用数学语言进一步解释KKT条件。

【2】带约束的最小优化问题

首先定义一个即将求解的优化问题:

目标函数:最小化 f ( x ) ( x ∈ R n ) f(x)(x\in R^{n}) f(x)(x∈Rn)

约束条件:

不等式约束: g i ( x ) ≤ 0 ( i = 1 , 2 , , . . . , m ) g_{i}(x)\leq0(i=1,2,,...,m) gi(x)≤0(i=1,2,,...,m),一共m个

等式约束: h j ( x ) = 0 ( j = 1 , 2 , , . . . , p ) h_{j}(x)=0(j=1,2,,...,p) hj(x)=0(j=1,2,,...,p),一共p个

这个时候就仿照之前的拉格朗日函数构造方法,构造出适用的拉格朗日函数:
L ( x , λ , μ ) = f ( x ) + ∑ i = 1 m λ i g i ( x ) + ∑ j = 1 p μ j h j ( x ) L(x,\lambda,\mu)=f(x)+\sum_{i=1}^{m}\lambda_{i}g_{i}(x)+\sum_{j=1}^{p}\mu_{j}h_{j}(x) L(x,λ,μ)=f(x)+i=1∑mλigi(x)+j=1∑pμjhj(x)

其中:
λ i ≥ 0 \lambda_{i}\geq0 λi≥0是不等式约束 g i ≤ 0 g_{i}\leq0 gi≤0对应的拉格朗日乘子, λ i \lambda_{i} λi严格非负;
μ j ∈ R \mu_{j}\in R μj∈R是等式约束 h j ( x ) = 0 h_{j}(x)=0 hj(x)=0对应的拉格朗日乘子, μ j \mu_{j} μj没有符号限制。

【2.1】局部最优解

如果 x ∗ x^{*} x∗是上述问题的局部最优解,且满足约束规范,则存在乘子 λ ∗ = ( λ 1 ∗ , . . . , λ m ∗ ) \lambda^{*}=(\lambda_{1}^{*},...,\lambda_{m}^{*}) λ∗=(λ1∗,...,λm∗)和 μ ∗ = ( μ 1 ∗ , . . . , μ p ∗ ) \mu^{*}=(\mu_{1}^{*},...,\mu_{p}^{*}) μ∗=(μ1∗,...,μp∗),是的以下五个条件同时成立:

【2.1.1】梯度为零条件

拉格朗日函数在 x ∗ x^{*} x∗处满足: ∇ x L ( x ∗ , λ ∗ , μ ∗ ) = 0 \nabla_{x} L(x^{*},\lambda^{*},\mu^{*})=0 ∇xL(x∗,λ∗,μ∗)=0

具体展开来后:
∇ f ( x ∗ ) + ∑ i = 1 m λ i ∗ ∇ g i ( x ∗ ) + ∑ j = 1 p μ j ∗ ∇ h j ( x ∗ ) = 0 \nabla f(x^{*})+\sum_{i=1}^{m}\lambda_{i}^{*}\nabla g_{i}(x^{*})+\sum_{j=1}^{p}\mu_{j}^{*}\nabla h_{j}(x^{*})=0 ∇f(x∗)+i=1∑mλi∗∇gi(x∗)+j=1∑pμj∗∇hj(x∗)=0

换句话说,目标函数的梯度与约束梯度的加权和相平衡。

【2.1.2】不等式约束可行性

所有不等式约束在 x ∗ x^{*} x∗处满足: g i ( x ∗ ) ≤ 0 ( i = 1 , 2 , . . . , m ) g_{i}(x^{*})\leq0 (i=1,2,...,m) gi(x∗)≤0(i=1,2,...,m)也就是解必须严格落在不等式约束定义的可行域内。

【2.1.3】等式约束可行性

所有等式约束在 x ∗ x^{*} x∗处满足: h j ( x ∗ ) = 0 ( j = 1 , 2 , . . . , p ) h_{j}(x^{*})=0 (j=1,2,...,p) hj(x∗)=0(j=1,2,...,p)也就是解必须严格落在等式约束定义的曲面上。

【2.1.4】拉格朗日乘子非负性

不等式约束对应的乘子非负: λ i ∗ ≥ 0 ( j = 1 , 2 , . . . , m ) \lambda_{i}^{*}\geq0 (j=1,2,...,m) λi∗≥0(j=1,2,...,m)

此时解释起来有一个形象的理解,因为 g i ≤ 0 g_{i}\leq0 gi≤0严格成立,所以 λ i ∗ ≥ 0 \lambda_{i}^{*}\geq0 λi∗≥0就像在唱反调, g i g_{i} gi也就是解必须严格落在等式约束定义的曲面上。

不等式约束 g i ( x ) ≤ 0 g_{i}(x)\leq0 gi(x)≤0定义了一个可行域,当最优解 x ∗ x^{*} x∗落在某个约束的边界上,此时存在 g i ( x ∗ ) = 0 g_{i}(x^{*})=0 gi(x∗)=0,若 x x x稍微偏离 x ∗ x^{*} x∗且试图进入 g i ( x ) > 0 g_{i}(x)>0 gi(x)>0的区域,也就是尝试进入非可行域,约束就会阻止这种偏离,就像给 x x x施加了一个指向可行域内部的"推力"。

目标函数的梯度 ∇ f ( x ∗ ) \nabla f(x^{*}) ∇f(x∗)指向 f ( x ) f(x) f(x)增长最快的方向

,对于此处求最小化的目标,我们实际上是希望 x x x向 − ∇ f ( x ) -\nabla f(x) −∇f(x)方向移动。如果定义梯度 ∇ f ( x ∗ ) \nabla f(x^{*}) ∇f(x∗)是拉力方向,则优化方向是拉力的反方向;

而约束函数 g i ( x ∗ ) g_{i}(x^{*}) gi(x∗)的梯度指向 g i ( x ) g_{i}(x) gi(x)增长最快的方向,实际上指向了非可行域,所以 − ∇ g i ( x ∗ ) -\nabla g_{i}(x^{*}) −∇gi(x∗)才是指向可行域,而在 λ i ∗ ≥ 0 \lambda_{i}^{*}\geq0 λi∗≥0的前提下,可以保障 − λ i ∗ ∇ g i ( x ∗ ) -\lambda_{i}^{*}\nabla g_{i}(x^{*}) −λi∗∇gi(x∗)面向可行域,所以 − λ i ∗ ∇ g i ( x ∗ ) -\lambda_{i}^{*}\nabla g_{i}(x^{*}) −λi∗∇gi(x∗)是推力的方向。

【2.1.5】互补松弛条件

乘子与不等式约束的乘积为零:
λ i ∗ ⋅ g i ( x ∗ ) = 0 ( i = 1 , 2 , . . . , m ) \lambda_{i}^{*}\cdot g_{i}(x^{*})=0 (i=1,2,...,m) λi∗⋅gi(x∗)=0(i=1,2,...,m)

实际上有两种情况:

当约束不起作用, g i ( x ) ≤ 0 g_{i}(x)\leq0 gi(x)≤0,此时必然有乘子为零即 λ i ∗ = 0 \lambda _{i}^{*}=0 λi∗=0

当约束起作用, g i ( x ) = 0 g_{i}(x)=0 gi(x)=0,此时必然有乘子大于零即 λ i ∗ ≥ 0 \lambda _{i}^{*}\geq0 λi∗≥0

【3】总结

从数学的角度重新粗糙解读了KKT条件。