看看这个矩阵求导是否正确呢?

注 : 本 文 内 容 已 解 决 , 详 见 : \textcolor{red}{注:本文内容已解决,详见: }

https://blog.csdn.net/lgl123ok/article/details/121823906




1. 问题

如何求下列表达式中的未知参数W?求偏导?
min ⁡ F ( W ) = min ⁡ w ∥ ( X W ∘ D ˘ ) B ∥ F 2 (0) \min F(W)=\min_w \|(XW \circ \breve{D})B\|_F^2 \tag{0} minF(W)=wmin(XWD˘)BF2(0)
其中 只 有 W 是 未 知 参 数 \textcolor{red}{只有W是未知参数} W,且 X ∈ R n × m , W ∈ R m × c , D ˘ ∈ R n × c , B ∈ R c × c X \in R^{n \times m}, W \in R^{m \times c}, \breve{D} \in R^{n \times c}, B \in R^{c \times c} XRn×m,WRm×c,D˘Rn×c,BRc×c
同时 ∘ \circ 表示 Hadamard积,即矩阵按位乘(matlab的点乘)。


经知乎 长躯鬼侠 大神指导,先将 结 论 \textcolor{red}{结论} 放这,过程后面再来研究下:

∂ F ∂ W = X T ( 2 S B B T ∘ D ˘ ) = X T ( 2 ( X W ∘ D ˘ ) B B T ∘ 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} ) WF=XT(2SBBTD˘)=XT(2(XWD˘)BBTD˘)


2. 我的推导方法

S = X W ∘ D ˘ S=XW \circ \breve{D} S=XWD˘,则
F ( W ) = ∥ ( X W ∘ D ˘ ) B ∥ F 2 = ∥ S B ∥ F 2 = t r ( S B B T S T ) (1) F(W)=\|(XW \circ \breve{D})B\|_F^2 \\ = \|SB\|_F^2 \\ =tr(SBB^TS^T) \tag{1} F(W)=(XWD˘)BF2=SBF2=tr(SBBTST)(1)
由于有 ∂ t r ( X B X T ) ∂ X = X B T + X B , (2) \frac{\partial{tr(XBX^T)}}{\partial{X}}=XB^T + XB \tag{2}, Xtr(XBXT)=XBT+XB(2)
所以
∂ F ∂ S = S B B T + S B B T = 2 S B B T (3) \frac{\partial{F}}{\partial{S}}=SBB^T + SBB^T=2SBB^T \tag{3} SF=SBBT+SBBT=2SBBT(3)
∂ S ∂ W = ∂ ( X W ∘ D ˘ ) ∂ W = ∂ ( X W ) ∘ D ˘ + ( X W ) ∘ ∂ D ˘ ∂ W = ∂ ( X W ) ∘ D ˘ + 0 ∂ W = ( ∂ ( X ) W + X ∂ W ) ∘ D ˘ ∂ W = ( 0 + X ∂ W ) ∘ D ˘ ∂ W = ( X E ) ∘ 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} WS=W(XWD˘)=W(XW)D˘+(XW)D˘=W(XW)D˘+0=W((X)W+XW)D˘=W(0+XW)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} WF=WSSF(5)
先假设有把,那:
∂ F ∂ W = ∂ S ∂ W ∂ F ∂ S = 2 ( X E ) ∘ D ˘ S B B T = 2 ( X E ) ∘ D ˘ ( X W ∘ D ˘ ) B B T (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} WF=WSSF=2(XE)D˘SBBT=2(XE)D˘(XWD˘)BBT(6)

推 导 好 像 不 正 确 ? , 没 法 乘 , 式 6 第 2 个 X 前 矩 阵 是 n × c 的 矩 阵 , 之 后 的 也 是 , 没 法 乘 到 一 起 ! \textcolor{red}{推导好像不正确?, 没法乘,式6第2个X前矩阵是 n \times c 的矩阵,之后的也是,没法乘到一起!} ?62Xn×c

或者猜测下:
式4应改写为:
∂ S ∂ W = ∂ ( X W ∘ D ˘ ) ∂ W = ∂ ( X W ) ∘ D ˘ + ( X W ) ∘ ∂ D ˘ ∂ W = ∂ ( X W ) ∘ D ˘ + 0 ∂ W = ( ∂ ( X ) W + X ∂ W ) ∘ D ˘ ∂ W = ( 0 + X ∂ W ) ∘ D ˘ ∂ W = ( X T E ) ∘ 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}} WS=W(XWD˘)=W(XW)D˘+(XW)D˘=W(XW)D˘+0=W((X)W+XW)D˘=W(0+XW)D˘=(XTE)D˘
然后式6改为
∂ F ∂ W = ∂ S ∂ W ∂ F ∂ S = 2 ( X T ( X W ∘ D ˘ ) B B T ) ∘ 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} WF=WSSF=2(XT(XWD˘)BBT)D˘(7)


下面内容暂时忽略,后面再来研究


3. Q老师的推导思路

F ( W ) = ∥ ( X W ∘ D ˘ ) B ∥ F 2 F(W)=\|(XW \circ \breve{D})B\|_F^2 F(W)=(XWD˘)BF2 ∂ F ∂ W = 2 ( X W ∘ D ˘ ) B ∂ [ ( X W ∘ 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} WF=2(XWD˘)BW[(XWD˘)B](7)

∂ [ ( X W ∘ D ˘ ) B ] ∂ W = ∂ ( X W ∘ D ˘ ) B + 0 ∂ W = [ ∂ ( X W ) ∘ D ˘ ] B ∂ W = [ X ∂ ( W ) ∘ D ˘ ] B ∂ W = X E ∘ 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[(XWD˘)B]=W(XWD˘)B+0=W[(XW)D˘]B=W[X(W)D˘]B=XED˘B(8)

∂ F ∂ W = 2 ( X W ∘ D ˘ ) B X E ∘ D ˘ B (9) \frac{\partial{F}}{\partial{W}}=2 (XW \circ \breve{D})B XE\circ \breve{D}B \tag{9} WF=2(XWD˘)BXED˘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).69(2).692Xn×c,n×c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值