拉格朗日乘子法、交替方向乘子法(ADMM)

学习框架

Lagrange乘子法

无约束问题

无约束问题,定义为 min f(x)\ min \ f(x),对于凸函数而言,直接利用导数的相关性质,当f(x)=0f'(x)=0时,获得最优解xx^*

等式约束问题

等式约束定义如下:
minf(x)s.t.g(x)=0\begin{aligned} &min f(x) \\s.t.\quad& g(x)=0 \end{aligned}

λ\lambda为Lagrange乘子,有L(x,λ)=f(x)+λg(x)(1-1)L(x,\lambda)=f(x)+\lambda g(x) \tag{1-1}
x,λx,\lambda分别求偏导,并令偏导等于0:
{xL(x,λ)=f(x)+λg(x)=0λL(x,λ)=g(x)=0\begin{cases} \nabla_xL(x,\lambda) = f'(x)+\lambda g'(x) = 0 \\ \nabla_{\lambda}L(x,\lambda) =g(x)=0 \end{cases}
可以看到对L(x,λ)L(x,\lambda)λ\lambda 求偏导得到的刚好是等式约束的约束条件。

现在,我们在平面内投影函数,画出f(x)f(x)的等值线,以及g(x)=0g(x)=0的边界线;如下图所示: 蓝色虚线代表了f(x,y)的等值线;红色代表g(x,y)=c=0g(x,y)=c=0;
在这里插入图片描述注:

  1. 方向导数是某一方向上的导数
  2. 梯度的方向是方向导数中取到最大值的方向,梯度的值是方向导数的最大值(垂直方向)
  3. 假设f(x)的最小值在圆心处,即梯度方向向外;g(x,y)的梯度方向向下;

那么满足条件的值一定是两个函数相切处;如果相交,那么一定还存在一个等值线与红线相切,而且更小;在切点处,两个函数的梯度共线,即f(x)=λg(x),λ<0f′(x)=−\lambda g′(x),\lambda<0;做简单的变换后:f′(x)+ag′(x)=0,这就是第一个等式啦,同时还需要满足第二个式子;

不等式约束问题(KKT条件)

不等式约束问题: minf(x)s.t.g(x)=0h(x)0\begin{aligned} minf(x)\\s.t.\quad g(x)=0\\ \quad \quad h(x)\leqslant0 \end{aligned}

KKT条件

Karush-Kuhn-Tucker (KKT)条件是非线性规划(nonlinear programming)最佳解的必要条件。
最佳解的必要条件包括Lagrangian函数 L(x,λ)L(x,\lambda)定常方程式原始可行性对偶可行性,以及互补松弛性
{xL=f+λg=0  g(x)0   λ0λg(x)=0\begin{cases} & \nabla_xL=\nabla f+\lambda \nabla g=0 \\ &\ \ g(x)\leqslant 0 \\ &\ \ \ \quad\lambda \geqslant 0 \\ & \lambda g(x)=0 \end{cases}
这些条件合称为Karush-Kuhn-Tucker (KKT)条件
在KKT条件下的Lagrange函数:
L(x,λ,μ)=f(x)+λg(x)+μh(x)s.t.{g(x)=0μ0μh(x)=0L(x,\lambda,\mu)=f(x)+\lambda g(x)+\mu h(x)\\ s.t. \begin{cases}&& g(x) = 0 \\&&\mu \geqslant0 \\ &&\mu\cdot h(x)=0 \end{cases}
这样就将不等式约束转变为等式约束,令偏导等于零即可求得最优参数;minf(x)minx maxλ,μL(x,λ,μ)min f(x)\simeq \min_x\ \max_{\lambda,\mu}L(x,\lambda,\mu)
对偶变换后有
maxλ,μminx L(x,λ,μ)\max_{\lambda,\mu}\min_x\ L(x,\lambda,\mu)
因为h(x)<0h(x) <0,所以只有当μh(x)=0\mu \cdot h(x)=0时,L(x,λ,μ)L(x,\lambda,\mu)才能取得最大值;否则不满足条件;所以KKT条件是minf(x)minf(x)的必要条件。

Lagrange乘子法问题

例:
求解
minf=2x2+y22xys.t.x+y=1\begin{aligned} &min f = 2x^2+y^2-2xy\\&s.t. \quad \quad x+y=1 \end{aligned}
我们定义L(x,y,λ)=fλg(x)=2x2+y22xyλ(x+y1)L(x,y,λ)=f−λg(x)=2x2+y2−2xy−λ(x+y−1),对其求偏导得
{Lx=4x2yλ=0Ly=2y2xλ=0Lλ=xy1=0\begin{cases}\frac{∂L}{∂x}=4x−2y−λ=0\\\frac{∂L}{∂y}=2y−2x−λ=0\\\frac{∂L}{∂λ}=x−y−1=0 \end{cases}
我们可以计算原目标函数的Hessi矩阵:
A=[2Lx22Lxy2Lyx2Lx2]=[4222]\mathscr{A}=\begin{bmatrix} \frac{∂^2L}{∂x^2} & \frac{∂^2L}{∂x∂y} \\ \frac{∂^2L}{∂y∂x} & \frac{∂^2L}{∂x^2} \end{bmatrix}=\begin{bmatrix}4&-2\\-2&2\end{bmatrix}
这是一个正定矩阵。

罚函数法

定义

外罚函数法

内罚函数法

广义乘子法

对偶上升法

实例——lasso问题的求解

代码实现

未完,待续。。。。
参考资料:
【1】:斯坦福凸优化网站
【2】:拉格朗日乘子法、罚函数法、乘子罚函数法

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读