各種矩陣(向量)求導

一個準則:按照單變量求導來做,然後調整下維數就可以了。 比如 對矩陣的求導,結果一定是和矩陣維數一致纔對

今天早上遇到@tornadomeet在deep learning高質量羣裏問:一個列向量對一個列向量求導的結果,也就是下面的第一個公式:Y = A * X --> DY/DX = A’。我這才意識到矩陣裏的很多知道又忘了,這些東西一旦不用,忘了就很快。矩陣和概率論的東西真心很重要,下面分享別人的成果,希望你可以證明出來。

在網上看到有人貼瞭如下求導公式:

Y = A * X --> DY/DX = A’

Y = X * A --> DY/DX = A

Y = A’ * X * B --> DY/DX = A * B’

Y = A’ * X’ * B --> DY/DX = B * A’

於是把以前學過的矩陣求導部分整理一下:

  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 = = 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求導,然後排在一起形成超級矩陣。

以上並非小蟲原創,實際上小蟲也正在理解這個問題,因此如有不對的地方,並非小蟲之責

————————————————
版權聲明:本文爲CSDN博主「wbglearn」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wbgxx333/article/details/22992977

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章