ML优化拉格朗日与KKT

拉格朗日乘子法

拉格朗日乘子法(Lagrange multipliers)是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子,可将有d 个变量与k 个约束条件的最优化问题转化为具有d+k 个变量的无约束优化问题求解

基本的拉格朗日乘子法就是求函数f(x1,x2,...)g(x1,x2,...)=0 的约束条件下的极值的方法。主要思想是将约束条件与原函数联系在一起,使能配成与变量数量相等的等式方程,从而求得原函数极值的各个变量的解。


例子:假设需要求极值的目标函数为f(x) ,约束条件为ϕ(x,y)=M

g(x,y)=Mϕ(x,y) ,定义一个新函数F(x,y,λ)=f(x,y)+λg(x,y)

求偏导:

Fx=0Fy=0Fλ=0

求出x,y,λ 的值,代入即可得到目标函数的极值。


机器学习中的拉格朗日乘子法,一般用于求解约束优化问题的方法,当目标函数是凸函数时,求解最小值,使用拉格朗日乘子法求得的局部最优解就是全局最优解。类似的,在凹函数中,求得的最大值,局部最大解就是全局最大解。

在没有约束条件下,直接使用求导取指即可,但是有了约束条件后,就不能这样任意的小了,需要首先满足约束条件之后再求解。

在二维空间中求解,假设约束条件是一个曲线:这里写图片描述

环线是目标函数的取值的等高线,需要紧贴约束线来满足约束条件求得理想值。

图中可以很清晰的看出来,与约束条件相切的等高线正合适。至于其他的与约束条件曲线相切的都不能考虑,因为这种取值一部分是符合约束条件的,一部分不能满足约束条件。

曲线相切,实际上就是法线向量平行,同方向或者反方向。最优解处,f和g的斜率平行。也就是说,存在一个非零实数与其中一个斜率相乘,等于另外一个曲线的斜率。这个实数称之为λ ,或者λ 随便啦

[f(x,y)+λ(g(x,y)c)]=0

一旦求出λ的值,将其套入下式,易求在无约束极值和极值所对应的点。

F(x,y)=f(x,y)+λ(g(x,y)c)

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

定义拉格朗日函数:L(x,λ)=f(x)+λg(x) 将其对x 的偏导数xL(x,λ) 置零即得式子f(x)+λg(x)=0 ;同时对λ 的偏导数λL(x,λ) 置零即得约束条件g(x)=0 。所以原约束问题转换成了对拉格朗日函数L(x,λ) 的无约束优化问题。

KKT

这里写图片描述

KKT

现在考虑不等式g(x)0 ,如上图,此时最优点x 或者在g(x)<0 也就是环形区域内;或者在g(x)=0 环形线上。

对于g(x)<0 的情况,约束g(x)0 不起作用,可以直接通过条件f(x)=0 来获得最优点,这里等价于将λ=0 之后求解xL(x,λ)=0

g(x)=0 的情况类似与上图左侧,但是有一些区别。在拉格朗日乘子中,约束条件g(x)f(x) 保持梯度平行即可,可就是说参数λ 无关正负;到了这里,我们好好分析一下,假设两者的梯度是同方向的,都是向外(就是环线区域外,相反方向当然也可以)。我们都知道,函数是按沿着梯度方向增大,所以f(x) 在区域外的值是大于区域内的值,也就是说,区域内的值是小值。我们的目标就是在约束条件下求minf(x) ,这里区域内是满足约束条件的,所以最优值显然不在环线上取,而是在区域内取。如果我们非要在环线上取怎么办?两个函数的梯度方向相反。这样才符合我们的认知嘛,梯度相反,同一个方向一个变小一个变大,环线是临界值,很符合人们的罗辑思维。

接着说不等式约束条件,整合上面的两种情况:

  • g(x)<0 ,约束条件不起作用,使λ=0
  • g(x)=0 ,约束条件使得λ>0

所以必有λg(x)=0

KKT条件推出来了:

g(x)0;λ0;μjgj(x)=0;

推广

推广到多个约束,考虑有m个等式约束和n个不等式约束,优化问题

minxf(x)s.t.hi(x)=0  (i=1,...,m),gj(x)0  (j=1,...,n).

引入拉格朗日乘子λ=(λ1,λ2,...,λm)Tμ=(μ1,μ2,...,μn)T ,相应的拉格朗日函数为

L(x,λ,μ)=f(x)+i=1mλihi(x)+j=1nμjgj(x)

引入的拉格朗日乘子条件与KKT条件为:

hi(x)=0;λi0;gj(x)0;μj0;μjgj(x)=0.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章