您当前的位置: 首页 >  线性代数

B417科研笔记

暂无认证

  • 3浏览

    0关注

    154博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

线性代数:对克罗内科积求导

B417科研笔记 发布时间:2020-09-21 21:50:18 ,浏览量:3

目标: 求得下式: ∂ t r ( C H ( B ⊗ A ) H ( B ⊗ A ) C ) ∂ A ∗ \frac{{{\partial\rm{tr(}}{{\bf{C}}^H}{{({\bf{B}} \otimes {\bf{A}})}^H}({\bf{B}} \otimes {\bf{A}}){\bf{C}})}}{{\partial {\bf{A}^*}}} ∂A∗∂tr(CH(B⊗A)H(B⊗A)C)​ 变量均为复数矩阵。 ⊗ \otimes ⊗表示克罗内克积。本问题的实际意义是求得了目标函数(分子)对于分母的共轭梯度(复数域下代表最速下降方向), 从而后续可以使用基于梯度下降法的方法进行优化。

记录点推的东西:

思路: 根据微分法则,记: f ( A , A ∗ ) = t r ( C H ( B ⊗ A ) H ( B ⊗ A ) C ) f(\bf{A}, \bf{A^*})={{\rm{tr(}}{{\bf{C}}^H}{{({\bf{B}} \otimes {\bf{A}})}^H}({\bf{B}} \otimes {\bf{A}}){\bf{C}})} f(A,A∗)=tr(CH(B⊗A)H(B⊗A)C) 有: d f ( A , A ∗ ) = t r ( f ( A , A ∗ ) ∂ A T d A + f ( A , A ∗ ) ∂ A H d A ∗ ) = t r ( f ( A , A ∗ ) ∂ A d A T + f ( A , A ∗ ) ∂ A ∗ d ( A H ) ) \mathrm{d} f(\mathbf{A}, \mathbf{A^*})=\mathrm{tr}(\frac{f(\mathbf{A}, \mathbf{A^*})}{\partial {\bf{A^T}}}\mathrm{d}\mathbf{A} + \frac{f(\mathbf{A}, \mathbf{A^*})}{\partial {\bf{A^H}}}\mathrm{d}\mathbf{A^*})\\=\mathrm{tr}(\frac{f(\mathbf{A}, \mathbf{A^*})}{\partial {\bf{A}}}\mathrm{d}\mathbf{A^T} + \frac{f(\mathbf{A}, \mathbf{A^*})}{\partial {\bf{A^*}}}\mathrm{d}(\mathbf{A^H})) df(A,A∗)=tr(∂ATf(A,A∗)​dA+∂AHf(A,A∗)​dA∗)=tr(∂Af(A,A∗)​dAT+∂A∗f(A,A∗)​d(AH))

因此, 对原式取微分,希望得到的形式: d f ( A , A ∗ ) = t r ( G d ( A H ) ) \mathrm{d} f(\mathbf{A}, \mathbf{A^*}) = \mathrm{tr}(\mathbf{G}\mathrm{d}(\mathbf{A^H})) df(A,A∗)=tr(Gd(AH)) 对照上式, 那么 G \mathbf{G} G就是我们需要求的共轭梯度。 (注:本来 d f ( A , A ∗ ) \mathrm{d} f(\mathbf{A}, \mathbf{A^*}) df(A,A∗)还包含有 d A \mathrm{d}\mathbf{A} dA的成分,但我们只想求取共轭梯度, 因此上式中忽略了, 更严谨的话应该一并列出, 但在实际求取中,我这样的写法会更加简洁明了)

