矩阵求导与实例

原创 2015年11月24日 15:52:31

缘由

机器学习的很多算法表示中都采用了矩阵的形式,对算法的描述分析中就涉及到了对向量、对矩阵的求导。
比如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. 闲话矩阵求导

通过一个例子快速上手矩阵求导

前提及说明第一次遇见矩阵求导,大多数人都是一头雾水,而搜了维基百科看也还是云里雾里,一堆的名词和一堆的表格到底都是什么呢?这里总结了我个人的学习经验,并且通过一个例子可以让你感受如何进行矩阵求导,下次...
  • nomadlx53
  • nomadlx53
  • 2016年03月10日 20:46
  • 16817

机器学习中的线性代数之矩阵求导

前面针对机器学习中基础的线性代数知识,我们做了一个常用知识的梳理。接下来针对机器学习公式推导过程中经常用到的矩阵求导,我们做一个详细介绍。矩阵求导(Matrix Derivative)也称作矩阵微分(...
  • u010976453
  • u010976453
  • 2017年01月12日 19:57
  • 5497

(Math)矩阵求导

本文地址:http://blog.csdn.net/mounty_fsc/article/details/51583809 前言 本文为维基百科上矩阵微积分部分的翻译内容。本文为原文的翻译与个人总...
  • mounty_fsc
  • mounty_fsc
  • 2016年06月05日 11:44
  • 5416

常用的向量矩阵求导公式

总结下数理推导中常用的向量矩阵求导公式,方便以后查询。
  • lipengcn
  • lipengcn
  • 2016年10月14日 14:29
  • 12414

矩阵求导公式总结

今天推导公式,发现居然有对矩阵的求导,狂汗--完全不会。不过还好网上有人总结了。吼吼,赶紧搬过来收藏备份。 基本公式: Y = A * X --> DY/DX = A' Y = X * A ...
  • u010025211
  • u010025211
  • 2016年06月12日 15:40
  • 4226

矩阵的求导问题小结

Torch的安装和常见问题 Torch安装 http://torch.ch/docs/getting-started.html#next-steps 常见问题 https://github.c...
  • sunnyxiaohu
  • sunnyxiaohu
  • 2016年09月07日 08:46
  • 3463

矩阵求导公式

原文地址:矩阵求导公式【转】作者:三寅 今天推导公式,发现居然有对矩阵的求导,狂汗--完全不会。不过还好网上有人总结了。吼吼,赶紧搬过来收藏备份。 基本公式: Y = A * X -...
  • u013289254
  • u013289254
  • 2017年04月04日 10:52
  • 1158

机器学习中常用的矩阵求导公式

主要copy自新浪微博MachineLearner的博客希望作为自己学习机器学习的工具。矩阵求导好像从来没有学过,讲矩阵的课不讲求导,讲求导的课不讲矩阵。像维基百科什么的查找起来又费劲。其实在实际机器...
  • xtydtc
  • xtydtc
  • 2016年04月12日 15:31
  • 9540

矩阵求导计算法则

转自:http://blog.sina.com.cn/s/blog_4a033b090100pwjq.html 求导公式(撇号为转置): Y = A * X --> DY/DX = A' Y =...
  • sunmenggmail
  • sunmenggmail
  • 2012年05月17日 22:57
  • 32231

矩阵求导公式【转】

原文地址:矩阵求导公式【转】作者:三寅今天推导公式,发现居然有对矩阵的求导,狂汗--完全不会。不过还好网上有人总结了。吼吼,赶紧搬过来收藏备份。 基本公式: Y = A * X --> DY/D...
  • u012045426
  • u012045426
  • 2016年08月28日 08:59
  • 3524
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:矩阵求导与实例
举报原因:
原因补充:

(最多只允许输入30个字)