拉格朗日乘子法、罚函数法、乘子罚函数法
来源:互联网 发布:网络扫描器是什么 编辑:程序博客网 时间:2024/04/27 20:50
- 拉格朗日乘子法
- 1 无约束问题
- 2 等式约束问题
- 3 不等式约束问题KTT条件
- 4 拉格朗日乘子法问题
- 罚函数法
- 1 定义
- 2 外罚函数法
- 3 内罚函数法
- 广义乘子法
- 1 等式约束广义乘子法
- 2 不等式约束广义乘子法
- 3 一般约束广义乘子法
- 拉格朗日乘子法
本文简单总结一些相关概念,具体证明以后再补充;
1. 拉格朗日乘子法
2. 罚函数法:外罚函数与内罚函数法
3. 广义乘子法
1. 拉格朗日乘子法
1.1 无约束问题
无约束问题,定义为
1.2 等式约束问题
等式约束定义如下:
现在利用拉格朗日乘子法,合并式子:
对
发现第二个式子刚好是其约束条件;
为什么?
现在,我们在平面内投影函数,画出f(x) 的等高线,以及g(x)=0 的边界线;如图示:
蓝色虚线代表了f(x,y) 的等高线;红色代表g(x,y)=c=0 ;
回顾:
1. 方向导数是各个方向上的导数
2. 偏导数连续才有梯度存在
3. 梯度的方向是方向导数中取到最大值的方向,梯度的值是方向导数的最大值(垂直方向)
假设f(x) 的最小值在圆心处,即梯度方向向外;g(x,y) 的梯度方向向下;
那么满足条件的值一定是两个函数相切处;如果相交,那么一定还存在一个等高线与红线相切,而且更小;在切点处,两个函数的梯度共线,即f′(x)=−ag′(x),a<0 ;做简单的变换后:f′(x)+ag′(x)=0 ,这就是第一个等式啦,同时还需要满足第二个式子;
1.3 不等式约束问题(KTT条件)
不等式约束问题:
引入拉格朗日函数:(KTT 条件)
这样就将不等式约束变成了等式约束,偏导等于零即可求得最优参数;
对偶变换后有:
因为
补充:SVM 满足KTT条件:在边界上的点,有
h(x)=0 ;非边界处,令b=0;
1.4 拉格朗日乘子法问题
当 目标函数的Hess矩阵不正定时(特征值不全为正,或者行列式不为正,那么此时的偏导为0处,并不能确定是否是极值点),所以无法求解;
例子:
求解{minf=2x2+y2−2xys.t.x+y=1
我们定义L(x,y,λ)=f−λg(x)=2x2+y2−2xy−λ(x+y−1)
求偏导可得:⎧⎩⎨⎪⎪⎪⎪∂L∂x=4x−2y−λ=0∂L∂y=2y−2x−λ=0∂L∂λ=x−y−1=0
我们可以计算原目标函数的Hess矩阵:A=⎡⎣⎢∂2L∂x2∂2L∂y∂x∂2L∂x∂y∂2L∂y2⎤⎦⎥=[4−2−22] 正定矩阵;
再看一个目标函数,方程稍作修改:
{minf=2x2+y2+3xys.t.x+y=1
直接求偏导,发现方程无解;
再看其Hess矩阵:B=[4332] 非正定矩阵;
也就是说,在梯度为零处,我们无法判断是否是极值;
2. 罚函数法
2.1 定义
罚函数法:根据约束条件的特点,构造出惩罚函数,然后加入到目标函数中,将其转化为无约束问题;新目标函数的解与原始目标函数解一致;
2.1.1 等式约束的罚函数法:
我们引入一个增广目标函数:
这里:
惩罚项的性质:
1. 当
2.当
例如:
minf(x)=(x1+x2)2s.t.g(x)=x1+x2=c
构造罚函数为:minL(x,σ)=minf(x)+σ||g(x)||22
σ 设置的值较大;第一部分优化解,第二部分使得解在可行域内;
如果x不在可行域内,需要我们大步迭代;
2.1.2 不等式约束的罚函数法:
此时我们构造惩罚项;
(1)
(2)
2.1.3 一般形式的罚函数法:
那么罚函数为:
特别注意:惩罚因子是充分大的数,拉格朗日乘子是一个确定的参数,意义不一样;(当惩罚因子过大时,在求解极小值的过程中,Hess矩阵变成病态矩阵?)
2.2 外罚函数法
对不在可行域内,加大惩罚;上文介绍的就是外罚函数法;
2.3 内罚函数法
又称障碍函数法,内点法);在可行域内筑起高墙,迫使值在可行域内,目标函数无法穿越;(只适用于不等式约束)
障碍函数一般取:(1)倒数 (2)对数
障碍因子为很小的正数
当x 趋于边界时,那么障碍函数趋于无穷;初始点在可行域内部;
在可行域内时,障碍函数值很小,增广目标函数与原始目标函数等价了;
3. 广义乘子法
3.1 等式约束广义乘子法:
广义乘子法是拉格朗日乘子法与罚函数法的结合;
在罚函数的基础上增加了乘子项,首先在
迭代公式如下:
梯度等于零:
令
计算方法:
(1)初始值设置:
(2)计算梯度为0,获得当前最优值
(3)是否调整惩罚因子,获得
(4)计算
3.2 不等式约束广义乘子法:
思想是:引入松弛变量,化不等式问题为等式约束;
那么原始问题转化成:
首先计算关于
这样做的目的是:保证增广目标函数最优解近似于原始问题最优解;
分析:当
当
梯度为零计算最优解,发现刚好满足朗格朗日乘子法的必要条件;
3.3 一般约束广义乘子法:
混合等式不等式约束法,计算即可。
- 拉格朗日乘子法、罚函数法、乘子罚函数法
- 外部罚函数法
- 外罚函数与内罚函数
- 罚函数法求解约束问题最优解
- matlab 罚函数法解决非线性规…
- 【学术】外罚函数与内罚函数
- 规划问题(单纯形法,非线性规划,以及罚函数的引入)
- 罚函数(penalty function)的设计
- 约束规划问题的罚函数解法
- MatLab建模学习笔记10——利用罚函数求解非线性规划问题
- 匈牙利命名法之罪与罚--与面向对象思想违背
- 电子废物管理法明2月实施 可罚50万元
- c++中的函数指针,静态函数法
- 二分函数逼近法
- 递归法设计函数
- 另一种阶乘 函数法!
- 银行系统函数法
- 函数表驱动法
- SRS提供的librtmp
- Android Activity调用栈分析
- 计算x^p mod m 利用倍增法实现
- 仿淘宝购物车
- SpringMVC 使用@ResponseBody返回json 中文乱码
- 拉格朗日乘子法、罚函数法、乘子罚函数法
- linux学习方法
- 变与不变
- js拦截全局ajax请求
- 证书相关
- 程序员们骨子里并不善于表达自己,不辞辛劳而又默默无,凡参与者均可获得电话卡一张!
- ES6学习笔记
- 算法爱好者——从指定范围中寻找幸运数 ?待解决
- vim常用命令之多行注释和多行删除