拉格朗日乘子与KKT条件

 

拉格朗日乘子法和KKT(Karush-Kuhn-Tucker)条件是求解约束优化问题的重要方法,再有等式约束时使用拉格朗日乘子法,在有不等式约束时使用KKT条件。前提是,只有当目标函数为凸函数时,使用这两种方法才能保证求得的是最优解。

拉格朗日乘子法:

f(x),h_{i}(x)是定义在\mathbb{R}^{n}上的连续可微函数,考虑约束最优化问题:

min f(x) \\ s.t. \ \ h_{i}(x)=0 \ \ i=1,2,...,n

将这个问题转换为:

min \ f(x)+\sum_{i=1}^{n}\lambda _{i}h_{i}(x)

其中\lambda _{i} \neq 0,称为拉格朗日乘子。

下面依据wikipedia来解释拉格朗日乘子法的合理性:

假设有一个二维的优化问题:

通过画图来辅助思考:

绿线标出的是约束g(x,y)=c的点的轨迹,蓝线是f(x,y)的等高线。箭头代表斜率,和等高线的法线平行。从图中可以看出在最优解处,f和g的法线方向刚好相反(梯度共线),即

而满足该条件的点同时又是下式的解

所以min F(x,y)与 min f(x,y)等价。新方程F(x,y)在达到极值时与f(x,y)相等,因为达到极值时,g(x,y)-c总等于零。

所以拉格朗日乘子法与原优化问题是等价的。

KKT条件:

kKT条件是拉格朗日乘子法的泛化,

同时具有等式约束与不等式约束的最优化问题:

min\ f(x)\\ s.t.c_{i}(x)\leqslant 0,h_{j}(x)=0

对应的拉格朗日函数为:

L(x,\alpha,\lambda)=f(x)+\sum_{i=1}^{k}\alpha_{i}c_{i}(x)+\sum_{j=1}^{l}\lambda_{j}h_{j}(x) \\ \left\{\begin{matrix} \alpha_{i}\geqslant 0 \\ c_{i}(x)\leqslant 0 \\ \lambda_{j}\neq 0 \\ h_{j}(x) = 0 \end{matrix}\right.                                                                                                                       

可以得出原始问题最小化f(x)等价于\left\{\begin{matrix} min_{x}f(x)=f(x^{*})=min_{x}max_{\alpha ,\lambda}L(x,\alpha,\lambda)=max_{\alpha,\lambda}min_{x}L(x,\alpha,\lambda) \\ \alpha_{i}c_{i}(x^{*})=0 \\ \frac{\partial L(x,\alpha,\lambda) }{ \partial x}|_{x=x^{*}}=0 \end{matrix}\right.\\的结论。

注:x, \lambda, \mu都是向量;\frac{\partial L(x,\alpha,\lambda) }{ \partial x}|_{x=x^{*}}=0表明f(x)在极值点x^{*}处的梯度是各个h_{i}(x^{*})c_{i}(x^{*})梯度的线性组合。

以下进行证明:

1. 根据式(1)知,\alpha_{i} c_{i}(x) \leqslant 0,进而

max_{\alpha,\lambda} L(x,\alpha)=f(x)

min_{x}f(x)=min_{x}max_{\alpha,\lambda}L(x,\alpha)

2. 接下来证明\underset{x}{min}\ \underset{\alpha,\lambda}{max} L(x,\alpha,\lambda) =\underset{\alpha,\lambda}{max}\ \underset{x}{min} L(x,\alpha,\lambda):

首先:

max_{\alpha,\lambda}min_{x} L(x,\alpha,\lambda) \\ =max_{\alpha,\lambda}[min_{x}f(x)+min_{x}(\alpha c(x)+\lambda h(x))]\\ =max_{\alpha,\lambda}min_{x}f(x)+max_{\alpha,\lambda}min_{x}\ (\alpha c(x)+\lambda h(x))

f(x)与变量\alpha无关,所以上式等于:min_{x}f(x)+max_{\alpha,\lambda}min_{x}(\alpha c(x)+\lambda h(x))

又因为:\left\{\begin{matrix} \alpha_{i}\geqslant 0 \\ c_{i}(x)\leqslant 0 \\h_{i}(x)=0 \end{matrix}\right.\\  所以:min_{x}(\alpha c(x)+\lambda h(x))= \left\{\begin{matrix} 0 ,\ \ if\ \alpha=0\ or\ c(x)=0 \\ -\infty ,\ \ if\ \alpha>0 \ and\ c(x)<0 \end{matrix}\right.\\

所以:max_{\alpha,\lambda}min_{x}(\alpha c(x)+\lambda h(x))=0 ;此时 \alpha=0\ or\ c(x)=0

所以:max_{\alpha,\lambda}min_{x} L(x,\alpha,\lambda) =min_{x}f(x)

3.  综上根据1和2我们可以得出结论:当满足一定条件时:

\underset{x}{min}f(x)=\underset{x}{min}\ \underset{\alpha,\lambda}{max} L(x,\alpha,\lambda)=\underset{\alpha,\lambda}{max}\ \underset{x}{min}L(x,\alpha,\lambda)

我们把\underset{\alpha,\lambda}{max}\ \underset{x}{min}L(x,\alpha,\lambda)称为 原问题\underset{x}{min}\ \underset{\alpha,\lambda}{max} L(x,\alpha,\lambda)的对偶问题。上式表明当满足一定条件时,原问题与对偶问题是等价的,两者的最优值是相等的。这时可以用解对偶问题替代解原始问题。且在最优解x^{*}处,\alpha=0\ or\ c(x^{*})=0

而且:\left\{\begin{matrix} \underset{\alpha,\lambda}{max} L(x^{*},\alpha,\lambda)=f(x^{*}) \\ max_{\alpha,\lambda}min_{x} L(x,\alpha,\lambda) =f(x^{*}) \end{matrix}\right. \Rightarrow L(x^{*},\alpha,\lambda)=min_{x} L(x,\alpha,\lambda)

这说明x^{*}也就是L(x,\alpha)的极值点,即\frac{\partial L(x,\alpha,\lambda) }{ \partial x}|_{x=x^{*}}=0

得证;

结论:

  • 考虑原始问题和对偶问题,假设函数f(x)c_{i}(x)是凸函数,h_{j}(x)是仿射函数;并且假设不等式约束c_{i}(x)是严格可行的,即存在x,对于所有i有c_{i}(x)<0,则存在x^{*},\alpha^{*},\lambda^{*},使x^{*}是原始问题的解,\alpha^{*},\lambda^{*}是对偶问题的解,并且:

其中p^{*}d^*分别是原始问题与对偶问题的最优值,两者相同。

  • 考虑原始问题和对偶问题,假设函数f(x)c_{i}(x)是凸函数,h_{j}(x)是仿射函数;并且假设不等式约束c_{i}(x)是严格可行的,即x^{*}\alpha^{*},\lambda^{*}分别是原始问题和对偶问题的解的充分必要条件是x^{*},\alpha^{*},\lambda^{*}满足下面的Karush-Kuhn-Tucker(KKT)条件:

\nabla_{x}L(x^*,\alpha^*,\lambda^*)=0

\left\{\begin{matrix} \alpha_i^*c_i(x^*)=0, \ i=1,2,...,k \\c_i(x^*)\leqslant 0 \\ \alpha_i ^*\geqslant 0 \\h_j(x^*)=0,\ j=1,2,...,l \end{matrix}\right.

参考:1. http://www.cnblogs.com/zhangchaoyang/articles/2726873.html#3980843

           2.统计学习方法《李航》

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值