Hadamard Product求导案例

1 问题

给定 x ∈ R n × 1 \mathbf{x} \in \mathbb{R}^{n \times 1} xRn×1 A ∈ R n × n \mathbf{A} \in \mathbb{R}^{n \times n} ARn×n f ( x ) = ( A x ) ⊙ ( A x ) \mathbf{f}(\mathbf{x})=\sqrt{(\mathbf{A} \mathbf{x}) \odot (\mathbf{Ax})} f(x)=(Ax)(Ax) 。 其中 ( ⋅ ) \sqrt{(\cdot)} () 表示Hadamard root (elements-wise square root),即矩阵元素逐项平方根。求 ∂ f ∂ x \frac{\partial \mathbf{f}}{\partial \mathbf{x}} xf


2 求解

2.1 先用Hadamard product解平方根

令: b = A x \mathbf{b} = \mathbf{A} \mathbf{x} b=Ax,有: d b = d ( A x ) = A d x d\mathbf{b} = d(\mathbf{A} \mathbf{x}) = \mathbf{A} d\mathbf{x} db=d(Ax)=Adx

2.2 矩阵对矩阵求导一般先将矩阵矢量化

f ⊙ f = ( A x ) ⊙ ( A x ) = b ⊙ b \begin{aligned} \mathbf{f} \odot \mathbf{f} &=(\mathbf{A} \mathbf{x}) \odot (\mathbf{A} \mathbf{x}) \\ &=\mathbf{b} \odot \mathbf{b} \end{aligned} ff=(Ax)(Ax)=bb

根据微分哈达马乘积性质 d ( x ⊙ Y ) = x ⊙ d Y + d x ⊙ Y d(\mathbf{x} \odot \mathbf{Y})=\mathbf{x} \odot d \mathbf{Y}+d \mathbf{x} \odot \mathbf{Y} d(xY)=xdY+dxY
有:
d ( f ⊙ f ) = f ⊙ d f + d f ⊙ f = f ⊙ d f + f ⊙ d f = 2 f ⊙ d f d i a g ( f ) vec(df) ⁡ ⁡ = d i a g ( b ) vec(db) ⁡ ⁡ ( 性 质 : vec ⁡ ( A ⊙ X ) = diag ⁡ ( A ) vec ⁡ ( X ) ) \begin{aligned} d(\mathbf{f} \odot \mathbf{f}) &=\mathbf{f} \odot d \mathbf{f}+d \mathbf{f} \odot \mathbf{f} \\ &=\mathbf{f} \odot d \mathbf{f}+\mathbf{f} \odot d \mathbf{f} \\ &= 2\mathbf{f} \odot d \mathbf{f} \\ \operatorname{diag(\mathbf{f})\operatorname{vec(d\mathbf{f})}} &= \operatorname{diag(\mathbf{b})\operatorname{vec(d\mathbf{b})}} \quad (性质:\operatorname{vec}(\mathbf{A} \odot \mathbf{X})=\operatorname{diag}(\mathbf{A}) \operatorname{vec}(\mathbf{X})) \end{aligned} d(ff)diag(f)vec(df)=fdf+dff=fdf+fdf=2fdf=diag(b)vec(db)(vec(AX)=diag(A)vec(X))
其中 diag ⁡ ( f ) \operatorname{diag}(\mathbf{f}) diag(f) n × n n \times n n×n 的对角矩阵,对角线上的元素是矩阵 f \mathbf{f} f 按列向量化后排列出来的; diag ⁡ ( b ) \operatorname{diag}(\mathbf{b}) diag(b)同理。

vec(df) ⁡ = diag(f) ⁡ − 1 diag ⁡ ( b ) vec ⁡ ( d b ) \operatorname{vec(d\mathbf{f})} = \operatorname{diag(\mathbf{f})}^{-1} \operatorname{diag}(\mathbf{b}) \operatorname{vec}(d\mathbf{b}) vec(df)=diag(f)1diag(b)vec(db)

b ∈ R n × 1    ⟹    vec(db) ⁡ = d b \mathbf{b} \in \mathbb{R}^{n \times 1} \implies \operatorname{vec(d \mathbf{b})} = d \mathbf{b} bRn×1vec(db)=db

∴ diag(f) ⁡ d f = diag(b) ⁡ A d x \therefore \operatorname{diag(\mathbf{f})} d \mathbf{f} = \operatorname{diag(b)} \mathbf{A} d \mathbf{x} diag(f)df=diag(b)Adx

vec(df) ⁡ = diag(f) ⁡ − 1 diag(b) ⁡ A d x \operatorname{vec(d\mathbf{f})} = \operatorname{diag(\mathbf{f})}^{-1} \operatorname{diag(\mathbf{b})} \mathbf{A} d \mathbf{x} vec(df)=diag(f)1diag(b)Adx

矩阵对矩阵求导如果采用分母布局,有:
vec ⁡ ( d f ) = ( ∂ f ∂ x ) T vec ⁡ ( d x ) \operatorname{vec}(d \mathbf{f})=\left(\frac{\partial \mathbf{f}}{\partial \mathbf{x}}\right)^{T} \operatorname{vec}(d \mathbf{x}) vec(df)=(xf)Tvec(dx)
如果是采用分子布局,有:
vec ⁡ ( d f ) = ( ∂ f ∂ x ) vec ⁡ ( d x ) \operatorname{vec}(d \mathbf{f})=\left(\frac{\partial \mathbf{f}}{\partial \mathbf{x}}\right) \operatorname{vec}(d \mathbf{x}) vec(df)=(xf)vec(dx)

所以,对于此问题,如果采用分母布局:
∂ f ∂ x = ( diag(f) ⁡ − 1 diag(b) ⁡ A ) T \frac{\partial \mathbf{f}}{\partial \mathbf{x}} = \left(\operatorname{diag(\mathbf{f})}^{-1} \operatorname{diag(\mathbf{b})} \mathbf{A}\right)^{T} xf=(diag(f)1diag(b)A)T
如果采用分子布局:
∂ f ∂ x = diag(f) ⁡ − 1 diag(b) ⁡ A \frac{\partial \mathbf{f}}{\partial \mathbf{x}} = \operatorname{diag(\mathbf{f})}^{-1} \operatorname{diag(\mathbf{b})} \mathbf{A} xf=diag(f)1diag(b)A

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lyh458

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值