通俗易懂 | 拉格朗日乘子法

文章来自:一个宝藏公众号【机器学习炼丹术】
在SVM中,将约束问题转化成非约束问题采用到了拉格朗日乘子法。这个文章就讲一下拉格朗日乘子法与KKT约束是怎么回事。本人不是数学科班出身,但是也只能硬着头皮讲一讲了。

从零理解

现在我们要解决这样一个问题:
\(x^2y=3\)
这个函数距离原点最近的距离是多少。

先画出函数图像:

通俗易懂 | 拉格朗日乘子法

然后想求出最短距离:

通俗易懂 | 拉格朗日乘子法

这里的思路就是,做一个以原点为中心的圆形:

通俗易懂 | 拉格朗日乘子法

不断扩大圆形的半径,直到圆与蓝色的曲线相切:

通俗易懂 | 拉格朗日乘子法

现在。第一次与\(x^2y=3\)相交的点就是距离原点最近的那个点:

通俗易懂 | 拉格朗日乘子法

这个,圆形与曲线相切,且切线既是圆形的切线,也是曲线的相切。

通俗易懂 | 拉格朗日乘子法

这时候,这个切线的垂线其实也就是我们所说的梯度,也叫做等高线的法线,看下面两个图可能会好理解一些:

通俗易懂 | 拉格朗日乘子法


通俗易懂 | 拉格朗日乘子法

那么这个梯度怎么计算呢?先看圆形\(f(x,y)=x^2+y^2\)的梯度:

通俗易懂 | 拉格朗日乘子法

再看曲线的梯度计算\(g(x,y)=x^2y\)的梯度:

通俗易懂 | 拉格朗日乘子法

在相切的时候,两者的梯度方向都在同一条直线上,可以称之为,成比例,这里用比例系数\(\lambda\)来表示:

通俗易懂 | 拉格朗日乘子法

所以我们汇总一下所有的已知信息,得到下面的方程组:

通俗易懂 | 拉格朗日乘子法

可以求解得到:

通俗易懂 | 拉格朗日乘子法

这个就是拉格朗日乘子法的直观理解。

抽象成数学的形式

我们要解决的问题:
\(\min {x^2+y^2}\)
\(s.t. x^2y=3\)

我们会将约束问题通过拉格朗日乘子法转换成非约束问题:
\(\min F(x,y)={x^2+y^2+\lambda(x^2y-3)}\)

【为什么可以这样呢?】
如果求极值,偏导数为0。先对上面的公式进行求偏导数:
\(\frac{\partial F(x,y)}{\partial x}=2x+\lambda 2xy=0\)
\(\frac{\partial F(x,y)}{\partial y}=2y+\lambda x^2=0\)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwfjj.html