拉格朗日乘子法、罚函数法、乘子罚函数法

本文简单总结一些相关概念,具体证明以后再补充;
1. 拉格朗日乘子法
2. 罚函数法:外罚函数与内罚函数法
3. 广义乘子法

1. 拉格朗日乘子法

1.1 无约束问题

无约束问题,定义为 minf(x) min f ( x ) , 对于凸函数而言,直接利用费马定理, f(x)=0 f ′ ( x ) = 0 ,获得最优解;

1.2 等式约束问题

等式约束定义如下:

minf(x)s.t.g(x)=0 min f ( x ) s . t . g ( x ) = 0

现在利用拉格朗日乘子法,合并式子:
L(x,a)=f(x)+ag(x) L ( x , a ) = f ( x ) + a g ( x )

x,a x , a 分别求偏导:
xL(x,a)=f(x)+ag(x)=0aL(x,a)=g(x)=0 ∇ x L ( x , a ) = f ′ ( x ) + a g ′ ( x ) = 0 ∇ a L ( x , a ) = g ( x ) = 0

发现第二个式子刚好是其约束条件;

为什么?
现在,我们在平面内投影函数,画出 f(x) f ( x ) 的等高线,以及 g(x)=0 g ( x ) = 0 的边界线;如图示:
蓝色虚线代表了 f(x,y) f ( x , y ) 的等高线;红色代表 g(x,y)=c=0 g ( x , y ) = c = 0 ;
这里写图片描述
回顾:
1. 方向导数是各个方向上的导数
2. 偏导数连续才有梯度存在
3. 梯度的方向是方向导数中取到最大值的方向,梯度的值是方向导数的最大值(垂直方向)
假设 f(x) f ( x ) 的最小值在圆心处,即梯度方向向外; g(x,y) g ( x , y ) 的梯度方向向下;
那么满足条件的值一定是两个函数相切处;如果相交,那么一定还存在一个等高线与红线相切,而且更小;在切点处,两个函数的梯度共线,即 f(x)=ag(x),a<0 f ′ ( x ) = − a g ′ ( x ) , a < 0 ;做简单的变换后: f(x)+ag(x)=0 f ′ ( x ) + a g ′ ( x ) = 0 ,这就是第一个等式啦,同时还需要满足第二个式子;

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

不等式约束问题:

minf(x)s.t.g(x)=0h(x)<=0 min f ( x ) s . t . g ( x ) = 0 h ( x ) <= 0

引入拉格朗日函数:(KTT 条件)
L(x,a,b)=f(x)+ag(x)+bh(x)s.t.g(x)=0bh(x)=0 L ( x , a , b ) = f ( x ) + a g ( x ) + b h ( x ) s . t . g ( x ) = 0 b h ( x ) = 0

这样就将不等式约束变成了等式约束,偏导等于零即可求得最优参数;
minf(x)minxmaxa,bL(x,a,b) min f ( x ) 等 价 于 min x max a , b L ( x , a , b )

对偶变换后有:
maxa,bminL(x,a,b) max a , b min L ( x , a , b )

因为 h(x)<0 h ( x ) < 0 ,所以只有当 bh(x)=0 b h ( x ) = 0 时, L(x,a,b) L ( x , a , b ) 才能取得最大值;否则不满足条件;所以KKT条件是 minf(x) min f ( x ) 的必要条件;

补充:SVM 满足KKT条件:在边界上的点,有 h(x)=0 h ( x ) = 0 ;非边界处,令b=0;

1.4 拉格朗日乘子法问题

当 目标函数的Hess矩阵不正定时(特征值不全为正,或者行列式不为正,那么此时的偏导为0处,并不能确定是否是极值点),所以无法求解;

例子:
求解

