目录
习题5-7 忽略激活函数,分析卷积网络中卷积层的前向计算和反向传播是一种转置关系。
习题5-2 证明宽卷积具有交换性
先设一个二维图像和一个二维卷积核
,然后对该二维图像X进行零填充,两端各补U-1 和V-1 个零,得到全填充的图像
有
根据宽卷积定义
为了让x的下标形式和w的进行对换,进行变量替换
使, 所以
那么
已知
因此对于
由于宽卷积的条件,s和t的变动范围是可行的。
习题5-3 分析卷积神经网络中1*1卷积核的作用
1.升维/降维
1*1卷积可以用来调节feature map的通道数,对不同通道上的像素点进行线性组合,将原本的数据量进行增加或者减少,即可实现feature map的升维或降维功能
2.增加非线性特性
每使用 1x1卷积核,及增加一层卷积层,所以网络深度得以增加。 而使用 1x1卷积核后,可以保持特征图大小与输入尺寸相同,卷积层卷积过程会包含一个激活函数,从而增加了非线性。在输入尺寸不发生改变的情况下而增加了非线性,所以会增加整个网络的表达能力。
习题5-4 对于一个输入为100×100×256的特征映射组,使用3×3的卷积核,输出为100×100×256的特征映射组的卷积层,求其时间和空间复杂度。如果引入一个1×1的卷积核,先得到100×100×64的特征映射,再进行3×3的卷积,得到100×100×256的特征映射组,求其时间和空间复杂度。
M为输出特征图的尺寸,K为卷积核的尺寸,为输入通道数,
为输入通道数,时间复杂度
,空间复杂度
3×3的卷积核
时间复杂度:100×100×3×3^256×256=5898240000
空间复杂度:3×3^256×256+100×100×256=3149824
1×1的卷积核
时间复杂度:100×100×1×1×256×64+100×100×3×3×64×256=1638400000
空间复杂度:1×1×256×64+100×100×64+3×3×64×256+100×100×256=3363840
习题5-7 忽略激活函数,分析卷积网络中卷积层的前向计算和反向传播是一种转置关系。
以一个3×3的卷积核为例,输入为X输出为Y
将4×4的输入特征展开为16×1的矩阵,y展开为4×1的矩阵,将卷积计算转化为矩阵相乘
因为,
即
所以
可以看出前向计算和反向传播是一种转置关系。
选做:推导CNN反向传播算法
以最大池化举例,上图中,池化后的数字6对应于池化前的红色区域,实际上只有红色区域中最大值数字6对池化后的结果有影响,权重为1,而其它的数字对池化后的结果影响都为0。假设池化后数字6的位置delta误差为 δ ,误差反向传播回去时,红色区域中最大值对应的位置delta误差即等于 δ ,而其它3个位置对应的delta误差为0。因此,在卷积神经网络最大池化前向传播时,不仅要记录区域的最大值,同时也要记录下来区域最大值的位置,方便delta误差的反向传播。
平均池化中,区域中每个值对池化后结果贡献的权重都为区域大小的倒数,所以delta误差反向传播回来时,在区域每个位置的delta误差都为池化后delta误差除以区域的大小。
然后卷积层就是通过张量卷积,或者说若干个矩阵卷积求和而得到当前层的输出,这和一般的网络直接进行矩阵乘法得到当前层的输出不同。这样在卷积层反向传播的时候,上一层误差的递推计算方法肯定有所不同。对于卷积层,由于W使用的运算是卷积,那么由该层误差推导出该层的所有卷积核的W,b的方式也不同。由于卷积层可以有多个卷积核,各个卷积核的处理方法是完全相同且独立的。
参考
卷积神经网络(CNN)反向传播算法 - 刘建平Pinard - 博客园 (cnblogs.com)