拉格朗日乘子_拉格朗日乘子法的一个极简解释

6ab99ba2f9a3ac7f28a998da00fecf04.png

拉格朗日乘子法大家都学过,用来求带约束条件的极制问题,用起来着实简单,只是上学的时候只学会怎么用了,到底为什么这样能行是从来没想过的。最近在看B站机器学习课程,看到SVM这一段,用到拉格朗日乘子法,老师讲了半天,也不是很直观,有那么点感觉但还是没透,于是上网查了半天,看了各种解释,算是有点明白了,但是呢,还是不是很好理解,比如某乎上大多数人解释都是用函数的等高线与约束曲线相切的点为极值点,所以在极值点有相同的切向量来解释,虽然已经比较直观了,但还是需要想半天才行。我结合机器学习老师的讲课和网上的这些资料,突然想到了一个极简单的解释,简单到不需要进行什么公式推导,一图可懂,虽然不是很严谨,但绝对简洁、直观。

设要求极值的方程是f(X) , 约束是g(X)=0,其中X是变量向量(x1,x2,x3...xn),有n个未知数。

现在我们画个图,和一般的画图方法不同,我这个图的横坐标是g=g(X),纵坐标是f=f(X),这个是重点。 这样每个参数X对应一个点(g,f),比如可以画成这个样子。

a9fb0f0880a195a40b4982bd3326ccc8.png

现在我们要求的就是g=0这条线上的f(X)的极值以及此时的X。

我们知道要求全局极值是很容易的,对X求导令其为0解方程就行了,可是现在需要求的是g=0这条线上的极值,它对X的导数可不为0。

接下来我们再看看拉格朗日乘子函数

L=f+λ*g,我们把它也画到这个图上。

a5c657683b1d55906515948d4e029717.png

973ab02e988fd002219b095a8391270a.png

可以看到,当λ>0时,图像右边会向上斜,左边会向下斜,λ<0时则相反,只有在g=0上的点是不变的。当λ改变时,L的全局极值点位置也变了。在这个图的例子中,当λ从大变到小时,全局极值点就会从右边变到左边,那么在变化的过程中,总会有那么一个λ*,可以让全局极值点刚好过g=0。

a85588be0b423aa030f7df8e4b7c5018.png

好了,现在L(X,λ)的全局极值点的位置就成为了λ的函数了,可以愉快的用对X求导的方式解得L(X,λ)的全局极值点时参数X的值 X(λ)了。

此时的X(λ)是以λ为变量的函数,当然,变量的数量从原来的n个变成了λ的维数也就是约束方程的数量,一般这个数量远小于n,比如很多情况下就一个。

现在只需要再把X(λ)代入约束方程g(X(λ))=0,求解出满足约束方程的λ*就可以了。

从上面也可以看出L(λ*)在g=0时,待求极值即为全局极值,此时L对X的导数为0,也就是f(X)和g(X)在此处对X的导数是成一个比例(或者说线性相关)的,它们的比例(或者说转换矩阵)就是λ*。也就是很多文章中说的函数 f 的等高线与约束曲线相切。

总结一下,拉格朗日乘子法求约束条件下的极值,就是通过构造拉格朗日乘子函数L[λ],使得 L[λ]的全局极值点成为 λ的函数,并且极值点轨迹一定会通过约束条件下的极值点,这样通过求导法求出全局极值函数后,再代入约束方程就可求得约束条件下的条件极值点刚好成为全局极值点下的λ*,再进一步求出此时原函数的参数和约束条件下的极值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值