【矩阵求导】关于点乘 (哈达玛积)的矩阵求导 您所在的位置:网站首页 矩阵哈达马积 【矩阵求导】关于点乘 (哈达玛积)的矩阵求导

【矩阵求导】关于点乘 (哈达玛积)的矩阵求导

2024-07-17 13:37| 来源: 网络整理| 查看: 265

在之前的博文中我们提到过,最好的求取矩阵梯度的方法就是将矩阵写成微分的形式:

d f \mathrm{d}f df 化成 d f = t r ( G d X ) \mathrm{d}f=\mathrm{tr}(\mathbf{G}\mathrm{d}\mathbf{X}) df=tr(GdX)的形式, 就可以得到 ∇ f = G T \nabla f = \mathbf{G}^T ∇f=GT

在大部分情形中, d f \mathrm{d}f df的结果都是包含了一堆矩阵相乘而 d X \mathrm{d}\mathbf{X} dX在其中的形式, 这时候可以通过 t r ( A B ) = t r ( B A ) \mathrm{tr}(AB) = \mathrm{tr}(BA) tr(AB)=tr(BA)把 d X \mathrm{d}\mathbf{X} dX移位到最后, 从而得到 d f = t r ( G d X ) \mathrm{d}f=\mathrm{tr}(\mathbf{G}\mathrm{d}\mathbf{X}) df=tr(GdX)的形式。

今天要讨论的是一种较为棘手的场景, 即当 f f f中包含哈达玛积的情况时。 由于哈达玛积不能像矩阵相乘一样在迹中任意的移位,那么该如何求导呢?

利用哈达玛积的重要性质:

tr ⁡ ( A ( B ∗ C ) ) = tr ⁡ ( ( A ∗ B T ) C ) \operatorname{tr}\left(A(B * C)\right)=\operatorname{tr}\left(\left(A * B^{\mathrm{T}}\right) C\right) tr(A(B∗C))=tr((A∗BT)C) 这里 ∗ * ∗就代表哈达玛积(也就是点乘)。 这个性质非常容易证明, 只需要证明左右两边的两个矩阵的对角线元素都是相等的就可以了。 那么,我们可以使用这一结论对点乘的情形就行求导。

以例子来说明, 首先是简单的LS问题: f ( X ) = t r ( ( A − P ∗ B X ) H ( A − P ∗ B X ) ) f(X) = \mathrm{tr}\left((A - P*BX)^H(A-P*BX)\right) f(X)=tr((A−P∗BX)H(A−P∗BX)) 其中 X X X为复数, 因此我们只需将 d ( f ( X ) ) = t r ( G d ( X H ) ) \mathrm{d}(f(X))=\mathrm{tr}(G\mathrm{d}(X^H)) d(f(X))=tr(Gd(XH))的形式化出, G G G就是我们要求取的导数。

因此: d f ( X ) = d t r ( − ( P H ∗ X H B H ) A + ( P H ∗ X H B H ) ( P ∗ B X ) ) = d t r ( − A ( P H ∗ X H B H ) ) + d ( ( P ∗ B X ) ( P H ∗ X H B H ) ) = d t r ( − ( A ∗ P ∗ ) X H B H ) ) + d ( ( P ∗ B X ) ∗ P ∗ ) X H B H ) ) = d t r ( − B H ( A ∗ P ∗ ) X H ) ) + d ( B H ( P ∗ B X ) ∗ P ∗ ) X H ) ) = t r ( B H ( ( P ∗ B X ) − A ) ∗ P ∗ ) d ( X H ) ) \begin{array}{l} {\rm{d}}f(X) = {\rm{dtr}}( - ({P^H}*{X^H}{B^H})A + ({P^H}*{X^H}{B^H})(P*BX))\\ = {\rm{dtr}}( - A({P^H}*{X^H}{B^H})) + {\rm{d}}((P*BX)({P^H}*{X^H}{B^H}))\\ = {\rm{dtr}}( - (A*{P^*}){X^H}{B^H})) + {\rm{d}}((P*BX)*{P^*}){X^H}{B^H}))\\ = {\rm{dtr}}( - {B^H}(A*{P^*}){X^H})) + {\rm{d}}({B^H}(P*BX)*{P^*}){X^H}))\\ = {\rm{tr}}({B^H}((P*BX) - A)*{P^*}){\rm{d}}({X^H})) \end{array} df(X)=dtr(−(PH∗XHBH)A+(PH∗XHBH)(P∗BX))=dtr(−A(PH∗XHBH))+d((P∗BX)(PH∗XHBH))=dtr(−(A∗P∗)XHBH))+d((P∗BX)∗P∗)XHBH))=dtr(−BH(A∗P∗)XH))+d(BH(P∗BX)∗P∗)XH))=tr(BH((P∗BX)−A)∗P∗)d(XH))​

可以得到梯度为 B H ( ( P ∗ B X ) − A ∗ P ∗ ) B^{H}\left(\left(P^{*} B X\right)-A* P^{*}\right) BH((P∗BX)−A∗P∗)。

技巧: 反复使用 tr ⁡ ( A ( B ∗ C ) ) = tr ⁡ ( ( A ∗ B T ) C ) \operatorname{tr}\left(A(B * C)\right)=\operatorname{tr}\left(\left(A * B^{\mathrm{T}}\right) C\right) tr(A(B∗C))=tr((A∗BT)C) 使得自变量 X X X不参与哈达玛积的运算。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有