简单神经网络批处理时梯度计算(标量对矩阵的求导)

简单神经网络批处理时梯度计算(标量对矩阵的求导,微分法)

学校的深度学习课程上老师介绍了损失函数在一个training data时对网络参数的求导,比较简单易求。然后介绍了批处理(同时有N个training data时)的求导并给出了结果,但是没给推导过程,当时我自己推了一下发现有些难点(涉及到矩阵微分的知识),值得整理记录一下。

问题介绍: 在如图的一个简单的二层神经网络中,网络的参数为 W 1 W^1 W1 w 2 ⃗ \vec{w^2} w2 。当有N个输入数据时,X的维数为(D+1 x N)。那么各符号维数为: X D + 1 × N X_{D+1 \times N} XD+1×N W K + 1 × D + 1 1 W^1_{K+1 \times D+1} WK+1×D+11 H K + 1 × N H_{K+1 \times N} HK+1×N, w 2 ⃗ K + 1 × 1 \vec{w^2}_{K+1 \times 1} w2 K+1×1以及 y ⃗ 1 × N \vec{y}_{1\times N} y 1×N, 其中 y ⃗ = w 2 ⃗ T σ ( W 1 X ) \vec{y}=\vec{w^2}^{T}\sigma (W^1X) y =w2 Tσ(W1X), σ \sigma σ为sigmoid函数。如果使用mean squared loss, 那么损失函数为 J = 1 N ∣ ∣ y ⃗ − t ⃗ ∣ ∣ 2 J=\frac{1}{N}||\vec{y}-\vec{t}||^2 J=N1y t 2 (t是groundtruth), 问题:请求出J对 W 1 W^1 W1的导数。
在这里插入图片描述
先贴答案:在这里插入图片描述

需要的prerequisite knowledge: 1.简单的标量对向量,标量对矩阵求导,可参考https://en.wikipedia.org/wiki/Matrix_calculus中scalar-by-vector和scalar-by-matrix部分。 2. 标量对矩阵求导的微分法,可参考https://www.cnblogs.com/pinard/p/10791506.html

解: 先把J写成向量相乘的形式,然后化简标量对矩阵的求导,得到 ∂ J ∂ A \frac{\partial J}{\partial A} AJ,不能继续求导了,需要用微分法求出 ∂ J ∂ A \frac{\partial J}{\partial A} AJ。最后得出结果。最终结果公式中的X,H(网络中的节点),y,t 的值均已知,于是可以直接用此公式进行梯度下降法进行参数的更新啦O(∩_∩)O~
在这里插入图片描述
总结: 在批处理中,输入X以及网络中的节点均由向量升为矩阵,求导比一个training example时更为复杂。为此需要用新的方法:矩阵求导的微分法。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值