参考西瓜书和某大佬blog,忘记博客地址了(手动狗头)
拉格朗日数乘法:
$$ 对于m个等式以及n个不等式的约束,h_i(x)=0(i=1,2,...m),g_j(x)\le0(j=1,2,...,n)\\简记为:\\ min\ f(x)\\s.t.\ h_i(x)=0(i=1,2,...m)\\g_j(x)\le0(j=1,2,...,n)\\ $$KKT条件
$$ 对于g_j(x)\le0,我们引入KKT条件(Karush-Kuhn-Tucker) $$$$ \lambda_j\ge0,g_j(x)\le0,\lambda_j g_j(x)=0 $$对偶条件
这个问题(或者说原始的带约束的形式)称作 primal problem。如果你看过之前关于 SVM 的指导,那么肯定就知道了,相对应的还有一个 dual problem,其形式非常类似,只是把 min 和 max 交换了一下:
$$ \max_{\lambda \geq 0, \nu} \min_{x} L(x, \lambda, \nu) $$交换之后的 dual problem 和原来的 primal problem 并不相等,直观地,我们可以这样理解:解子问题的精力分布得最精细的那部分要明显。当然这是很不严格的说法,而是出于字数的限制以便简单说明,所以我们还是来看一下数学描述。和刚才的 \( x(z) \) 类似,我们也用一个记号来表示内层的这个函数,记:
$$ g(\lambda, \nu) = \min_{x} L(x, \lambda, \nu) $$并称 \( g(\lambda, \nu) \) 为 Lagrange dual function (不要和 \( L \) 的 Lagrangian 混淆了)。\( g \) 有一个很好的性质就是它是 primal problem 的一个下界。换句话说,如果 primal problem 的最小值记为 \( p^* \),那么对于所有的 \( \lambda \geq 0 \),我们有:
$$ g(\lambda, \nu) \leq p^* $$因为对于极值点(实际上包括所有满足约束条件的点)\( x^* \),注意到 \( \lambda \geq 0 \),我们总是有:
$$ \sum_{i=1}^m \lambda_i f_i(x^*) + \sum_{i=1}^p \nu_i h_i(x^*) \leq 0 $$因此
$$ L(x^*, \lambda, \nu) = f_0(x^*) + \sum_{i=1}^m \lambda_i f_i(x^*) + \sum_{i=1}^p \nu_i h_i(x^*) \leq f_0(x^*) = p^* $$于是
$$ g(\lambda, \nu) = \min_{x} L(x, \lambda, \nu) \leq L(x^*, \lambda, \nu) \leq f_0(x^*) = p^* $$这样一来就确定了 \( g \) 的下界性质,于是
$$ \max_{\lambda \geq 0, \nu} g(\lambda, \nu) $$实际上就是最大的下界。这是很自然的,因为得到了下界之后,我们自然就希望得到最好的下界,也就是最大的那一个——因为它离我们要逼近的值最近呀。记 dual problem 的最优值为 \( d^* \) 的话,根据上面的推导,我们就得到了如下性质:
$$ d^* \leq p^* $$