拉格朗日乘数

     说起拉格朗日乘子法,印象中其实高中都用过,用来求条件极值。大学中,高等数学里面也曾经提到过,印象依然没有什么改变,就是用来求条件极值。研究僧,老板让看SVM,知道SVM是通过拉格朗日方法把原始问题转化对w、b和a的极大极小问题,之后又在许多论文中看到这货的身影。然而从来没有仔细想过,为什么拉格朗日乘子法可以这么吊。

   直到有次听课,讲到《致命魔术》里面的一句话,Are u watching closely? You just wanna be fooled。

   突然发现,对于看书及看论文过程中接触到的一些方法和公式,I just wanna be fooled。因为这样简单、不费事。然而从来没有想过去watching closely,然而这样做的后果就是...完全不能充分理解各种算法就概念,于是我觉得逼自己去watching closely and don't be fooled

    于是,我觉得先从拉格朗日这货开始,见解可能是错的,但是就算是错误的道路,最起码我也已经在路上。

    wiki上是这样的,假设有函数:,要求其极值(最大值/最小值),且满足条件g(x,y)=c,

c为常数。对不同的值,不难想像出

的等高线。而方程的可行集所构成的线正好是。想像我们沿着的可行集走;因为大部分情况下的等高线和的可行集线不会重合,但在有解的情况下,这两条线会相交。想像此时我们移动上的点,因为是连续的方程,我们因此能走到更高或更低的等高线上,也就是说可以变大或变小。只有当和相切,也就是说,此时,我们正同时沿着和走。这种情况下,会出现极值或鞍点

拉格朗日乘数_第1张图片

点击打开链接当时看的时候也是迷迷糊糊的,其实后来再看,这段解释已经非常的清楚了。不懂的话可以去看下这个视频点击打开链接,个人感觉讲的还是非常不错的,虽然看完还是有些不懂。主要问题还是为什么f和g的梯度平行时为极值。不过下面有一段评论我觉得写得还是蛮好的

“理解拉格朗日乘数法的关键 原来是梯度!
在作为约束条件的等值面g(x,y,z)=constant(二维的话是等值线,更高维就是类似的更高维结构)上函数 w=f(x,y,z) 的梯度的分布是不同的,当w=f(x,y,z)的梯度与g(x,y,z)=constant 等值面不垂直时,自然在所偏的方向还有更大或更小的值,只有垂直时才取到极值,而等值面上的梯度是垂直于等值面的,所以当二者的梯度线性相关时就是取极值处了。”

   看完后我的总结是,这里的极值,并没有明确说是极大值或者极小值(视频里也多次强调),而当f的梯度与等值面垂直的那个瞬间,f沿曲面方向是不变的(对应上图就是曲线方向),而在其他点总是要变的更大或者变的更小,因此当f与g的梯度平行时为极值。当然,对这一概念的理解与对梯度的理解是息息相关的。唉..果然又吃了读书少的亏啊。至于,拉格朗日乘数,其实就是两梯度的线性关系

未完待续...


你可能感兴趣的:(拉格朗日乘数)