目标: 求得下式:
∂
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)0000d(AH)00.........0000d(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))=⎣⎢⎢⎡M1d(AH)...M2d(AH)............Mkd(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=1ktr(Mid(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=1ktr(Mid(AH))=tr(Σi=1k(Mid(AH)))=tr((Σi=1kMi)d(AH))
至此,我们有:
G
=
(
Σ
i
=
1
k
M
i
)
\mathbf{G} = (\Sigma^k_{i=1}\mathbf{M}_i)
G=(Σi=1kMi)
推导完毕。
最后提一问:如果我们是要对
B
\mathbf{B}
B求导呢?