进行微分: d ( t r ( C H ( B ⊗ A ) H ( B ⊗ A ) C ) ) = t r ( d ( C H ( B ⊗ A ) H ( B ⊗ A ) C ) ) =    t r ( C H d ( ( B ⊗ A ) H ) ( B ⊗ A ) C ) = t r ( ( B ⊗ A ) C C H d ( B H ⊗ A H ) ) = t r ( ( B ⊗ A ) C C H ( B H ⊗ d ( A H ) ) ) \begin{array}{l} {\rm{d(tr(}}{{\bf{C}}^H}{({\bf{B}} \otimes {\bf{A}})^H}({\bf{B}} \otimes {\bf{A}}){\bf{C}}))\\ = {\rm{tr(d(}}{{\bf{C}}^H}{({\bf{B}} \otimes {\bf{A}})^H}({\bf{B}} \otimes {\bf{A}}){\bf{C}}))\\ = \;{\rm{tr(}}{{\bf{C}}^H}{\rm{d(}}{({\bf{B}} \otimes {\bf{A}})^H})({\bf{B}} \otimes {\bf{A}}){\bf{C}})\\ = {\rm{tr(}}({\bf{B}} \otimes {\bf{A}}){\bf{C}}{{\bf{C}}^H}{\rm{d}}({{\bf{B}}^H} \otimes {{\bf{A}}^H}))\\ = {\rm{tr(}}({\bf{B}} \otimes {\bf{A}}){\bf{C}}{{\bf{C}}^H}({{\bf{B}}^H} \otimes {\rm{d}}({{\bf{A}}^H}))) \end{array} d(tr(CH(B⊗A)H(B⊗A)C))=tr(d(CH(B⊗A)H(B⊗A)C))=tr(CHd((B⊗A)H)(B⊗A)C)=tr((B⊗A)CCHd(BH⊗AH))=tr((B⊗A)CCH(BH⊗d(AH)))​

  • 第一个等式利用了迹的性质: d ( t r ( X ) ) = t r ( d X ) \mathrm{d}(\mathrm{tr}(\mathbf{X}))=\mathrm{tr}(\mathrm{d}\mathbf{X}) d(tr(X))=tr(dX).
  • 第二个等式利用了微分的性质: d ( A X B ) = A ( d X ) B \mathrm{d}(\boldsymbol{A X} \boldsymbol{B})=\boldsymbol{A}(\mathrm{d} \boldsymbol{X}) \boldsymbol{B} d(AXB)=A(dX)B, A \boldsymbol{A} A, B \boldsymbol{B} B均为常数矩阵。
  • 第三个等式利用了 t r ( A B ) = t r ( B A ) \mathrm{tr}(\mathbf{A}\mathbf{B})=\mathrm{tr}(\mathbf{B}\mathbf{A}) tr(AB)=tr(BA), 这是最常用的性质来将 d ( A H ) \mathrm{d}(\mathbf{A^H}) d(AH)移动到最右侧。 同时有: ( A ⊗ B ) H = A H ⊗ B H (\boldsymbol{A} \otimes \boldsymbol{B})^{\mathrm{H}}=\boldsymbol{A}^{\mathrm{H}} \otimes \boldsymbol{B}^{\mathrm{H}} (A⊗B)H=AH⊗BH
  • 第四个等式利用了微分的性质: d ( U ⊗ V ) = ( d U ) ⊗ V + U ⊗ d V \mathrm{d}(\boldsymbol{U} \otimes \boldsymbol{V})=(\mathrm{d} \boldsymbol{U}) \otimes \boldsymbol{V}+\boldsymbol{U} \otimes \mathrm{d} \boldsymbol{V} d(U⊗V)=(dU)⊗V+U⊗dV