{minf=2x2+y22xys.t.x+y=1(6) (6) { min f = 2 x 2 + y 2 − 2 x y s . t . x + y = 1

我们定义 L(x,y,λ)=fλg(x)=2x2+y22xyλ(x+y1) L ( x , y , λ ) = f − λ g ( x ) = 2 x 2 + y 2 − 2 x y − λ ( x + y − 1 )
求偏导可得:
Lx=4x2yλ=0Ly=2y2xλ=0Lλ=xy1=0 { ∂ L ∂ x = 4 x − 2 y − λ = 0 ∂ L ∂ y = 2 y − 2 x − λ = 0 ∂ L ∂ λ = x − y − 1 = 0

我们可以计算原目标函数的Hess矩阵: A=2Lx22Lyx2Lxy2Ly2=[4222] A = [ ∂ 2 L ∂ x 2 ∂ 2 L ∂ x ∂ y ∂ 2 L ∂ y ∂ x ∂ 2 L ∂ y 2 ] = [ 4 − 2 − 2 2 ] 正定矩阵;
再看一个目标函数,方程稍作修改:
{minf=2x2+y2+3xys.t.x+y=1 { min f = 2 x 2 + y 2 + 3 x y s . t . x + y = 1

直接求偏导,发现方程无解;
再看其Hess矩阵: B=[4332] B = [ 4 3 3 2 ] 非正定矩阵;
也就是说,在梯度为零处,我们无法判断是否是极值;


2. 罚函数法

2.1 定义

罚函数法:根据约束条件的特点,构造出惩罚函数,然后加入到目标函数中,将其转化为无约束问题;新目标函数的解与原始目标函数解一致;

2.1.1 等式约束的罚函数法:

{minf(x)s.t.gi(x)=0 { min f ( x ) s . t . g i ( x ) = 0

我们引入一个增广目标函数:
minF(x,σ)=f(x)+σP(x)P(x)=gTg min F ( x , σ ) = f ( x ) + σ P ( x ) P ( x ) = g T g

这里: σ σ 是惩罚因子,取很大的正数, F(x,σ) F ( x , σ ) 是罚函数, σP(x) σ P ( x ) 是惩罚项;
惩罚项的性质:
1. 当 x x 为可行解时,P(x)=0,惩罚项为0;
2.当 x x 不在可行域内,此时σP(x)会很大,那么求得 minF(x,σ) min F ( x , σ ) 必然有 minf(x) min f ( x ) minx,σ[σP(x)] min x , σ [ σ P ( x ) ] 同时成立;所以,当 σ σ 充分大时,增广目标函数的最优值接近于原始问题的最优值;( σ σ → ∞ ,若原问题有解( F< F < ∞ ),则会有 g=0 g = 0

例如:

minf(x)=(x1+x2)2s.t.g(x)=x1+x2=c min f ( x ) = ( x 1 + x 2 ) 2 s . t . g ( x ) = x 1 + x 2 = c

构造罚函数为:
minL(x,σ)=minf(x)+σ||g(x)||22 min L ( x , σ ) = min f ( x ) + σ | | g ( x ) | | 2 2

σ σ 设置的值较大;第一部分优化解,第二部分使得解在可行域内;
如果x不在可行域内,需要我们大步迭代;

2.1.2 不等式约束的罚函数法:

{minf(x)s.t.hi(x)>=0 { min f ( x ) s . t . h i ( x ) >= 0

此时我们构造惩罚项;
(1) P(x)=[min(0,hi(x))]2 P ( x ) = ∑ [ min ( 0 , h i ( x ) ) ] 2 ,可以简单分析出:当 hi(x)>=0 h i ( x ) >= 0 P(x)=0 P ( x ) = 0 ,满足条件;当不在可行域内时,我们需要加大惩罚;
(2) P(x)=αih2i P ( x ) = ∑ α i h i 2 ,其中 αi={0,hi>=01,hi<0 α i = { 0 , h i >= 0 1 , h i < 0

2.1.3 一般形式的罚函数法:

minf(x)s.t.gi(x)=0hi(x)>=0 { min f ( x ) s . t . g i ( x ) = 0 h i ( x ) >= 0

那么罚函数为:
P(x)=[gi(x)]2+[min(0,hi(x))]2 P ( x ) = ∑ [ g i ( x ) ] 2 + ∑ [ m i n ( 0 , h i ( x ) ) ] 2

特别注意:惩罚因子是充分大的数,拉格朗日乘子是一个确定的参数,意义不一样;(当惩罚因子过大时,在求解极小值的过程中,Hess矩阵变成病态矩阵?)

2.2 外罚函数法

对不在可行域内,加大惩罚;上文介绍的就是外罚函数法;
这里写图片描述

2.3 内罚函数法

又称障碍函数法,内点法);在可行域内筑起高墙,迫使值在可行域内,目标函数无法穿越;(只适用于不等式约束
障碍函数一般取:(1)倒数 (2)对数
障碍因子为很小的正数
x x 趋于边界时,那么障碍函数趋于无穷;初始点在可行域内部;
在可行域内时,障碍函数值很小,增广目标函数与原始目标函数等价了;

这里写图片描述


3. 广义乘子法

3.1 等式约束广义乘子法:

{minf(x)s.t.gi(x)=0

广义乘子法是拉格朗日乘子法与罚函数法的结合;

ϕ(x,λ,σ)=f(x)+λTg(x)+12σgT(x)g(x) ϕ ( x , λ , σ ) = f ( x ) + λ T g ( x ) + 1 2 σ g T ( x ) g ( x )

在罚函数的基础上增加了乘子项,首先在 σ σ 足够大的基础上,获得 ϕ ϕ 的极小值,然后在调整 λ λ 获得原问题的最优解;
迭代公式如下
梯度等于零: xϕ(xk,λk,σk)=0 ∇ x ϕ ( x k , λ k , σ k ) = 0 ,即
xf(xk)+λkxgT(xk)+σkxgT(xk)g(xk)=xf(xk)+xgT(xk)(σkg(xk)+λk)=0 ∇ x f ( x k ) + λ k ∇ x g T ( x k ) + σ k ∇ x g T ( x k ) g ( x k ) = ∇ x f ( x k ) + ∇ x g T ( x k ) ( σ k g ( x k ) + λ k ) = 0

λk+1=σkg(xk)+λk λ k + 1 = σ k g ( x k ) + λ k ,则导出拉格朗日乘子法的一阶必要条件;
xf(xk)+λk+1g=0 ∇ x f ( x k ) + λ k + 1 ∇ g = 0

计算方法:
(1)初始值设置: x,λ,σ x , λ , σ
(2)计算梯度为0,获得当前最优值 xk x k ,然后判断是否终止;
(3)是否调整惩罚因子,获得 σk+1 σ k + 1
(4)计算 λk+1=σkg(xk)+λk λ k + 1 = σ k g ( x k ) + λ k

3.2 不等式约束广义乘子法:

思想是:引入松弛变量,化不等式问题为等式约束;

{minf(x)s.t.hi(x)>=0{minf(x)s.t.hi(x)=βi { min f ( x ) s . t . h i ( x ) >= 0 → { min f ( x ) s . t . h i ( x ) = β i

那么原始问题转化成:
minx,λϕ(x,λ,σ)=f(x)+λT(h(x)β)+12σ(h(x)β)T(h(x)β)minx,λ,σ,βϕ(x,λ,σ,β)=f(x)+σ2((h+λσβ)2(λσ)2)β=1σmax{0,σh+λ} min x , λ ϕ ( x , λ , σ ) = f ( x ) + λ T ( h ( x ) − β ) + 1 2 σ ( h ( x ) − β ) T ( h ( x ) − β ) min x , λ , σ , β ϕ ( x , λ , σ , β ) = f ( x ) + σ 2 ( ( h + λ σ − β ) 2 − ( λ σ ) 2 ) β = 1 σ max { 0 , σ h + λ }

首先计算关于 β β 的极小值;因为 β>=0 β >= 0 ,上式是关于 β β 的二次函数,开口向上,对称轴是 h+λσ h + λ σ
β={0h+λσh+λσ<0h+λσ>=01σmax{0,σh+λ} β = { 0 h + λ σ < 0 h + λ σ h + λ σ >= 0 → 1 σ max { 0 , σ h + λ }

这样做的目的是:保证增广目标函数最优解近似于原始问题最优解;
分析:当 σh+λ>=0 σ h + λ >= 0 时, β=h+λσ β = h + λ σ ,则
ϕ(x,λ,σ)=f(x)σ2(λσ)2=f(x)λ22σxϕ(x,λ,σ)=xf(x) ϕ ( x , λ , σ ) = f ( x ) − σ 2 ( λ σ ) 2 = f ( x ) − λ 2 2 σ ∇ x ϕ ( x , λ , σ ) = ∇ x f ( x )

σh+λ<0 σ h + λ < 0 时, β=0 β = 0 ,则
ϕ(x,λ,σ)=f(x)σ2(λσ)2+(σh+λ)22σ=f(x)λ22σ+(σh+λ)22σxϕ(x,λ,σ)=xf(x)+(σh+λ)h(x) ϕ ( x , λ , σ ) = f ( x ) − σ 2 ( λ σ ) 2 + ( σ h + λ ) 2 2 σ = f ( x ) − λ 2 2 σ + ( σ h + λ ) 2 2 σ ∇ x ϕ ( x , λ , σ ) = ∇ x f ( x ) + ( σ h + λ ) ∇ h ( x )

梯度为零计算最优解,发现刚好满足朗格朗日乘子法的必要条件;

3.3 一般约束广义乘子法:

混合等式不等式约束法,计算即可。

  • 75
    点赞
  • 361
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值