注:本文内容已解决,详见:\textcolor{red}{注:本文内容已解决,详见: }注:本文内容已解决,详见:
https://blog.youkuaiyun.com/lgl123ok/article/details/121823906
1. 问题
如何求下列表达式中的未知参数W?求偏导?
minF(W)=minw∥(XW∘D˘)B∥F2(0)
\min F(W)=\min_w \|(XW \circ \breve{D})B\|_F^2 \tag{0}
minF(W)=wmin∥(XW∘D˘)B∥F2(0)
其中 只有W是未知参数\textcolor{red}{只有W是未知参数}只有W是未知参数,且X∈Rn×m,W∈Rm×c,D˘∈Rn×c,B∈Rc×cX \in R^{n \times m}, W \in R^{m \times c}, \breve{D} \in R^{n \times c}, B \in R^{c \times c}X∈Rn×m,W∈Rm×c,D˘∈Rn×c,B∈Rc×c
同时∘\circ∘ 表示 Hadamard积,即矩阵按位乘(matlab的点乘)。
经知乎 长躯鬼侠 大神指导,先将结论\textcolor{red}{结论}结论放这,过程后面再来研究下:
∂F∂W=XT(2SBBT∘D˘)=XT(2(XW∘D˘)BBT∘D˘) \frac{\partial{F}}{\partial{W}}=X^T(2SBB^T\circ \breve{D} )=X^T(2(XW \circ \breve{D})BB^T\circ \breve{D} ) ∂W∂F=XT(2SBBT∘D˘)=XT(2(XW∘D˘)BBT∘D˘)
2. 我的推导方法
令S=XW∘D˘S=XW \circ \breve{D}S=XW∘D˘,则
F(W)=∥(XW∘D˘)B∥F2=∥SB∥F2=tr(SBBTST)(1)
F(W)=\|(XW \circ \breve{D})B\|_F^2 \\
= \|SB\|_F^2 \\
=tr(SBB^TS^T) \tag{1}
F(W)=∥(XW∘D˘)B∥F2=∥SB∥F2=tr(SBBTST)(1)
由于有∂tr(XBXT)∂X=XBT+XB,(2)\frac{\partial{tr(XBX^T)}}{\partial{X}}=XB^T + XB \tag{2}, ∂X∂tr(XBXT)=XBT+XB,(2)
所以
∂F∂S=SBBT+SBBT=2SBBT(3)
\frac{\partial{F}}{\partial{S}}=SBB^T + SBB^T=2SBB^T \tag{3}
∂S∂F=SBBT+SBBT=2SBBT(3)
∂S∂W=∂(XW∘D˘)∂W=∂(XW)∘D˘+(XW)∘∂D˘∂W=∂(XW)∘D˘+0∂W=(∂(X)W+X∂W)∘D˘∂W=(0+X∂W)∘D˘∂W=(XE)∘D˘(4)
\frac{\partial{S}}{\partial{W}}=\frac{\partial{(XW \circ \breve{D})}}{\partial{W}} \\
= \frac{\partial{(XW )\circ \breve{D} +(XW )\circ \partial{\breve{D}}}}{\partial{W}} \\
= \frac{\partial{(XW )\circ \breve{D} +0}}{\partial{W}} \\
=\frac{(\partial{(X)W +X\partial{W})\circ \breve{D}}}{\partial{W}} \\
=\frac{(0 +X\partial{W})\circ \breve{D}}{\partial{W}} \\
=\textcolor{red}{(XE)\circ \breve{D}}
\tag{4}
∂W∂S=∂W∂(XW∘D˘)=∂W∂(XW)∘D˘+(XW)∘∂D˘=∂W∂(XW)∘D˘+0=∂W(∂(X)W+X∂W)∘D˘=∂W(0+X∂W)∘D˘=(XE)∘D˘(4)
式4标红部分可能有大问题,但是不知道咋解决。
在矩阵导数这块,好像有下面这个式子?\textcolor{red}{在矩阵导数这块,好像有下面这个式子?}在矩阵导数这块,好像有下面这个式子?:
∂F∂W=∂S∂W∂F∂S(5)
\frac{\partial{F}}{\partial{W}}=\frac{\partial{S}}{\partial{W}} \frac{\partial{F}}{\partial{S}} \tag{5}
∂W∂F=∂W∂S∂S∂F(5)
先假设有把,那:
∂F∂W=∂S∂W∂F∂S=2(XE)∘D˘SBBT=2(XE)∘D˘(XW∘D˘)BBT(6)
\frac{\partial{F}}{\partial{W}}=\frac{\partial{S}}{\partial{W}} \frac{\partial{F}}{\partial{S}} \\
=2(XE)\circ \breve{D} SBB^T\\
=2(XE)\circ \breve{D}(XW \circ \breve{D})BB^T
\tag{6}
∂W∂F=∂W∂S∂S∂F=2(XE)∘D˘SBBT=2(XE)∘D˘(XW∘D˘)BBT(6)
推导好像不正确?,没法乘,式6第2个X前矩阵是n×c的矩阵,之后的也是,没法乘到一起!\textcolor{red}{推导好像不正确?, 没法乘,式6第2个X前矩阵是 n \times c 的矩阵,之后的也是,没法乘到一起!}推导好像不正确?,没法乘,式6第2个X前矩阵是n×c的矩阵,之后的也是,没法乘到一起!
或者猜测下:
式4应改写为:
∂S∂W=∂(XW∘D˘)∂W=∂(XW)∘D˘+(XW)∘∂D˘∂W=∂(XW)∘D˘+0∂W=(∂(X)W+X∂W)∘D˘∂W=(0+X∂W)∘D˘∂W=(XTE)∘D˘
\frac{\partial{S}}{\partial{W}}=\frac{\partial{(XW \circ \breve{D})}}{\partial{W}} \\
= \frac{\partial{(XW )\circ \breve{D} +(XW )\circ \partial{\breve{D}}}}{\partial{W}} \\
= \frac{\partial{(XW )\circ \breve{D} +0}}{\partial{W}} \\
=\frac{(\partial{(X)W +X\partial{W})\circ \breve{D}}}{\partial{W}} \\
=\frac{(0 +X\partial{W})\circ \breve{D}}{\partial{W}} \\
=\textcolor{red}{(X^TE)\circ \breve{D}}
∂W∂S=∂W∂(XW∘D˘)=∂W∂(XW)∘D˘+(XW)∘∂D˘=∂W∂(XW)∘D˘+0=∂W(∂(X)W+X∂W)∘D˘=∂W(0+X∂W)∘D˘=(XTE)∘D˘
然后式6改为
∂F∂W=∂S∂W∂F∂S=2(XT(XW∘D˘)BBT)∘D˘(7)
\frac{\partial{F}}{\partial{W}}=\frac{\partial{S}}{\partial{W}} \frac{\partial{F}}{\partial{S}} \\
=2(X^T(XW \circ \breve{D})BB^T)\circ \breve{D}
\tag{7}
∂W∂F=∂W∂S∂S∂F=2(XT(XW∘D˘)BBT)∘D˘(7)
下面内容暂时忽略,后面再来研究
3. Q老师的推导思路
F(W)=∥(XW∘D˘)B∥F2 F(W)=\|(XW \circ \breve{D})B\|_F^2 F(W)=∥(XW∘D˘)B∥F2∂F∂W=2(XW∘D˘)B∂[(XW∘D˘)B]∂W(7) \frac{\partial{F}}{\partial{W}}= 2 (XW \circ \breve{D})B \frac{\partial{[(XW \circ \breve{D})B]}}{\partial{W}} \tag{7} ∂W∂F=2(XW∘D˘)B∂W∂[(XW∘D˘)B](7)
∂[(XW∘D˘)B]∂W=∂(XW∘D˘)B+0∂W=[∂(XW)∘D˘]B∂W=[X∂(W)∘D˘]B∂W=XE∘D˘B(8) \frac{\partial{[(XW \circ \breve{D})B]}}{\partial{W}}=\frac{\partial{(XW \circ \breve{D})B+0}}{\partial{W}} \\ =\frac{[\partial{(XW) }\circ \breve{D}]B}{\partial{W}} \\ =\frac{[X\partial{(W) }\circ \breve{D}]B}{\partial{W}} \\ =XE\circ \breve{D}B \tag{8} ∂W∂[(XW∘D˘)B]=∂W∂(XW∘D˘)B+0=∂W[∂(XW)∘D˘]B=∂W[X∂(W)∘D˘]B=XE∘D˘B(8)
∂F∂W=2(XW∘D˘)BXE∘D˘B(9) \frac{\partial{F}}{\partial{W}}=2 (XW \circ \breve{D})B XE\circ \breve{D}B \tag{9} ∂W∂F=2(XW∘D˘)BXE∘D˘B(9)
新的问题:(1).6式和9式看着都是推导正确的,为什么不一致?哪一个才是正确的?(2).6式和9式都存在无法运算的问题,即第2个X前是n×c,后面也是n×c。这是啥情况呢,哪儿错了?\textcolor{red}{新的问题:\\ (1). 6式和9式看着都是推导正确的,为什么不一致?哪一个才是正确的? \\ (2). 6式和9式都存在无法运算的问题,即第2个X前是n \times c, 后面也是n \times c。 这是啥情况呢,哪儿错了? \\ }新的问题:(1).6式和9式看着都是推导正确的,为什么不一致?哪一个才是正确的?(2).6式和9式都存在无法运算的问题,即第2个X前是n×c,后面也是n×c。这是啥情况呢,哪儿错了?