首先给出拉格朗日函数:
L(w,b,α)=12∥w∥2−∑i=1Nαiyi(w⋅xi+b)+∑i=1Nαi(公式1)L(w,b,α)=12∥w∥2−∑i=1Nαiyi(w⋅xi+b)+∑i=1Nαi(公式1)
然后对ww求偏导并令其等于0:
在这个式子中用到了标量函数对向量求导,也就是:
∂∂w(12∥w∥2)=w(公式3)∂∂w(12∥w∥2)=w(公式3)
那么这一步是怎么得到的呢?这就涉及到矩阵微分的知识。
实值函数相对于实向量的梯度
相对于n×1n×1向量xx的梯度算子记作,定义为
∇x=def[∂∂x1,∂∂x2,⋅⋅⋅,∂∂xn]T=∂∂x(公式4)∇x=def[∂∂x1,∂∂x2,⋅⋅⋅,∂∂xn]T=∂∂x(公式4)
因此,以n×1n×1向量xx为变元的实标量函数相对于xx的梯度为一个的列向量,定义为
∇xf(x)=def[∂f(x)∂x1,∂f(x)∂x2,⋅⋅⋅,∂f(x)∂xn]T=∂f(x)∂x(公式5)∇xf(x)=def[∂f(x)∂x1,∂f(x)∂x2,⋅⋅⋅,∂f(x)∂xn]T=∂f(x)∂x(公式5)
从梯度的定义可以看出:
1、一个以向量为变元的标量函数的梯度为一个向量。
2、梯度的每个分量给出了标量函数在该分量方向上的变化率。
类似地,实值函数f(x)f(x)相对于1×n1×n行向量xTxT的梯度为1×n1×n行向量,定义为
∂f(x)∂x=def[∂f(x)∂x1,∂f(x)∂x2,⋅⋅⋅,∂f(x)∂xn]=∇xTf(x)(公式6)∂f(x)∂x=def[∂f(x)∂x1,∂f(x)∂x2,⋅⋅⋅,∂f(x)∂xn]=∇xTf(x)(公式6)
根据(公式5)的定义,可以来计算(公式3),设ww是的列向量
12∥w∥2=12wT⋅w=12∑i=1mwi2(公式7)12∥w∥2=12wT⋅w=12∑i=1mwi2(公式7)
可求出梯度∂∂w(12∥w∥2)∂∂w(12∥w∥2)的第k个分量为
[∂∂w(12∥w∥2)]k=∂∂wk(12∑i=1mwi2)=12×2wk=wk(公式8)[∂∂w(12∥w∥2)]k=∂∂wk(12∑i=1mwi2)=12×2wk=wk(公式8)
于是
∂∂w(12∥w∥2)=w(公式9)∂∂w(12∥w∥2)=w(公式9)
类似地,在最小二乘法中也有这个求导,不过里面还用到了链式法则。在此就不赘述了。