这里介绍两个在以后的机器学习算法中经常使用的技巧:拉格朗日乘子(Lagrange multiplier)和梯度下降法(Gradient descent)。
1. 拉格朗日乘子法
拉格朗日乘子被⽤于寻找多元变量在⼀个或者多个限制条件下的驻点。
1.1 等式约束条件
考虑这样一个问题:
求解f(x1,x2)的最大值,其中x1和x2必须满足如下限制条件:g(x1,x2)=0。
求解方法1:将g(x1,x2)=0转化为x2=h(x1)带入f函数,然后使用微分法求解驻点x∗1,然后得到驻点x∗2=h(x∗1)。
这种⽅法的⼀个问题是,把x2显式地表⽰为x1的函数,即找到限制⽅程的解析解很困难。并且,这种⽅法把x1和x2区别对待,这破坏了这些变量之间⾃然存在的对称性。
由此我们引入拉格朗日乘子法。
1.1.1 约束条件g(x)=0的特性
设向量x∈RD,则g(x)=0表示一个D-1维的曲面。
有
∇g(x)正交于此曲面
证明: 考虑⼀个位于限制曲⾯上的点x以及这个点附近同样位于曲⾯上的点x + ϵ。如
果我们在点x处进⾏泰勒展开,那么我们有g(x+ϵ)≈g(x)+ϵT∇>g(x)我们有:g(x+ϵ)=g(x)=0⇒ϵT∇g(x)>≈0ϵ→0⇒ϵT∇g(x)=0
ϵ 平行于曲面,所以 ∇g(x) 正交于曲面。
1.1.2 原问题转化为拉格朗日函数
在g(x)=0上寻找一个x∗,使得f(x)最大。必然有∇f(x∗