1. 拉格朗日乘子法
这个问题我们之前涉及到过,在机器学习实战(基于scikit-learn和TensorFlow)学习心得(23)--逻辑回归 Logistic Regression的时候我们把带约束条件的方程通过拉格朗日乘子法合并为了一个方程.
拉格朗日乘子法具体是什么样的呢?
我们看这么一个式子
在下面两个约束条件的情况下求得f的最小值.求最小值其实就是求偏导数等于0的点.如果只考虑上面的式子因为都是平方项所以最小值是0,而取得最小值的点是(0,0,0),但是显然(0,0,0)并不满足与下面两个约束条件.那如果我们想用梯度法求解极值问题我们就必须想办法把下面的约束条件揉到上面的f中,也就是我们要根据下面的约束条件重新构造一个f.
这时候我们就要用拉格朗日乘子法了.
具体做法是这样的首先我们把两个等式约束条件加一个系数加到f中
接着我们分别对x1,x2,x3求偏导数得到
将x1,x2,x3带回到约束条件中
我们求出了α1和α2,然后我们把α1和α2代到这个式子中我们就可以求出来添加了约束项之后的f了
换句话说
与
是等价的!
我们先看这样一组约束问题
我们先来分析f这个函数,这个函数的等值线是如下图所示的同心圆.
我们再看h1这个函数的图相,看这个函数的图相的时候我们先不要考虑h1=0这种情况,只是单纯的做出h1=x1+x2+1这个函数的等值线
可以看出来,h1这个函数的等值线的情况如上图所以,其中绿色的直线是h1在h1=0的情况下的等值线,也就是我们的约束条件.
现在这个问题就简单多了,我们为什么要求梯度?直线的梯度