[TOC]
无约束优化问题——求导
首先我们复习下:
给定一个目标函数f=Rn→Rn,求出目标函数的最小值,记为:
minf(x)s.t x∈X找出最小值的办法很简单,就是单纯的对f(x)求导,令导数等于0,得到的解x∗就是目标函数的极小值点了
等式约束优化问题——拉格朗日乘子法
首先,梯度方向是函数值增长最快的方向。
给定一个目标函数f=Rn→Rn,在满足约束条件g(x)=0的前提下,使得f(x)有最小值。这个约束问题记为:
min f(x)s.t g(x)=0假如P点是f(x)在约束条件g(x)下的极值点,假设一个参数方程r(t)=(x1(t),x2(t)…xn(t))是一个曲线,它在约束条件的表面,切r(0)=P点,假设h(t)=f(x1(t),x2(t)….,xn(t))=f(r(t))
则有h′(t)=∇f(x)|r(t)⋅r′(t)
又因为P点为极值点,所以h′(t)=∇f|P⋅r′(t)=0
所以f|P在点P处垂直于r(t)。而r(t)是约束面上的任意曲线,所以f|p在P处垂直于g(x)=0
所以∇f|P=λ∇gP
所以∇f(x)=λ∇g(x)→∇f(x)−λ∇g(x)=0
所以令L(x,λ)=f(x)−λg(x)。对它求导,令导数=0得到的点就是极值点.即
{∇f(x)=λ∇g(x)g(x)=0不等式约束优化问题——KKT条件
对于不等式约束的优化
min f(x)s.tg(x)≤0等价于
minx maxλ f(x)+λg(x)s.tλ≥0对于等式约束,由于λg(x)=0恒成立,所以对因子没有约束,但是不等式约束中,我们必须对因子进行约束
对于g(x)≤0,我们引入一个松弛变量a2,使得g(x)+a2=0,这样我们把不等式约束转化为等式约束问题了
对等式约束使用拉格朗日乘子法,有拉格朗日函数
L(x,λ,a)=f(x)+λ(g(x)+a2),则有
{∂L∂x∗=∇f(x∗)+m∑iλi∇gi(x∗)=0(i=1,2,...,m)(1)∂L∂λ=m∑igi(x∗)+a2=0(i=1,2,...,m)(2)∂L∂a=2aλi=0(i=1,2,...,m)(3)对(3)式
λ等于0,a不等于0时,得到g(x)<0,λg(x)=0,可认为g(x)不起约束
a等于0,λ不等于0,得到g(x)=0,所以λ>0。g(x)起到了约束作用
综上,可以发现
λ≥0(4)。乘子大于等于0从目标函数就可以看出,不等式约束小于0,目标函数又是最小化,乘子肯定大于等于0。
λg(x)=0,因为g(x)和λ总有一个为0
所以我们的得到,对不等式约束
min f(x)s.tg(x)≤0
我们有
{∇f(x∗)+m∑iλigi(x∗)=0(i=1,2...m)λigi(x∗)=0(i=1,2...m)λi>0(i=1,2...m)更一般的,有约束问题
minf(x)s.t. gj(x)≤0(j=1,2,...,m)hj (x)=0(j=1,2,...,m)KKT条件为:
{∇f(x)+m∑j=1μj∇gj(x)+l∑k=1λk∇hk(x)=0,(i=1,2,...,n)hk(x)=0(k=1,2,...,l)μjgj(x)=0(j=1,2,...,m)gj(x)<0(j=1,2,...,m)μj≥0(j=1,2,...,m)