缘由
机器学习的很多算法表示中都采用了矩阵的形式,对算法的描述分析中就涉及到了对向量、对矩阵的求导。
比如SVM、linear regression的推导等。
布局
矩阵求导有两种布局:
- 分子布局(numerator layout)
- 分母布局(denominator layout)
下面用向量y对标量x求导简单说明这两种布局的区别。
我们假定所有的向量都是列向量。
y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮ym⎤⎦⎥⎥⎥⎥⎥
在分子布局下:
∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x∂y2∂x⋮∂ym∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
在分母布局下:
∂y∂x=[∂y1∂x∂y2∂x⋯∂ym∂x]
在下面的推导中,都将采用分母布局,也就是向量(列)对标量求导的结果都是行向量。(采用这种布局的主要原因是向量对向量的求导就是一个矩阵了)
求导的类别
求导大致分为5类:
- 向量对标量
- 标量对向量
- 向量对向量
- 矩阵对向量
- 向量对矩阵
矩阵求导的大致规则如下:
对标量求导结果都要转置,而标量对向量或者矩阵求导的话位置不变。
简单来说,上变下不变。
向量对标量求导:
∂y∂x=[∂y1∂x∂y2∂x⋯∂ym∂x]
标量对向量求导:
∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x1∂y∂x2⋮∂y∂xm⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
向量对向量求导:
x=⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥
y=⎡⎣⎢⎢⎢⎢⎢y1y2⋮ym⎤⎦⎥⎥⎥⎥⎥
∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y1∂x1∂y1∂x2⋮∂y1∂xn∂y2∂x1∂y2∂x2⋮∂y2∂xn⋯⋯⋱⋯∂ym∂x1∂ym∂x2⋮∂ym∂xn⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
矩阵对标量求导:
∂y∂x=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y11∂x∂y12∂x⋮∂y1n∂x∂y21∂x∂y22∂x⋮∂y2n∂x⋯⋯⋱⋯∂ym1∂x∂ym2∂x⋮∂ymn∂x⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
标量对矩阵求导:
∂y∂X=⎡⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢∂y∂x11∂y∂x21⋮∂y∂xp1∂y∂x12∂y∂x22⋮∂y∂xp2⋯⋯⋱⋯∂y∂x1q∂y∂x2q⋮∂y∂xpq⎤⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥
从简单的例子说起
例子1:
y=aTx
其中,y∈R,a∈Rn×1,x∈Rn×1。
属于标量对向量求导,所以有:
∂y∂x=a
例子2:
y=Ax
其中,y∈Rm×1,A∈Rm×n,x∈Rn×1。
属于向量对向量求导,所以有:
∂y∂x=AT
例子3:
y=Au(x)
其中,y∈Rm×1,A∈Rm×n,u∈Rn×1,x∈Rp×1。
属于向量对向量的求导,所以有:
∂y∂x=∂u∂xAT
例子4:
y=a(x)u(x)
其中,y∈Rm×1,a∈R,u∈Rm×1,x∈Rn×1。
属于向量对向量的求导,所以有:
∂y∂x=∂u∂xa+∂a∂xuT
假如已知:
a(x)u(x)=Bx=Cx
其中,B∈R1×n,C∈Rm×n
那么,
∂y∂x=CTa+BTuT
例子5:
f=xTAy(x)
那么,
∂f∂x=Ay+∂y∂xATx
其中,x∈Rm×1,y∈Rn×1,A∈Rm×n,f∈R。
上面的式子,当y(x)=x时,也就是m=n时。
f∂f∂x=xTAx=(A+AT)x
例子6:
f=aTxxTb,a,b,x∈Rm×1
则
∂f∂x=a(xTb)+b(aTx)=(abT+baT)x
实例
SVM的对偶形式转换
SVM的原形式(primary form)是:
minw,bs.t.12wTwyn(wTxn+b)≥1
SVM的对偶形式(dual form)是:
minw,bmaxα≥0maxα≥0minw,b12wTw+∑n=1Nαn[1−yn(wTxn+b)]12wTw+∑n=1Nαn[1−yn(wTxn+b)]
上升分别对w,b求导后,得到
w∑n=1Nαnyn=∑n=1Nαnynxn=0
代入原式中,有
minα12∑n=1Ns.t.∑n=1Nαnynαn∑m=1NαnαmynymxmTxn−∑n=1Nαn=0≥0
这个对偶问题,可以用相应的quadprog包求解。其中,∑Nn=1∑Nm=1αnαmynymxmTxn是矩阵αTQα。ynymxmTxn是矩阵中m行n列的元素。这个元素再乘以αnαm。
同时,这个也是wTw的内积。可以理解为把w拆开多项,每一项分别做内积然后相加,就像多次项展开公式一样。
Soft-SVM对偶形式转换
SVM的原形式(primary form)是:
minw,b,εs.t.12wTw+C∑n=1Nεnyn(wTxn+b)≥1−εnεn≥0
对偶形式是:
minα12∑n=1Ns.t.∑n=1Nαnyn0≤αn∑m=1NαnαmynymxmTxn−∑n=1Nαn=0≤C
线性回归
原问题是:
Ein(w)=1N∑n=1N(wTx−y)2=1N∥XW−Y∥2
当最佳值存在时:
∇Ein(w)=2NXT(XW−Y)
所以有:
WW=(XTX)−1XTY=X†Y
logistic回归
首先,定义需要的函数:
θ(s)h(x)=es1+es=11+e−s=θ(wTx)
接着,根据最大似然,并且利用
1−h(x)=h(−x)的性质,最大化点出现的概率:
max∏θ(ynwTxn)min∑n=1Nln(1+exp(−ynwTxn))
上式对w的倒数为0,所以有:
s.t.min∑n=1Nln(1+exp(−ynwTxn))∑n=1Nθ(−ynwTxn)(−ynxn)=0
下面,可以利用GD或者SGD求解。
GD:
∇Ein(wt)wt+1=1N∑n=1Nθ(−ynwTxn)(−ynxn)=wt−η∇Ein(wt)
SGD:
wt+1=wt−ηθ(−ynwTxn)(−ynxn)
参考资料
- 闲话矩阵求导