深度学习之卷积神经网络(6)梯度传播

本文介绍了卷积神经网络中梯度传播的过程,以3×3的输入矩阵和2×2的卷积核为例,详细展示了如何通过链式法则计算卷积层参数的梯度,并指出尽管手动推导复杂,但深度学习框架能自动完成这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

深度学习之卷积神经网络(6)梯度传播



 在完成手写数字图片识别实战后,我们对卷积神经网络的使用有了初步的了解。现在我们来解决一个关键问题,卷积层通过移动感受野的方式实现离散卷积操作,那么它的梯度传播是怎样进行的呢?


 考虑一简单的情形,输入3×33×33×3的单通道矩阵,与一个2×22×22×2的卷积核,进行卷积运算,输出结果打平后直接与虚构的标注计算误差,如下图所示。我们来讨论这种情况下的梯度更新方式。

在这里插入图片描述

卷积层梯度传播举例


 首先推导出张量O\boldsymbol OO的表达形式:
o00=x00w00+x01w01+x10w10+x11w11+bo01=x01w00+x02w01+x11w10+x12w11+bo10=x10w00+x11w01+x20w10+x21w11+bo11=x11w00+x12w01+x21w10+x22w11+bo_{00}=x_{00} w_{00}+x_{01} w_{01}+x_{10} w_{10}+x_{11} w_{11}+b\\ o_{01}=x_{01} w_{00}+x_{02} w_{01}+x_{11} w_{10}+x_{12} w_{11}+b\\ o_{10}=x_{10} w_{00}+x_{11} w_{01}+x_{20} w_{10}+x_{21} w_{11}+b\\ o_{11}=x_{11} w_{00}+x_{12} w_{01}+x_{21} w_{10}+x_{22} w_{11}+bo00=x00w00+x01w01+x10w10+x11w11+bo01=x01w00+x02w01+x11w10+x12w11+bo10=x10w00+x11w01+x20w10+x21w11+bo11=x11w00+x12w01+x21w10+x22w11+b

w00w_{00}w00的梯度计算为例,通过链式法则分解:
∂L∂w00=∑i∈{00,01,10,11}∂L∂oi∂oi∂w00\frac{∂\mathcal{L}}{∂w_{00}}=\sum_{i\in\{00,01,10,11\}}{\frac{∂\mathcal{L}}{∂o_i}\frac{∂o_i}{∂w_{00}}}w00L=i{00,01,10,11}oiLw00oi

其中∂L∂oi\frac{∂\mathcal{L}}{∂o_i}oiL可直接由误差函数推导出来,我们直接来考虑∂oi∂w00\frac{∂o_i}{∂w_{00}}w00oi,例如:
∂o00∂w00=∂(x00w00+x01w01+x10w10+x11w11+bw00=x00\begin{aligned}\frac{∂o_{00}}{∂w_{00}}&=\frac{∂(x_{00} w_{00}+x_{01} w_{01}+x_{10} w_{10}+x_{11} w_{11}+b}{w_{00}} \\&=x_{00}\end{aligned}w00o00=w00(x00w00+x01w01+x10w10+x11w11+b=x00
同理:
∂o01∂w00=∂(x01w00+x02w01+x11w10+x12w11+bw00=x01\begin{aligned}\frac{∂o_{01}}{∂w_{00}}&=\frac{∂(x_{01} w_{00}+x_{02} w_{01}+x_{11} w_{10}+x_{12} w_{11}+b}{w_{00}} \\&=x_{01}\end{aligned}w00o01=w00(x01w00+x02w01+x11w10+x12w11+b=x01
∂o10∂w00=∂(x10w00+x11w01+x10w10+x21w11+bw00=x10\begin{aligned}\frac{∂o_{10}}{∂w_{00}}&=\frac{∂(x_{10} w_{00}+x_{11} w_{01}+x_{10} w_{10}+x_{21} w_{11}+b}{w_{00}} \\&=x_{10}\end{aligned}w00o10=w00(x10w00+x11w01+x10w10+x21w11+b=x10
∂o11∂w00=∂(x11w00+x12w01+x21w10+x22w11+bw00=x11\begin{aligned}\frac{∂o_{11}}{∂w_{00}}&=\frac{∂(x_{11} w_{00}+x_{12} w_{01}+x_{21} w_{10}+x_{22} w_{11}+b}{w_{00}} \\&=x_{11}\end{aligned}w00o11=w00(x11w00+x12w01+x21w10+x22w11+b=x11

 可以观察到,通过循环移动感受野的方式并没有改变网络层的可导性,同时梯度的推导也并不复杂,知识当网络层数增大以后,人工梯度推导将变得十分繁琐。不过不需要担心,深度学习框架可以帮我们自动完成所有参数的梯度计算与更新,我们只需要设计好网络结构即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值