机器学习中的数学之拉格朗日乘子法

首先需要明确的是拉格朗日乘子法是一种凸优化算法,所以目标函数是一个凸函数,约束条件也是一个凸函数。

1.带有等式约束的最小值问题

f(x,y)=x^2+y^2

s.t:\: xy=3      (这是约束条件)

求 f(x,y)  的极小值.

目标函数在三维空间中是一个倒立的圆锥。约束条件是一个双曲线在z轴上无限拉伸形成的一个面。为了方便我们把两个图像投影到二维平面上形成一个等高先图。如下

很容易想到极小值点是在两个面的交点集合之中。 约束面与目标函数相交,相切,相离。先来分析相交。

选取A点。前面说过了拉格朗日乘子法是一种凸优化算法,目标函数是一个凸函数,约束条件也是一个凸函数。而本例也是如此。所以可以明白,内圈的等高线的高度一定是小于外圈的(高度对应函数值)。如果两个面相交于A点,那么这一个点有没有可能是极小值点呢。

 

由图可知A点以下的红线部分与高度更小的等高线相交了。所以很明显A点不是。那么怎么才能让A点以下的部分不超过当前等高线呢,当然是要两个面相切啦。所以B点就是极小值点。

现在我们从相切这一个条件可以推出。f(x,y)=x^2+y^2   与  g(x,y) = xy-3  在B点的法向量平行(在各个方向上的偏导成比例)。\bigtriangledown f(x,y) = \lambda \bigtriangledown g(x,y)  (表示梯度成比例) 即  \frac{\partial f(x,y)}{\partial x} = \lambda \frac{\partial g(x,y)}{\partial x}    ;    \frac{\partial f(x,y)}{\partial y} = \lambda \frac{\partial g(x,y)}{\partial y}     加上  xy=3    一共有了三个等式。

整理一下为    2x=\lambda y;\: \: 2y=\lambda x;\: \: \: xy=3

在本例子中我们试着求解  发现能得到  \lambda =2;x=y=+-\sqrt{3}     这刚好是极小值点。那么我们能不能把这三个等式综合到一个式子里面呢?

我们尝试这样写    F(x,y,\lambda )=x^2+y^2-\omega (xy-3)   。然后对 x,y,\lambda 分别求偏导。然后令其为0。可以得到三个等式

2x=\omega y;\: \: \: 2y=\omega x;\: \: xy=3       这不就是上面的三个等式,完全一样。所以两种求法是等价的。这就是带有等式约束条件的拉格朗日乘子法。

下面给出更一般的情况。那就是有多个等式约束条件的情况。其实上面是一个特例。f(x,y) = x^2+y^2 \: \: \: g(x,y) = xy^2-3\: \: \: h(x,y) = x-y-3  (在知乎上扣了一张等高线图)

现在我们得到的梯度关系不再是目标函数的梯度与约束条件的梯度平行了。而是 目标函数的梯度与约束条件的的组合梯度平行。

即 \bigtriangledown f(x,y) = u\bigtriangledown g(x,y)+\lambda \bigtriangledown h(x,y)  。

我们试着从代数的角度看待拉格朗日乘子法 。对于  f(x,y) = x^2+y^2 \: \: \: g(x,y) = xy^2-3\: \: \: h(x,y) = x-y-3

求极小值。

