带约束的优化问题可以描述为以下形式
min x f ( x ) s . t . ∀ i , g i ( x ) ≤ 0 , ∀ j , h j ( x ) = 0 (1.1) \tag{1.1} \begin{aligned} \min_x\ &f(x)\\ s.t.\ &\forall i, g_i(x)\leq 0, \\ &\forall j, h_j(x)=0& \end{aligned} xmin s.t. f(x)∀i,gi(x)≤0,∀j,hj(x)=0(1.1)
称 f ( x ) f(x) f(x) 为目标函数, g i ( x ) g_i(x) gi(x) 为不等式约束, h j ( x ) h_j(x) hj(x) 为等式约束。
若目标函数为二次函数,约束全为线性函数,称为二次规划。
若 f ( x ) f(x) f(x) 为凸函数, g i ( x ) g_i(x) gi(x) 为凸函数, h j ( x ) h_j(x) hj(x) 为仿射函数,则该问题称为凸优化。注意这里不等式约束 g i ( x ) ≤ 0 g_i(x)\leq0 gi(x)≤0 则要求 g i ( x ) g_i(x) gi(x) 为凸函数,若 g i ( x ) ≥ 0 g_i(x)\geq0 gi(x)≥0 则要求为凹函数。对于凸优化问题,全局有唯一的极小值点。
构造拉格朗日函数:
L ( x , λ , μ ) = f ( x ) + ∑ i λ i g i ( x ) + ∑ j μ j h j ( x ) (1.2) \tag{1.2} L(x, \lambda, \mu)=f(x)+\sum_i\lambda_ig_i(x) + \sum_j \mu_jh_j(x) L(x,λ,μ)=f(x)+i∑λigi(x)+j∑μjhj(x)(1.2)
原问题等价于:
min x max λ , μ L ( x , λ , μ ) s . t . λ i ≥ 0 (1.3) \tag{1.3} \begin{aligned} \min_x\ &\max_{\lambda, \mu}L(x, \lambda, \mu)\\ s.t.\ &\lambda_i\geq 0 \end{aligned} xmin s.t. λ,μmaxL(x,λ,μ)λi≥0(1.3)
简单理解:如果某个条件不满足,一定可以调整相应的 λ / μ \lambda/\mu λ/μ 使得函数值任意大,从而不可能成为最优解;如果所有条件都满足,那么后面两个求和号里的东西都为 0,拉格朗日函数就等于原函数。
这样,我们就把关于 x x x 的限制给去除掉了。
对于约束优化问题,最优解 x ∗ x^* x∗ 需要满足 KKT 条件:
{ ∇ x L ( x ∗ , λ ∗ , μ ∗ ) = 0 λ i ∗ ≥ 0 λ i g i ( x ∗ ) = 0 g i ( x ∗ ) ≤ 0 h j = 0 (1.4) \tag{1.4} \left\{ \begin{matrix} \nabla_x L(x^*, \lambda^*,\mu^*)=0\\ \lambda_i^*\geq 0\\ \lambda_ig_i(x^*)=0\\ g_i(x^*)\leq 0 \\h_j=0 \end{matrix} \right. ⎩ ⎨ ⎧∇xL(x∗,λ∗,μ∗)=0λi∗≥0λigi(x∗)=0gi(x∗)≤0hj=0(1.4)
对于凸优化问题,这个条件是充要的。
直观解释是:对于某条不等式约束 i i i,要么 λ i = 0 \lambda_i=0 λi=0 ,表示该限制无用;要么 λ i > 0 \lambda_i> 0 λi>0,此时有 g i ( x ∗ ) = 0 g_i(x^*)=0 gi(x∗)=0,即最优解在边界上,同时 f ( x ) f(x) f(x) 负梯度方向一定与 g ( x ) g(x) g(x) 梯度方向相同,即 ∇ x L ( x ∗ , λ ∗ , μ ∗ ) = 0 \nabla_x L(x^*, \lambda^*,\mu^*)=0 ∇xL(x∗,λ∗,μ∗)=0 (否则可以沿着 g i ( x ) = 0 g_i(x)=0 gi(x)=0 上的某个方向移动使得函数值减小)。梯度为零也意味着最优解处 f ( x ) f(x) f(x) 的梯度方向一定与 h j ( x ) = 0 h_j(x)=0 hj(x)=0 的法线方向共线。
几何理解见 拉格朗日乘子法和KKT条件 - PilgrimHui - 博客园 (cnblogs.com)
以式 ( 1.3 ) (1.3) (1.3) 为例,它的对偶问题为
max λ , μ min x L ( x , λ , μ ) s . t . λ i ≥ 0 (2.1) \tag{2.1} \begin{aligned} \max_{\lambda, \mu}\ &\min_xL(x, \lambda, \mu)\\ s.t.\ &\lambda_i\geq 0 \end{aligned} λ,μmax s.t. xminL(x,λ,μ)λi≥0(2.1)
可以发现,原问题是关于 x x x 的函数,对偶问题是关于 λ , μ \lambda, \mu λ,μ 的函数。
对偶问题和原问题有什么关系?首先有弱对偶性,简单来说就是 max min ≤ min max \max \min \leq \min \max maxmin≤minmax。
证明:任给 x ∗ , λ ∗ , μ ∗ x^*, \lambda^*, \mu^* x∗,λ∗,μ∗,显然有 min x L ( x , λ ∗ , μ ∗ ) ≤ L ( x ∗ , λ ∗ , μ ∗ ) ≤ max λ , μ L ( x ∗ , λ , μ ) \min_x L(x,\lambda^*,\mu^*)\leq L(x^*,\lambda^*,\mu^*)\leq \max_{\lambda,\mu}L(x^*,\lambda,\mu) minxL(x,λ∗,μ∗)≤L(x∗,λ∗,μ∗)≤maxλ,μL(x∗,λ,μ),故第一项的最大值也小于等于第三项的最小值,得证。容易发现,弱对偶性总是成立的。
但我们想要的是强对偶性,即 max min = min max \max \min=\min \max maxmin=minmax,这样就可以把原问题转化为对偶问题进行求解。
给出 Slater 条件
∃ x ∈ relint D s . t . ∀ i , g i ( x ) < 0 (2.2) \tag{2.2} \exist x\in \text {relint} D\\ s.t.\ \forall i,g_i(x)<0 ∃x∈relintDs.t. ∀i,gi(x)<0(2.2)
其中 relint 表示内点。凸优化 + Slater 条件是对偶关系的充分不必要条件。还有放松的 Slater 条件:只需要校验限制中的非仿射函数。
强对偶关系也可以推导出 KKT 条件,前提是原问题、对偶问题最优解都能取到(一个不能取到的例子是 min 1 / x , s . t . x ≥ 1 \min 1/x,\ s.t.\ x\geq1 min1/x, s.t. x≥1),下面给出证明:
记原问题最优值为 p ∗ p^* p∗,对偶问题最优值为 d ∗ d^* d∗,有
d ∗ = max λ , μ min x L ( x , λ , μ ) = min x L ( x , λ ∗ , μ ∗ ) ≤ L ( x ∗ , λ ∗ , μ ∗ ) = f ( x ∗ ) + ∑ i λ i g i ( x ∗ ) + ∑ j μ j h j ( x ∗ ) = f ( x ∗ ) + ∑ i λ i g i ( x ∗ ) ≤ f ( x ∗ ) = p ∗ (2.3) \tag{2.3} \begin{aligned} d^*&=\max_{\lambda, \mu}\min_xL(x, \lambda, \mu)\\ &=\min_xL(x,\lambda^*,\mu^*)\\ &\leq L(x^*,\lambda^*,\mu^*)\\ &=f(x^*)+\sum_i\lambda_ig_i(x^*) + \sum_j \mu_jh_j(x^*)\\ &=f(x^*)+\sum_i\lambda_ig_i(x^*)\\ &\leq f(x^*)\\ &=p^* \end{aligned} d∗=λ,μmaxxminL(x,λ,μ)=xminL(x,λ∗,μ∗)≤L(x∗,λ∗,μ∗)=f(x∗)+i∑λigi(x∗)+j∑μjhj(x∗)=f(x∗)+i∑λigi(x∗)≤f(x∗)=p∗(2.3)
要满足强对偶关系,当且仅当两个不等号同时取等。第一个不等号取等推出偏导为零 ∇ x L ( x ∗ , λ ∗ , μ ∗ ) = 0 \nabla_x L(x^*, \lambda^*,\mu^*)=0 ∇xL(x∗,λ∗,μ∗)=0,第二个不等号取等推出松弛互补条件 λ i g i = 0 \lambda_ig_i=0 λigi=0。KKT 条件的其他三条就是原本或我们引入的限制。
对于强对偶性和 KKT 条件的要求和关系,详见 KKT条件在使用的时候有什么要求吗?是否要求强对偶 - 知乎
对偶关系集合解释详见 机器学习-支持向量机6-约束优化问题-对偶关系的几何解释_哔哩哔哩_bilibili
对于线性可分的 n 个样本点 ( x i , y i ) (x_i, y_i) (xi,yi), x i x_i xi 为坐标, y i y_i yi 为标签(1 或 -1)。要找到一个超平面 w T x + b = 0 w^Tx+b=0 wTx+b=0 区分两类数据,并且使该超平面到数据点集的最小距离最大,即要求:
max w , b min i ∣ w T x i + b ∣ ∥ w ∥ s . t . y i ( w T x i + b ) > 0 (3.1) \tag{3.1} \begin{aligned} \max_{w,b}\ &\min_i \frac{{|w^Tx_i+b|}}{\|w\|}\\ s.t.\ &y_i(w^Tx_i+b)>0 \end{aligned} w,bmax s.t. imin∥w∥∣wTxi+b∣yi(wTxi+b)>0(3.1)
如果 w , b w,b w,b 对应的超平面能够正确分类,那么同时将他们缩放一定倍数一定能够使得 min y i ( w T x i + b ) = 1 \min y_i(w^Tx_i+b)= 1 minyi(wTxi+b)=1 成立。因此原问题也等价于
max w , b min i ∣ w T x i + b ∣ ∥ w ∥ s . t . min y i ( w T x i + b ) = 1 (3.2) \tag{3.2} \begin{aligned} \max_{w,b}\ &\min_i \frac{{|w^Tx_i+b|}}{\|w\|}\\ s.t.\ &\min y_i(w^Tx_i+b)=1 \end{aligned} w,bmax s.t. imin∥w∥∣wTxi+b∣minyi(wTxi+b)=1(3.2)
化简一下目标
max w , b min i ∣ w T x i + b ∣ ∥ w ∥ ⟺ max w , b 1 ∥ w ∥ min i y i ( w T x i + b ) ⟺ max w , b 1 ∥ w ∥ ⟺ min w , b 1 2 w T w (3.3) \tag{3.3} \max_{w,b} \min_i \frac{{|w^Tx_i+b|}}{\|w\|} \iff \max_{w,b} \frac{1}{\|w\|}\min_i y_i(w^Tx_i+b) \iff \max_{w,b} \frac{1}{\|w\|} \iff \min_{w,b} \frac12 w^Tw w,bmaximin∥w∥∣wTxi+b∣⟺w,bmax∥w∥1iminyi(wTxi+b)⟺w,bmax∥w∥1⟺w,bmin21wTw(3.3)
因此原问题化为
min w , b 1 2 w T w s . t . min y i ( w T x i + b ) = 1 (3.4) \tag{3.4} \begin{aligned} \min_{w,b}\ &\frac12 w^Tw\\ s.t.\ &\min y_i(w^Tx_i+b)=1 \end{aligned} w,bmin s.t. 21wTwminyi(wTxi+b)=1(3.4)
其实可以再进一步
min w , b 1 2 w T w s . t . y i ( w T x i + b ) ≥ 1 (3.5) \tag{3.5} \begin{aligned} \min_{w,b}\ &\frac12 w^Tw\\ s.t.\ &y_i(w^Tx_i+b)\geq 1 \end{aligned} w,bmin s.t. 21wTwyi(wTxi+b)≥1(3.5)
解释一下这一步等价的原因。如果求得解 min y i ( w T x i + b ) = k > 1 \min y_i(w^Tx_i+b)=k>1 minyi(wTxi+b)=k>1,那么有 min y i ( ( w k ) T x i + b k ) = 1 \min y_i((\frac{w}{k})^Tx_i+\frac{b}{k})=1 minyi((kw)Txi+kb)=1,且 ( w k ) T ( w k ) < w T w (\frac w k)^T(\frac w k) < w^Tw (kw)T(kw)<wTw。因此 w , b w, b w,b 肯定不是最优解。故这一步是在我们最优化目标下才成立的。
得到 SVM 的基本型:
min w , b 1 2 w T w s . t . 1 − y i ( w T x i + b ) ≤ 0 (3.6) \tag{3.6} \begin{aligned} \min_{w,b}\ &\frac12 w^Tw\\ s.t.\ &1- y_i(w^Tx_i+b)\leq 0 \end{aligned} w,bmin s.t. 21wTw1−yi(wTxi+b)≤0(3.6)
式 ( 3.6 ) (3.6) (3.6) 是一个凸优化问题,其实可以直接求解。但我们有更高效的方法。
既然这是带约束的问题,首先写出拉格朗日函数
L ( w , b , λ ) = 1 2 w T w + ∑ i λ i ( 1 − y i ( w T x i + b ) ) (4.1) \tag{4.1} L(w,b,\lambda)=\frac 1 2 w^Tw + \sum_i \lambda_i(1-y_i(w^Tx_i+b))\\ L(w,b,λ)=21wTw+i∑λi(1−yi(wTxi+b))(4.1)
将其转化为对 w , b w,b w,b 无约束的问题
min w , b max λ L ( w , b , λ ) s . t . λ i ≥ 0 (4.2) \tag{4.2} \begin{aligned} \min_{w,b}\ &\max_\lambda L(w, b, \lambda)\\ s.t.\ &\lambda_i \geq 0 \end{aligned} w,bmin s.t. λmaxL(w,b,λ)λi≥0(4.2)
对偶问题为
max λ min w , b L ( w , b , λ ) s . t . λ i ≥ 0 (4.3) \tag{4.3} \begin{aligned} \max_\lambda\ &\min_{w,b}L(w, b, \lambda)\\ s.t.\ &\lambda_i \geq 0 \end{aligned} λmax s.t. w,bminL(w,b,λ)λi≥0(4.3)
我们要优化的目标是个凸函数,约束是线性的(满足放松的 Slater 条件),满足强对偶。
转化为对偶问题的好处是,内层对 w , b w,b w,b 是无限制的,可以求偏导来找到最优解。
∂ L ∂ b ≜ 0 ⇒ ∑ i λ i y i = 0 (4.4) \tag{4.4} \frac{\partial L}{\partial b}\triangleq0\Rightarrow \sum_i \lambda_iy_i = 0 ∂b∂L≜0⇒i∑λiyi=0(4.4)
代入 ( 4.1 ) (4.1) (4.1)
L ( w , b ∗ , λ ) = 1 2 w T w + ∑ i λ i − ∑ i λ i y i w T x i (4.5) \tag{4.5} L(w,b^*,\lambda)=\frac 1 2 w^Tw+\sum_i \lambda_i - \sum_i\lambda_iy_iw^Tx_i L(w,b∗,λ)=21wTw+i∑λi−i∑λiyiwTxi(4.5)
对 w w w 求偏导
∂ L ∂ w = w − ∑ i λ i y i x i ≜ 0 ⇒ w ∗ = ∑ i λ i y i x i (4.6) \tag{4.6} \frac{\partial L}{\partial w}= w - \sum_i\lambda_i y_ix_i\triangleq0\Rightarrow w^*=\sum_i\lambda_i y_ix_i ∂w∂L=w−i∑λiyixi≜0⇒w∗=i∑λiyixi(4.6)
再代入 ( 4.5 ) (4.5) (4.5)
L ( w ∗ , b ∗ , λ ) = 1 2 ( ∑ i λ i y i x i ) T ( ∑ i λ i y i x i ) + ∑ i λ i − ∑ i λ i y i ( ∑ j λ j y j x j ) T x i = − 1 2 ∑ i ∑ j λ i λ j y i y j x i T x j + ∑ i λ i (4.7) \tag{4.7} \begin{aligned} L(w^*,b^*,\lambda)&=\frac 1 2 \bigg( \sum_i\lambda_iy_ix_i \bigg)^T\bigg( \sum_i\lambda_iy_ix_i \bigg)+\sum_i\lambda_i-\sum_i\lambda_iy_i\bigg( \sum_j\lambda_jy_jx_j \bigg)^Tx_i\\ &=-\frac 1 2 \sum_i\sum_j\lambda_i\lambda_jy_iy_jx_i^Tx_j+\sum_i\lambda_i \end{aligned} L(w∗,b∗,λ)=21(i∑λiyixi)T(i∑λiyixi)+i∑λi−i∑λiyi(j∑λjyjxj)Txi=−21i∑j∑λiλjyiyjxiTxj+i∑λi(4.7)
最终可以化为
min λ 1 2 ∑ i ∑ j λ i λ j y i y j x i T x j − ∑ i λ i s . t . ∑ i λ i y i = 0 , λ i ≥ 0 (4.8) \tag{4.8} \begin{aligned} \min_\lambda\ &\frac 1 2 \sum_i\sum_j\lambda_i \lambda_jy_iy_jx_i^Tx_j-\sum_i\lambda_i\\ s.t.\ &\sum_i \lambda_iy_i = 0,\\ &\lambda_i \geq 0\\ \end{aligned} λmin s.t. 21i∑j∑λiλjyiyjxiTxj−i∑λii∑λiyi=0,λi≥0(4.8)
求解这个问题得到 λ \lambda λ,就可以带入式 ( 4.6 ) (4.6) (4.6) 得到 w ∗ w^* w∗。
上面提到的,满足强对偶性的问题最优解满足 KKT 条件,即
λ i ∗ ( 1 − y i ( ( w ∗ ) T x i + b ∗ ) ) = 0 (4.9) \tag{4.9} \lambda_i^*(1-y_i((w^*)^Tx_i+b^*))=0 λi∗(1−yi((w∗)Txi+b∗))=0(4.9)
若 λ i ∗ = 0 \lambda_i^*=0 λi∗=0,该样本无关紧要;若 λ i ∗ > 0 \lambda_i^*>0 λi∗>0,有 y i ( ( w ∗ ) T x i + b ∗ ) = 1 y_i((w^*)^Tx_i+b^*)=1 yi((w∗)Txi+b∗)=1,即该样本点在最大间隔边界上,称其为支持向量。这就是支持向量机名字的由来。一般情况下,我们得到的模型和大部分不在边界的点是没有关系的,因此鲁棒性较强。
设有支持向量 ( x k , y k ) (x_k,y_k) (xk,yk) 满足 y k ( ( w ∗ ) T x k + b ∗ ) = 1 y_k((w^*)^Tx_k+b^*)=1 yk((w∗)Txk+b∗)=1,即
b ∗ = y k − ( w ∗ ) T x k (4.10) \tag{4.10} b^*=y_k-(w^*)^Tx_k b∗=yk−(w∗)Txk(4.10)
这样也能求出 b ∗ b^* b∗,也就找到了最优超平面。
最后一个问题就是怎么求解 λ \lambda λ?通常使用序列最小优化算法(Sequential Minimal Optimization, SMO)。该算法不断执行如下两个步骤直至收敛:
发现这个过程很类似于坐标上升算法,即每次通过更新多元函数中的一维,经过多次迭代直到收敛。由于目标函数是凸的,SMO 得到的的一定是全局最优解。