到这一步的时,其实这种求梯度的方式的流程已经介绍完了。 我们假设最后一个克罗内积是乘积的话,即最后的式子为: d f ( A , A ∗ ) = t r ( ( B ⊗ A ) C C H ( B H d ( A H ) ) ) \mathrm{d} f(\mathbf{A}, \mathbf{A^*})={\rm{tr(}}({\bf{B}} \otimes {\bf{A}}){\bf{C}}{{\bf{C}}^H}({{\bf{B}}^H} {\rm{d}}({{\bf{A}}^H}))) df(A,A∗)=tr((B⊗A)CCH(BHd(AH))) 和下式进行比较: d f ( A , A ∗ ) = t r ( G d ( A H ) ) \mathrm{d} f(\mathbf{A}, \mathbf{A^*}) = \mathrm{tr}(\mathbf{G}\mathrm{d}(\mathbf{A^H})) df(A,A∗)=tr(Gd(AH)) 就可以得到共轭梯度 G = ( B ⊗ A ) C C H B H \mathbf{G}=({\bf{B}} \otimes {\bf{A}}){\bf{C}}{{\bf{C}}^H}{{\bf{B}}^H} G=(B⊗A)CCHBH. 这就是最实用的求取共轭梯度的办法。 但本题的难度还在后面,如果应对克罗内科积?根据克罗内科积的性质, 对于任意两个矩阵, 我们有: A ⊗ B = ( I 2 ⊗ B ) ( A ⊗ I 1 ) = ( A ⊗ I 1 ) ( I 2 ⊗ B ) \mathbf{A} \otimes \mathbf{B}=\left(\mathbf{I}_{2} \otimes \mathbf{B}\right)\left(\mathbf{A} \otimes \mathbf{I}_{1}\right)=\left(\mathbf{A} \otimes \mathbf{I}_{1}\right)\left(\mathbf{I}_{2} \otimes \mathbf{B}\right) A⊗B=(I2​⊗B)(A⊗I1​)=(A⊗I1​)(I2​⊗B). I \mathbf{I} I为维度对应的单位阵。 因此, B H ⊗ d ( A H ) = ( B H ⊗ I 1 ) ( I 2 ⊗ d ( A H ) ) \mathbf{B}^H \otimes \mathrm{d}(\mathbf{A}^H)=\left(\mathbf{B}^H \otimes \mathbf{I}_{1}\right)\left(\mathbf{I}_{2} \otimes \mathrm{d}(\mathbf{A}^H)\right) BH⊗d(AH)=(BH⊗I1​)(I2​⊗d(AH))。令: ( B ⊗ A ) C C H ( B H ⊗ I 1 ) = M ({\bf{B}} \otimes {\bf{A}}){\bf{C}}{{\bf{C}}^H}\left(\mathbf{B}^H \otimes \mathbf{I}_{1}\right)=\mathbf{M} (B⊗A)CCH(BH⊗I1​)=M,有: t r ( ( B ⊗ A ) C C H ( B H ⊗ d ( A H ) ) ) = t r ( M ( I 2 ⊗ d ( A H ) ) ) {\rm{tr(}}({\bf{B}} \otimes {\bf{A}}){\bf{C}}{{\bf{C}}^H}({{\bf{B}}^H} \otimes {\rm{d}}({{\bf{A}}^H})))=\mathrm{tr}(\mathbf{M}\left(\mathbf{I}_{2} \otimes \mathrm{d}(\mathbf{A}^H)\right)) tr((B⊗A)CCH(BH⊗d(AH)))=tr(M(I2​⊗d(AH))), 我们有: ( I 2 ⊗ d ( A H ) ) = [ d ( A H ) 0 . . . 0 0 d ( A H ) . . . 0 0 0 . . . 0 0 0 0 d ( A H ) ] \left(\mathbf{I}_{2} \otimes \mathrm{d}\left(\mathbf{A}^{H}\right)\right)=\left[\begin{array}{llll} \mathrm{d}(\mathbf{A}^H) & 0 & ... & 0 \\ 0 & \mathrm{d}(\mathbf{A}^H) & ... & 0 \\ 0 & 0 & ... & 0 \\ 0 & 0 & 0 & \mathrm{d}(\mathbf{A}^H) \end{array}\right] (I2​⊗d(AH))=⎣⎢⎢⎡​d(AH)000​0d(AH)00​.........0​000d(AH)​⎦⎥⎥⎤​ 这是一个块对角矩阵。令 M = [ M 1 . . . . . . M 2 . . . . . . . . . M k ] \mathbf{M}=\left[\begin{array}{llll} \mathbf{M}_1 & ... & ... & \\ & \mathbf{M}_2 & ... & \\ & & ... & \\ & & ... & \mathbf{M}_k \end{array}\right] M=⎣⎢⎢⎡​M1​​...M2​​............​Mk​​⎦⎥⎥⎤​ 由分块矩阵的乘积法则,有: M ( I 2 ⊗ d ( A H ) ) = [ M 1 d ( A H ) . . . . . . M 2 d ( A H ) . . . . . . . . . M k d ( A H ) ] \mathbf{M}\left(\mathbf{I}_{2} \otimes \mathrm{d}\left(\mathbf{A}^{H}\right)\right)=\left[\begin{array}{llll} \mathbf{M}_1\mathrm{d}\left(\mathbf{A}^{H}\right) & ... & ... & \\ & \mathbf{M}_2\mathrm{d}\left(\mathbf{A}^{H}\right) & ... & \\ & & ... & \\ & & ... & \mathbf{M}_k\mathrm{d}\left(\mathbf{A}^{H}\right) \end{array}\right] M(I2​⊗d(AH))=⎣⎢⎢⎡​M1​d(AH)​...M2​d(AH)​............​Mk​d(AH)​⎦⎥⎥⎤​ 由迹的性质,我们有: t r ( M ( I 2 ⊗ d ( A H ) ) ) = Σ i = 1 k t r ( M i d ( A H ) ) \mathrm{tr}(\mathbf{M}\left(\mathbf{I}_{2} \otimes \mathrm{d}\left(\mathbf{A}^{H}\right)\right))=\Sigma^k_{i=1}\mathrm{tr}(\mathbf{M}_i\mathrm{d}\left(\mathbf{A}^{H}\right)) tr(M(I2​⊗d(AH)))=Σi=1k​tr(Mi​d(AH)) 根据性质: tr ⁡ ( A ± B ) = tr ⁡ ( A ) ± tr ⁡ ( B ) \operatorname{tr}(\boldsymbol{A} \pm \boldsymbol{B})=\operatorname{tr}(\boldsymbol{A}) \pm \operatorname{tr}(\boldsymbol{B}) tr(A±B)=tr(A)±tr(B) 我们有: Σ i = 1 k t r ( M i d ( A H ) ) = t r ( Σ i = 1 k ( M i d ( A H ) ) ) = t r ( ( Σ i = 1 k M i ) d ( A H ) ) \Sigma^k_{i=1}\mathrm{tr}(\mathbf{M}_i\mathrm{d}\left(\mathbf{A}^{H}\right))=\mathrm{tr}(\Sigma^k_{i=1}(\mathbf{M}_i\mathrm{d}\left(\mathbf{A}^{H}\right)))=\mathrm{tr}((\Sigma^k_{i=1}\mathbf{M}_i)\mathrm{d}\left(\mathbf{A}^{H}\right)) Σi=1k​tr(Mi​d(AH))=tr(Σi=1k​(Mi​d(AH)))=tr((Σi=1k​Mi​)d(AH)) 至此,我们有: G = ( Σ i = 1 k M i ) \mathbf{G} = (\Sigma^k_{i=1}\mathbf{M}_i) G=(Σi=1k​Mi​) 推导完毕。 最后提一问:如果我们是要对 B \mathbf{B} B求导呢?

关注
打赏
1649265742
查看更多评论
立即登录/注册

微信扫码登录

0.0396s