简单理解ConvNet层的Backpropagation

这篇博客详细介绍了二维卷积神经网络在strides等于1时的前向传播和反向传播过程。在前向传播中,通过滤波器进行卷积计算每个输出单元。而在反向传播中,利用链式法则推导出误差δ的传播,发现反向传播同样是一个卷积操作,但可能需要填充以保持输出尺寸。此外,还讨论了权重梯度的计算。当strides不等于1时,提出通过在输出矩阵间插入0来调整计算。

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

这里只谈一下二维的情况,也就是channel = 1, strides = 1的情况下,单就这一层的计算.

ConvNet forward propagation

filter’s shape: [height, length, 1]
CNN forward

yi,j=Σn=0lengthΣm=0heightWm,nxi+m,j+ny_{i,j} = \Sigma_{n=0}^{length}\Sigma_{m=0}^{height} W_{m,n}x_{i+m,j+n}yi,j=Σn=0lengthΣm=0heightWm,nxi+m,j+n

ConvNet backpropagation

对于该层,我们首先已知∂L∂yi,j\frac{\partial{L}}{\partial y_{i,j}}yi,jL, 我们将他重新命名为δyi,j\delta{y_{i,j}}δyi,j
首先用全微分用W,xW, xW,x来表达dyi,jdy_{i,j}dyi,j:
dyi,j=Σn=0lengthΣm=0heightdWm,nxi+m,j+n+Σn=0lengthΣm=0heightWm,ndxi+m,j+ndy_{i,j} = \Sigma_{n=0}^{length}\Sigma_{m=0}^{height} dW_{m,n}x_{i+m,j+n} + \Sigma_{n=0}^{length}\Sigma_{m=0}^{height} W_{m,n}dx_{i+m,j+n} dyi,j=Σn=0lengthΣm=0heightdWm,nxi+m,j+n+Σn=0lengthΣm=0heightWm,ndxi+m,j+n
从上式我们可以看出:
∂yi,j∂xi+m,j+n=Wm,n\frac{\partial y_{i,j}}{\partial x_{i+m,j+n}} = W_{m,n}xi+m,j+nyi,j=Wm,n
而通过链式法则
∂L∂xi,j=Σh,k∂yi−h,j−k∂xi,j∂L∂yi−h,j−k=Σh,kWh,k∂L∂yi−h,j−k\frac{\partial{L}}{\partial x_{i,j}} = \Sigma_{h,k} \frac{\partial y_{i-h,j-k}}{\partial x_{i,j}}\frac{\partial{L}}{\partial y_{i-h,j-k}} = \Sigma_{h,k} W_{h,k} \frac{\partial{L}}{\partial y_{i-h,j-k}}xi,jL=Σh,kxi,jyih,jkyih,jkL=Σh,kWh,kyih,jkL
这个等式告诉我们,其实ConvNet的Backpropagation其实也是一个ConvNet,不过需要做一定的padding, padding的量为[height, width], 这个结果应该就是很多代码中的element-wise operation。
Question: 如果 strides != 1呢?
Answer(我也不知道对不对): if strides.shape = (stride1, stride2)个人认为解决方法可以是对输出矩阵Y各元素之间加上(stride1-1, stride2-1)个0
另外还有∂L∂Wi,j\frac{\partial{L}}{\partial W_{i,j}}Wi,jL
∂L∂Wi,j=Σh,k∂yi−h,j−k∂Wi,j∂L∂yi−h,j−k=Σh,kxh,k∂L∂yi−h,j−k\frac{\partial{L}}{\partial W_{i,j}} = \Sigma_{h,k} \frac{\partial y_{i-h,j-k}}{\partial W_{i,j}}\frac{\partial{L}}{\partial y_{i-h,j-k}} = \Sigma_{h,k} x_{h,k} \frac{\partial{L}}{\partial y_{i-h,j-k}}Wi,jL=Σh,kWi,jyih,jkyih,jkL=Σh,kxh,kyih,jkL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值