直观理解拉格朗日乘子法
拉格朗日乘数法(Lagrange multiplier)是一种寻找多元函数在一组约束下的极值的方法。通过引入拉格朗日乘子,可将d个变量和k个约束条件的最优化为题转化成d+k个变量的无约束优化问题求解。
举个2维的例子来说明:
假设有自变量x和y,给定约束条件g(x,y)=c,要求f(x,y)在约束g下的极值。
我们看到隐函数f(x,y)可以描述为一个二维平面(即图中的一座山),我们可以画出它的等高线,如下图。此时,约束g(x,y)=c由于只有一个自由度,因此是图中的一条曲线(红色曲线所示),这条曲线是在x0y平面上的,由于没有z坐标,所以它可以在任何一个等高线平面,如图中在等高线平面3的L1,在等高线平面4的L2(L1,L2都是曲线g(x,y)=c)。我们的任务就是求f(x,y)在满足g(x,y)=c条件下的最小值,很明显就是找到与曲线L相切的最低的等高线平面。这里约束曲线在这里不可能和等高线相交,一定是相切。我们看到L2是跟平面4是相交的,显然它比平面3要高。
之后,我们根据以下两条性质:
1. 对于约束曲面(在这里由于维度过低,是约束曲线)上的任意点x,该点的梯度正交于约束曲面或者约束曲线。
2.在最优点x*,目标函数在该点的梯度正交于约束曲面。
上面的描述源自周志华《机器学习》,其实就是因为g(x,y)=c的法向量是垂直于切线的,而g(x,y)=c的法向量又等于g(x,y)的梯度(对应第一条),f(x,y)的的梯度是垂直于等高线切线的(对应第2条)。所以在他们俩相切的地方,f(x,y)的梯度和g(x,y)的梯度方向必然相同或者相反(注:如果这段话你不太清楚,可以了解一下: 直观理解偏导数、方向导数和法向量和梯度)
所以存在使得:
注:这里的x是多维向量,在二维情况下等价于上面的f(x,y)。
进而我们可以定义拉格朗日函数:
这时候我们只要令函数L的导数为零,既可以求出让f(x)最小的x(同时满足g(x)=0),
所以我们就把原优化问题转换成了对拉格朗日函数的无约束优化问题。
三、参考资料
【1】周志华《机器学习》