拉格朗日乘子法用于有条件的优化,具体的优化的场景如下:
mins.t. f(x) h(x)=0 g(x)≤0 无约束条件
这个场景下就是我们平常求的函数极值问题,可以直接使用求导方式,根据导数为0的来判断函数极值,举个简单的例子:
可以很容易得到函数的导数f′(x)=2x=0 ,并且我们另其等于0,最终可以得到在x=0 出取得函数的最小值。
无约束的条件的极值求解是比较容易的。
等式约束条件
这里我们需要分情况讨论,首先我们来看条件为h(x)=0的情况,例子如下:
mins.t. f(x)=x1+x2 h(x)=x12+x22−2=0 首先我们可以绘制出f(x)=x1+x2的等高线,等高线的概念是指在这条线上,f(x)的函数值是一样的,如图中的 线所示,接下来对f(x)进行求导∇f(x),得到下面的结果:
∂x1∂f(x1,x2)=1 ∂x2∂f(x1,x2)=1 所以最终我们得到f(x)的导数为:
∇f(x)=(11) 对应的是图1中橙色的向量。
下面我们看下∇h(x)
∂x1∂h(x1,x2)=2x1 ∂x2∂h(x1,x2)=2x2 最终得到的h(x)的导数为
∇h(x)=(2x12x2) 这里对应的图1中紫色的向量,这个向量是垂直于圆周边缘的切线,沿着法线的方向。
那么现在我们的优化问题是什么呢,从图上可以看出,该问题就转化为在红色的圆上找一点,使得f(x)的值最小,显然,从图上可以看到在第一象限和第四象限中中紫色切线的位置对应着f(x)的极值,显然在第一象限中对应的是最大值,第四象限是最小值,这个最小值就是我们要找的。
梯度对应的是函数下降最快的方向,沿着梯度的正方向是函数增加最快的方向,负方向是函数减小最快的方向,那么现在我们要保证的每一次的递进都是沿着函数梯度减小的方向,需要满足一定的条件,从圆上 的任选一点x0,然后取一个很小的数值Δx,要满足的条件如下:
f(x0+Δx)<f(x0) 因为要求的是f(x)的最小值,所以移动了Δx之后的值要小于原来的值。
那么要如何保证这个成立呢?
Δx⋅(−∇xf(x))>0 这个是什么意思呢,涉及到向量的点乘问题,如下图:
当满足向量点乘大于0的时候,两个向量处于相同的方向。满足上面的式子我们就可以保证是沿着梯度下降的方向。
a⋅b=∥a∥∥b∥cosθ 回到对约束条件的h(x)求导,对应的是梯度是图中紫色的方向,可以看到它是沿着边缘切线垂直的方向,也就是沿着法线的方向。可以得到下面这个式子:
Δx⊥∇xh(x) 同样我们可以得到,下面两个式子:
h(x0+λΔx)=0Δx⋅(∇xh(x))=0 第一个式子显然成立,我们是在圆上找最小的点,第二个式子是因为两个向量垂直,那么它们的点乘结果为0。
现在我们来看最优的点位于第四象限,可以很直观得到最优的情况下,f(x)和h(x)两个函数的梯度是平行的,平行向量之间是满足一定的数量关系,也就是说满足如下等式:
−∇f(x)=λ∇h(x) 最后我们得到上面这个结论,二者的梯度满足一定的数量关系,其中λ>0。
回想我们的使用拉格朗日乘子法时,首先设了朗格朗日函数:
L(x)=f(x)+λh(x) 然后对拉格朗日函数求导:
∂x∂L=∇xf(x)+λ∇xh(x)=0 ∂λ∂L=h(x)=0 可以得到,第一个式子就是我们上面根据图示得到的式子,而第二个式子是我们要求的约束条件。
这样就解释了为什么我们要以那样的形式来设置拉格朗日函数。
不等式约束条件
现在我们来看不等式的约束方式。不等式的约束我们要分为两种情况来讨论:
第一种情况
这种情况是函数f(x)的最优解是包含在限定范围内的,例子如下:
mins.t. f(x)=x12+x22 g(x)=x12+x22−1≤0 这个场景下从下图的示例中可以看到,f(x)的最小值是包含在g(x)所限定的取值范围内的,所以这个场景下我们只需要对f(x)求导,然后令其为0就可以了,解出相应的x∗ ,带入f(x)即为最小值。
第二种情况
这种情况是说最优解是在限定范围之外的,例子如下:
mins.t. f(x)=(x1+1.2)2+(x2+1.2)2 g(x)=x12+x22−1≤0 这个时候我们可以看到,f(x)的理论上的最优解是在限定函数g(x)的可取区域之外的,f(x)的等高线向外延伸时,f(x)的值是越来越大,当等高线和限定函数g(x)的边界相切的时候,f(x)取到它的最小值。
所以这个时候我们就把不等式的约束条件转化成了等式的约束条件,在g(x)=0的边界上找到f(x)的最优解。
由第一种情况和第二种情况共同构成了不等式约束的所有求解情况。
KKT条件
首先呢,明确下KKT条件是用于不等式约束的极值求解问题。
KKT条件如下:(1) ~ (4)
∇xL(x∗,λ∗)=0(1) 这个条件对应的就是−∇f(x)=λ∇h(x)
λ∗≥0(2) 保证的是−∇f(x)=λ∇h(x)这两个向量是同一个方向的
λ∗⋅g(x∗)=0(3) 这个式子要分两种情况来看,当λ∗=0时,L(x)=f(x),对应的是第一种情况,此时没有约束条件,最优解就是f(x)的最优解;当g(x)=0的时候,对应的就是第二种情况,最优解在g(x)的边界。
g(x∗)≤0(4) 这个条件就是我们的限制条件。
参考文献
[1]秦曾昌.机器学习算法精讲.小象学院,2018.