\dpi{150} \left\{\begin{matrix}\: f(x,y)=x^2+y^2\\ xy^2=3\\ x-y=3 \end{matrix}\right.    这是我们的目标函数。求在约束条件下的  min\: f(x,y)

我们建立拉格朗日函数  F(x,y,\lambda, \eta ) = x^2+y^2+\lambda (xy^2-3)+\eta (x-y-3)。如果我们求在约束条件下拉格朗日函数 的极小值那么可以得到如下联立关系。

\left\{\begin{matrix} min \: F(x,y,\lambda, \eta )\\ F(x,y,\lambda, \eta )=x^2+y2+\lambda (xy^2-3)+\eta (x-y-3) \\ xy^2-3=0 \\x-y-3=0 \end{matrix}\right.         

显然在约束条件下  min\: F(x,y,\lambda ,\eta )=min\: f(x,y)     那么我们就试着求  min\: F(x,y,\lambda ,\eta )  我们直接对  F(x,y,\lambda ,\eta )  求偏导,然后另其为0(凸优化问题) 。但是min\: F(x,y,\lambda ,\eta )这个也有约束条件啊,能直接求偏导吗?

不管了直接求导 。得到 \left\{\begin{matrix} \frac{\partial F}{\partial x}=2x+\lambda y^2+\eta=0 \\ \frac{\partial F }{\partial y}=(2+2\lambda x+\eta )y=0 \\ \frac{\partial }{\partial \lambda }=xy^3-3=0 \\ \frac{\partial }{\partial \eta }=x-y-3=0 \end{matrix}\right.    我们发现第3,4个等式怎么有点眼熟。这不就是约束条件吗。说明在极值点处任然满足约束条件。

所以   \left\{\begin{matrix} min\: f(x,y)\\ xy^2=3\\ x-y=3 \end{matrix}\right.   与    \left\{\begin{matrix} min \: F(x,y,\lambda, \eta ) \\ xy^2-3=0 \\x-y-3=0 \end{matrix}\right.等价。而\left\{\begin{matrix} min \: F(x,y,\lambda, \eta ) \\ xy^2-3=0 \\x-y-3=0 \end{matrix}\right.与没有任何约束条件的拉格朗日函数  F(x,y,\lambda ,\eta ) 求min\: F(x,y,\lambda ,\eta )等价。

最后我们就把带有约束条件的优化问题,转化为了没有约束条件的优化问题,这样就可以直接求偏导求解。

下面看看带有不等式约束的最优化问题

给出目标函数   \left\{\begin{matrix} min\: f(x)\\g(x)<=0 \end{matrix}\right. 。 (其中x为向量,约束条件也可以有多个) 。 然后构造拉格朗日函数 L(x,\lambda ) = f(x)+\lambda g(x) (其中\lambda>=0)。

可以知道 \left\{\begin{matrix} \underset{\lambda }{max}\: L(x,\lambda )\\ g(x)<=0 \\ \lambda >=0 \end{matrix}\right.\Rightarrow \underset{\lambda }{max}\: L(x,\lambda )=f(x)    .我们把 L(x,\lambda ) = f(x)+\lambda g(x) 中的x看作常数\lambda是自变量。因为g(x)<=0;\lambda >=0  所以  \lambda g(x)<=0.  则 \underset{\lambda }{max}\: L(x,\lambda ) = f(x)

那么可以很容易得到   {\color{Red} \underset{x}{min}\: \underset{\lambda }{max}\: L(x,\lambda ) =\underset{x}{min} f(x)}    。

接下来我们再看另一个式子  {\color{Red} \underset{\lambda}{max}\: \underset{x }{min}L(x,\lambda )}  (这是原问题的对偶问题)。下面我们开始对这个式子进行变型。

\underset{\lambda}{max}\: \underset{x }{min}L(x,\lambda )=\underset{\lambda }{max}(\underset{x}{min}\: f(x)+\underset{x}{min}\: \lambda g(x))

={\color{Purple} \underset{\lambda }{max}\: \underset{x}{min}\: f(x)}+\underset{\lambda }{max}\: \underset{x}{min}\lambda g(x)= {\color{Purple} \underset{x}{min}\: f(x})+\underset{\lambda }{max}\: \underset{x}{min}\lambda g(x)   (这里的推导存疑)

 

结果我们得到了这样一个等式 \underset{\lambda}{max}\: \underset{x }{min}L(x,\lambda )=\underset{x}{min}\: f(x)+\underset{\lambda }{max}\: \underset{x}{min}\lambda g(x)

接下来我们讨论一下 {\color{Blue} \underset{\lambda }{max}\: \underset{x}{min}\lambda g(x)} 的值。首先把 \lambda 看作常量,x看作自变量。可以得到 \underset{x}{min}\: \lambda g(x) = \lambda \: \underset{x}{min}\, g(x)

接下来把x看作常量,\lambda作为变量。令 p(\lambda ) = \lambda \underset{x}{min}\: g(x)。根据约束条件 \left\{\begin{matrix} g(x)<=0\\\lambda >=0 \end{matrix}\right. 可以得到 p(\lambda ) 的值域 (-\infty ,0]   。

那么就能得到  {\color{Blue} \underset{\lambda }{max}\: \underset{x}{min}\lambda g(x)}=\underset{\lambda }{max} \: p(\lambda )=0  。这个的等式成立的条件是 g(x)=0 或者 \lambda =0。最后我们得到\left\{\begin{matrix} \underset{\lambda}{max}\: \underset{x }{min}L(x,\lambda ) =\underset{x}{min}\, f(x)=\underset{x}{min} \: \underset{\lambda }{max}L(x,\lambda )\\\lambda =0\: or\: g(x)=0 \end{matrix}\right.                                                

假设我们现在解出了一个最优解 \chi。显然得到\underset{x}{min}\: f(x) = f({\color{Magenta} \chi })

那么我们把\chi带入最前面的等式 \underset{\lambda }{max}\: L(x ,\lambda ) = f({\color{Magenta} \chi })  。联立前面的等式\underset{\lambda}{max}\: \underset{x }{min}L(x ,\lambda ) =\underset{x}{min}\, f(x) = f({\color{Magenta} \chi })

得到  \underset{\lambda}{max}\: \underset{x }{min}L(x,\lambda ) =\underset{\lambda }{max}L(x,\lambda )=\underset{x}{min}\, f(x) = f({\color{Magenta} \chi })

最后可知 L({\color{Magenta} \chi },\lambda ) = \underset{x}{min}L(x,\lambda )  这个式子说明了什么? 说明了我们的目标极小值点是拉格朗日函数的极小值点。

最后总结一下思想

第一步我们把目标函数求解问题转换为,拉格朗日函数求极大极小问题 即 {\color{Red} \underset{x}{min}\: \underset{\lambda }{max}\: L(x,\lambda ) =\underset{x}{min} f(x)}

但是发现这样也不好直接求。于是我们试着去求拉格朗日函数的对偶问题。即{\color{Red} \underset{\lambda}{max}\: \underset{x }{min}L(x,\lambda )}。然后开始对{\color{Red} \underset{\lambda}{max}\: \underset{x }{min}L(x,\lambda )} 进行一系列的变形操作。既然我们要用对偶问题去求原问题。那么就要让对偶问题与原问题的最优值点相同。结果发现 \lambda g(x)=0 时等价,并且最优值点也正好是拉格朗日函数关于变量x的极小值点。最后我们就可以根据这些特点,求出最优值点。联立以下式子求解即可  \left\{\begin{matrix} \frac{\partial L(x,\lambda )}{\partial x}=0\\ \lambda g(x)=0 \\ \lambda >=0 \\ g(x)<=0 \end{matrix}\right.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值