深度学习算子求导的学习笔记

1 致谢

感谢大佬的文章《Convolutional Neural Networks backpropagation: from intuition to derivation》,写的很清楚!

2 介绍

在这篇文章中,我们将跟随知乎文章《卷积神经网络(CNN)反向传播算法推导·南柯一梦宁沉沦》来学习Convolution的Backpropagation计算;

3 Convolution的卷积:nn.Conv2d()

CNN中的卷积实际上是点积互相关(Dot Products);
在进行推导之前,我们需要先对符号进行定义,定义第 l l l层的输出为
z x , y l = W l ∗ V + b x , y l z_{x,y}^{l} = \bm{W}^{l}\ast \bm{V} + b_{x,y}^{l} zx,yl=WlV+bx,yl

4 学习笔记

4.1 维数相容原则——“神经网络反向传播的数学原理 | 李飞腾”

维数相容原则是可以让大家推测矩阵函数对应导数的技巧,

维数相容原则:

  1. 使用实数函数的求导法则求导,如果求导结果不能相容,则对不自洽的结果做维度相容的调整,使其维度能符合矩阵乘法运算的定义
  2. 维度相容调整:通过前后换序、转置使算式满足矩阵乘法的要求,且对于实映射函数 f ( x ) , f ( x ) ∈ R 1 f(x), f(x) \in R^1 f(x),f(x)R1需满足:
    x ∈ R m × n x \in R^{m \times n} xRm×n时,那么 ∂ f ( x ) ∂ x ∈ R m × n \frac{\partial f(x)}{\partial x} \in R^{m \times n} xf(x)Rm×n

接下来介绍一个使用维数相容原则快速猜测复合函数导数算式的例子:
已知, J = ( X ω − y ) T ( X ω − y ) = ∥ X ω − y ∥ 2 J=(\boldsymbol{X} \boldsymbol{\omega} - y)^{T}(\boldsymbol{X} \boldsymbol{\omega} - y) = \left \| \boldsymbol{X} \boldsymbol{\omega} - y \right \|^2 J=(Xωy)T(Xωy)=Xωy2,其中 X ∈ R m × n , ω ∈ R n × 1 , y ∈ R m × 1 \boldsymbol{X} \in R^{m \times n}, \boldsymbol{\omega} \in R^{n\times1}, y \in R^{m\times1} XRm×n,ωRn×1,yRm×1
求: ∂ J ∂ X , ∂ J ∂ ω , ∂ J ∂ y \frac{\partial J}{\partial \boldsymbol{X}}, \frac{\partial J}{\partial \boldsymbol{\omega}}, \frac{\partial J}{\partial y} XJ,ωJ,yJ
step1:将所有变量当做实数来求导,(上式化为), J = ( X ω − y ) 2 J=(X\omega - y)^2 J=(Xωy)2
根据复合函数求导法则有 ∂ J ∂ X = 2 ( X ω − y ) ω , ∂ J ∂ ω = 2 ( X ω − y ) X , ∂ J ∂ y = − 2 ( X ω − y ) \frac{\partial J}{\partial X}=2(X\omega - y)\omega, \frac{\partial J}{\partial \omega}=2(X\omega - y)X, \frac{\partial J}{\partial y}= -2(X\omega - y) XJ=2(Xωy)ω,ωJ=2(Xωy)X,yJ=2(Xωy)
接下来我们来看看维度是否是自洽的,
∂ J ∂ X = 2 ( X ω − y ) ω \frac{\partial J}{\partial \boldsymbol{X}}=2(\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y})\boldsymbol{\omega} XJ=2(Xωy)ω ( X ω − y ) → m × 1 , ω → n × 1 (\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y})\rightarrow m \times 1, \boldsymbol{\omega} \rightarrow n \times 1 (Xωy)m×1,ωn×1,不自洽
∂ J ∂ ω = 2 ( X ω − y ) X \frac{\partial J}{\partial \boldsymbol{\omega}}=2(\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y})\boldsymbol{X} ωJ=2(Xωy)X ( X ω − y ) → m × 1 , X → m × n (\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y})\rightarrow m \times 1, \boldsymbol{X} \rightarrow m \times n (Xωy)m×1,Xm×n,不自洽
∂ J ∂ y = − 2 ( X ω − y ) \frac{\partial J}{\partial \boldsymbol{y}}= -2(\boldsymbol{X}\boldsymbol{\omega} - \boldsymbol{y}) yJ=2(Xωy) ( X ω − y ) → m × 1 (\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y})\rightarrow m \times 1 (Xωy)m×1,自洽
step2:根据step1的结果,依据维数相容原则做调整:前后换序、转置
依据维数相容原则 ∂ J ∂ X ∈ R m × n \frac{\partial J}{\partial \boldsymbol{X}} \in R^{m \times n} XJRm×n,但 ∂ J ∂ X = 2 ( X ω − y ) ω \frac{\partial J}{\partial \boldsymbol{X}}=2(\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y})\boldsymbol{\omega} XJ=2(Xωy)ω ( X ω − y ) ∈ R m × 1 , ω ∈ R n × n (\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y}) \in R^{m \times 1}, \boldsymbol{\omega} \in R^{n \times n} (Xωy)Rm×1,ωRn×n,自然地调整为 ∂ J ∂ X = 2 ( X ω − y ) ω T \frac{\partial J}{\partial \boldsymbol{X}}=2(\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y})\boldsymbol{\omega}^T XJ=2(Xωy)ωT
同理: ∂ J ∂ ω ∈ R n × 1 \frac{\partial J}{\partial \boldsymbol{\omega}} \in R^{n\times1} ωJRn×1,但 ∂ J ∂ ω = 2 ( X ω − y ) X \frac{\partial J}{\partial \boldsymbol{\omega}}=2(\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y})\boldsymbol{X} ωJ=2(Xωy)X中, ( X ω − y ) ∈ R m × 1 , X ∈ R m × n (\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y}) \in R^{m \times 1}, \boldsymbol{X} \in R^{m \times n} (Xωy)Rm×1,XRm×n,那么通过换序、转置可以得到维数相容的结果 2 X T ( X ω − y ) 2\boldsymbol{X}^T(\boldsymbol{X} \boldsymbol{\omega} - \boldsymbol{y}) 2XT(Xωy)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值