目录
- what
- 直观理解法
- 高数书上的解法
学习SVM的过程中遇到了这个拉格朗日乘数法,之前学高数的时候也学过,不过看到视频里的直观理解法和高数书上的解法有些不同,于是在这里把这两种方法记录下来,也当做是一次理解的过程。
what
- 先讲一下无条件极值,它是说没有约束条件下,单纯求一个函数极值的问题。比如我们高中就学过的求一个函数的极大值极小值,通常来说对该函数求导并使其等于0就可以得到该函数的极大值点和极小值点。
- 与无条件极值相对的还有一个叫条件极值问题。首先什么是拉格朗日乘数法,它是解决条件极值问题的方法,举个很简单的例子,求表面积为a方的立方体的最大体积。在这个例子中,条件是表面积为a方,所要求的的极值是立方体的最大体积。你发现没法把这个条件和咱们的目标单独分离开,条件约束着咱们目标的实现,但是不得不承认,的确存在着这么一个极值,它还真就是在这个条件约束下的最大体积。那我们如何求解呢?
直观理解法
- 见下图:
附上视频地址:https://www.bilibili.com/video/BV1ZE411p73x?p=1 - emmm,视频讲的其实比较好,但是对我来说比较吃力,于是我困惑了好久,到后来才明白其中的含义,下面讲解一下上图中内容。
- 首先将注意力放到左上角的图中,放大图见下:
图片地址:https://www.zhihu.com/question/38586401
图中坐标x和y是相互独立的变量,红线呢,表示符合g(x,y)=c的(x,y)坐标对。图中的虚线,虚线是等值线。咱们要找的就是图中某个点(x,y),该坐标代入公式后既符合g(x,y)=c,又同时该点是所有符合这个要求的点中坐标带入f(x,y)得到的函数值最小的点。由此可知这个点只有一个,而且这个点一定落在红线上,那么问题就是红线上点这么多,究竟哪个才是目标点呢?
答案是与等高线相切的点,因为倘若不相切的话就能沿着红线找到f(x,y)更小的点。
那倘若符合相切条件的点不止一个呢?这种情况其实是存在的,如果真出现这种多解情况,那就将坐标全都带入f(x,y),然后根据题目要求选择最大或者最小的就好了。 - 现在既然知道是相切的点了,那就好办了,相切的点存在一个共性,那就是梯度是共线的,别管切点对于虚线和红线来说的梯度分别是多大,反正这两个梯度共线就完事了,既然共线那么一切就迎刃而解。
- 即在最优化解的时候:∇f(x,y)=λ(∇g(x,y)-C) (其中∇为梯度算子; 即:f(x,y)的梯度 = λ* g(x,y)的梯度,λ是常数,可以是任何非0实数,表示左右两边同向。)
- 即:▽[f(x,y)+λ(g(x,y)−c)]=0,λ≠0,哇!此式子一出现,豁然开朗了吧!这个式子的梯度为0,岂不就是说设F(x,y)=f(x,y)+λ(g(x,y)−c),那么F(x,y)的梯度为0 ??
- 它的梯度为零直接导致F(x,y)对于变量x和y的偏导数为0。好了,最终得出结论,该点对于任何一个变量的偏导数都为0!
- 想在这里再解释一下梯度为0的意思,讲解梯度要用高一维度的方法来讲解,讲两个变量构成的函数梯度为0的情况就要用3D图形来讲解。 鉴于本人绘图技术一般,所以我直接说例子了,平底锅,想象一下一个平底锅放到xyz(z轴纵轴表示f(x,y),x和y为变量)坐标系里,底面与xoy面平行,我告诉你,这个底面上的点构成的开区间里面任意一点都是梯度为0的,即对于x轴也好,y轴也好的偏导数都等于0,你想呀,把这个锅底投影到f(x,y)ox和f(x,y)oy面上,是不是都是一条直线?偏导数为0。这就是梯度为0的几何解释,一定要记住,讲偏导数和梯度都要用高一维度的方法来讲。(导数其实就是一个变量情况下的偏导数,要用二维坐标图来讲。)
高数书上的解法
- 见下图
我觉得教材有个地方写的不清楚,就是它说根据隐函数存在定理那个地方,其实教材是用两个变量来举例的,所以可以这么写,但是就像我刚才说的那个例子,表面积为a方的立方体的最大体积,这个例子有长宽高三个变量,这个时候虽然可以用隐函数存在定理(它适用于多元情况),但是这样就没法利用上图中提到的“由一元可导函数取得极值的必要条件”,因为文中是两元,根据前提等式条件消除了一元,然后就可以利用一元函数求导得到极值了,这其实是一个emmm不具有普适性的说法。倘若是长宽高三元呢?只给你一个条件,表面积为a方,无论如何也不可能根据这个等式消除两元然后使用一元可导求极值的。而看上图8-7的等式的话,以及提到的辅助函数,其实L辅助函数就是文章开头提到的方法中的F,然后8-7将L对于每个变量都求了一次偏导,使其等于0,其实这恰恰是咱们用第一种方法得到的结论,即梯度为0,所以对于每个变量的偏导=0。只不过高数书中的推导过程有些瑕疵。 - 如有瑕疵还请指正~