矩阵求导与实例

缘由

机器学习的很多算法表示中都采用了矩阵的形式,对算法的描述分析中就涉及到了对向量、对矩阵的求导。
比如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. 闲话矩阵求导
  • 16
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值