矩阵求导与实例

别来无恙 提交于 2019-11-30 13:13:06

缘由

机器学习的很多算法表示中都采用了矩阵的形式,对算法的描述分析中就涉及到了对向量、对矩阵的求导。
比如SVM、linear regression的推导等。

布局

矩阵求导有两种布局:

  • 分子布局(numerator layout)
  • 分母布局(denominator layout)

下面用向量y对标量x求导简单说明这两种布局的区别。
我们假定所有的向量都是列向量。

y=y1y2ym

在分子布局下:

yx=y1xy2xymx

在分母布局下:

yx=[y1xy2xymx]

在下面的推导中,都将采用分母布局,也就是向量(列)对标量求导的结果都是行向量。(采用这种布局的主要原因是向量对向量的求导就是一个矩阵了)

求导的类别

求导大致分为5类:

  1. 向量对标量
  2. 标量对向量
  3. 向量对向量
  4. 矩阵对向量
  5. 向量对矩阵

矩阵求导的大致规则如下:
对标量求导结果都要转置,而标量对向量或者矩阵求导的话位置不变。
简单来说,上变下不变。

向量对标量求导:

yx=[y1xy2xymx]

标量对向量求导:

yx=yx1yx2yxm

向量对向量求导:

x=x1x2xn

y=y1y2ym

yx=y1x1y1x2y1xny2x1y2x2y2xnymx1ymx2ymxn

矩阵对标量求导:

yx=y11xy12xy1nxy21xy22xy2nxym1xym2xymnx

标量对矩阵求导:
yX=yx11yx21yxp1yx12yx22yxp2yx1qyx2qyxpq

从简单的例子说起

例子1:

y=aTx

其中,yR,aRn×1,xRn×1

属于标量对向量求导,所以有:

yx=a

例子2:

y=Ax

其中,yRm×1,ARm×n,xRn×1

属于向量对向量求导,所以有:

yx=AT

例子3:

y=Au(x)

其中,yRm×1,ARm×n,uRn×1,xRp×1

属于向量对向量的求导,所以有:

yx=uxAT

例子4:

y=a(x)u(x)

其中,yRm×1,aR,uRm×1,xRn×1

属于向量对向量的求导,所以有:

yx=uxa+axuT

假如已知:

a(x)u(x)=Bx=Cx

其中,BR1×n,CRm×n
那么,

yx=CTa+BTuT

例子5:

f=xTAy(x)

那么,
fx=Ay+yxATx

其中,xRm×1,yRn×1,ARm×n,fR

上面的式子,当y(x)=x时,也就是m=n时。

ffx=xTAx=(A+AT)x

例子6:

f=aTxxTb,a,b,xRm×1


fx=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[1yn(wTxn+b)]12wTw+n=1Nαn[1yn(wTxn+b)]

上升分别对w,b求导后,得到

wn=1Nαnyn=n=1Nαnynxn=0

代入原式中,有

minα12n=1Ns.t.n=1Nαnynαnm=1NαnαmynymxmTxnn=1Nαn=00

这个对偶问题,可以用相应的quadprog包求解。其中,Nn=1Nm=1αnαmynymxmTxn是矩阵αTQαynymxmTxn是矩阵中m行n列的元素。这个元素再乘以αnαm
同时,这个也是wTw的内积。可以理解为把w拆开多项,每一项分别做内积然后相加,就像多次项展开公式一样。

Soft-SVM对偶形式转换

SVM的原形式(primary form)是:

minw,b,εs.t.12wTw+Cn=1Nεnyn(wTxn+b)1εnεn0

对偶形式是:

minα12n=1Ns.t.n=1Nαnyn0αnm=1NαnαmynymxmTxnn=1Nαn=0C

线性回归

原问题是:

Ein(w)=1Nn=1N(wTxy)2=1NXWY2

当最佳值存在时:

Ein(w)=2NXT(XWY)

所以有:

WW=(XTX)1XTY=XY

logistic回归

首先,定义需要的函数:

θ(s)h(x)=es1+es=11+es=θ(wTx)

接着,根据最大似然,并且利用 1h(x)=h(x)的性质,最大化点出现的概率:
maxθ(ynwTxn)minn=1Nln(1+exp(ynwTxn))

上式对w的倒数为0,所以有:

s.t.minn=1Nln(1+exp(ynwTxn))n=1Nθ(ynwTxn)(ynxn)=0

下面,可以利用GD或者SGD求解。

GD:

Ein(wt)wt+1=1Nn=1Nθ(ynwTxn)(ynxn)=wtηEin(wt)

SGD:

wt+1=wtηθ(ynwTxn)(ynxn)

参考资料

  1. 闲话矩阵求导
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!