24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2102  |  回复: 16
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

cyq101600

铁杆木虫 (初入文坛)

[交流] 【求助】矩阵导数【已解决】已有12人参与

请问有人研究过矩阵求导问题吗?现在遇到一个矩阵导数不知如何解决:
F(X)=X-1aaT X-1,其中X是矩阵,a是列向量,(-1)表示矩阵的逆,T为矩阵转置,要F(X)对矩阵X求导。(矩阵对矩阵求导)

看了一些资料,发现矩阵求导有不同的定义方式,有常规的定义为分别对矩阵的每个元素求导平铺生成超级矩阵,如http://muchong.com/bbs/viewthread.php?tid=1450822中所讨论的。然而,根据Magnus的讨论,这种常规的定义方法没有意义,主张把矩阵先按列排成一个列向量,然后类似Jacobian对向量进行求导(详见http://en.wikipedia.org/wiki/Talk:Matrix_calculus上的讨论)。不知如何是好!

[ Last edited by cyq101600 on 2010-6-12 at 16:29 ]
回复此楼
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

再见北极雪

木虫 (著名写手)

快乐家族之打酱油的小伙计


cyq101600(金币+1):谢谢参与
我觉得楼主还是先把你这个问题的背景搞清楚。毕竟如上边的虫友所言,矩阵导数的定义还是存在分歧的。
11楼2010-06-08 20:06:10
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 17 个回答

小雨萌萌

铜虫 (文坛精英)

优秀版主



cyq101600(金币+1):谢谢参与
看你怎么定义矩阵的范数,求导数和范数有关系
2楼2010-06-08 08:48:51
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

cyq101600

铁杆木虫 (初入文坛)

引用回帖:
Originally posted by 小雨萌萌 at 2010-06-08 08:48:51:
看你怎么定义矩阵的范数,求导数和范数有关系

谢谢参与!我想求导是和范数定义有关,但通常矩阵并没有定义什么范数下。
一个最常见的例子,F(X)=aTXb,通常给出的结果是DF(X)=abT。
但是按照Magnus主张的向量求导,结果是DF(X)=kron(aT,bT),结果都不一样。尤其在矩阵函数求导中常规的算法链式法则和乘法法则都可能不成立了,也就是Magnus指出的问题,不知道该采用哪种算法
3楼2010-06-08 09:42:39
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

onesupeng

金虫 (职业作家)


cyq101600(金币+1):谢谢参与
小雨萌萌:呵呵,和本贴中给出的链接资源大部分重复了。谢谢分享 2010-06-08 10:02:59
转载一个,共同学习。很久前看得矩阵运算忘记光了,身边又没有书

1. 矩阵Y对标量x求导:

   相当于每个元素求导数后转置一下,注意M×N矩阵求导后变成N×M了

   Y = [y(ij)] --> dY/dx = [dy(ji)/dx]



2. 标量y对列向量X求导:

   注意与上面不同,这次括号内是求偏导,不转置,对N×1向量求导后还是N×1向量

   y = f(x1,x2,..,xn) --> dy/dX = (Dy/Dx1,Dy/Dx2,..,Dy/Dxn)'



3. 行向量Y'对列向量X求导:

   注意1×M向量对N×1向量求导后是N×M矩阵。

   将Y的每一列对X求偏导,将各列构成一个矩阵。

   重要结论:

   dX'/dX = I

   d(AX)'/dX = A'



4. 列向量Y对行向量X’求导:

   转化为行向量Y’对列向量X的导数,然后转置。

   注意M×1向量对1×N向量求导结果为M×N矩阵。

   dY/dX' = (dY'/dX)'



5. 向量积对列向量X求导运算法则:

   注意与标量求导有点不同。

   d(UV')/dX = (dU/dX)V' + U(dV'/dX)

   d(U'V)/dX = (dU'/dX)V + (dV'/dX)U'

   重要结论:

   d(X'A)/dX = (dX'/dX)A + (dA/dX)X' = IA + 0X' = A

   d(AX)/dX' = (d(X'A')/dX)' = (A')' = A

   d(X'AX)/dX = (dX'/dX)AX + (d(AX)'/dX)X = AX + A'X



6. 矩阵Y对列向量X求导:

   将Y对X的每一个分量求偏导,构成一个超向量。

   注意该向量的每一个元素都是一个矩阵。



7. 矩阵积对列向量求导法则:

   d(uV)/dX = (du/dX)V + u(dV/dX)

   d(UV)/dX = (dU/dX)V + U(dV/dX)

   重要结论:

   d(X'A)/dX = (dX'/dX)A + X'(dA/dX) = IA + X'0 = A



8. 标量y对矩阵X的导数:

   类似标量y对列向量X的导数,

   把y对每个X的元素求偏导,不用转置。

   dy/dX = [ Dy/Dx(ij) ]

   重要结论:

   y = U'XV = ∑∑u(i)x(ij)v(j) 于是 dy/dX = [u(i)v(j)] = UV'

   y = U'X'XU 则 dy/dX = 2XUU'

   y = (XU-V)'(XU-V) 则 dy/dX = d(U'X'XU - 2V'XU + V'V)/dX = 2XUU' - 2VU' + 0 = 2(XU-V)U'



9. 矩阵Y对矩阵X的导数:

   将Y的每个元素对X求导,然后排在一起形成超级矩阵。
长期招收博士生,参见http://fsl-unsw.com
4楼2010-06-08 09:53:31
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见