展平:
首先写给自己,上课的时候没想到他到底怎么展平留有疑问,见下图就知道了怎么展了 ~
VGG的知识:
书上没找到VGG的知识,那就总结到这吧!
VGG网络相比AlexNet层数多了不少,但是其结构却简单不少。
VGG的输入为224×224×3的图像
对图像做均值预处理,每个像素中减去在训练集上计算的RGB均值。
网络使用连续的小卷积核(3×3)做连续卷积,卷积的固定步长为1,并在图像的边缘填充1个像素,这样卷积后保持图像的分辨率不变。
连续的卷积层会接着一个池化层,降低图像的分辨率。空间池化由五个最大池化层进行,这些层在一些卷积层之后(不是所有的卷积层之后都是最大池化)。在2×2像素窗口上进行最大池化,步长为2。
卷积层后,接着的是3个全连接层,前两个每个都有4096个通道,第三是输出层输出1000个分类。
所有的隐藏层的激活函数都使用的是ReLU
使用1×1的卷积核,为了添加非线性激活函数的个数,而且不影响卷积层的感受野。
没有使用局部归一化,作者发现局部归一化并不能提高网络的性能。
VGG耗费更多计算资源,并且使用了更多的参数(这里不是3x3卷积的锅),导致更多的内存占用(140M)。其中绝大多数的参数都是来自于第一个全连接层。VGG可是有3个全连接层啊!
PS:有的文章称:发现这些全连接层即使被去除,对于性能也没有什么影响,这样就显著降低了参数数量。
很多pretrained的方法就是使用VGG的model(主要是16和19),VGG相对其他的方法,参数空间很大
好了好了,言归正传,开始写作业
1、习题5-2 证明宽卷积具有交换性, 即公式(5.13).
上述公式的意思就是X和w的宽卷积等于图像填充后与卷积核的卷积。
注意:卷积一般 指“互相关”.卷积符号 用⊗来表示,即不翻转 卷积.真正的卷积用 ∗ 来表示.
首先说明一下,有两个矩阵,卷积符号左边的看作卷积核,右边看作图像
开始证明:
其中rot180表示旋转180度。也就是有互相关变成卷积。
如果还不服,可以试一下上课讲的例子
看个例子,证明了卷积(这是真卷积,旋转180°是为了做真卷积)交换性的正确性,但是代数可以验证互相关并不满足!
习题5-4 对于一个输入为100 × 100 × 256的特征映射组, 使用3 × 3的卷积核, 输出为100 × 100 × 256的特征映射组的卷积层, 求其时间和空间复杂度. 如果引入一个1 × 1卷积核, 先得到100 × 100 × 64的特征映射, 再进行3 × 3的卷积, 得到100 × 100 × 256的特征映射组, 求其时间和空间复杂度.
从学长那搞来的知识点:
由此可以看出,中间夹一个1×1的卷积核,能够明显降低时间复杂度,但是也需要付出一些空间复杂度。
习题5-5 对于一个二维卷积, 输入为3 × 3, 卷积核大小为2 × 2, 试将卷积操作重写为仿射变换的形式. 参见公式(5.45) .
参考一下过程:
可以得到运算过程为:
附加题 阅读 “5.3.1 卷积神经网络的反向传播算法”,举例说明推导过程.
(小提示:如果4维的整不利索,先整2维的,道理相同)
首先记住,比如说求,梯度可以看B变化一下,A变化多少下,这么想,能够更好理解以下内容。当然也要结合链式法则相乘相加呀!
池化层:
池化层并没有更新参数,因为在反向传播的过程中,池化层只起传递偏导数的作用
看下面的例子:
在上述例子中,使用的是最大汇聚,从后往前看,绿色箭头也表示将对应梯度传到了对应位置,其他没有指向过的,梯度为零(因为在他不变成最大的时候,他变化一下,并不会影响误差的大小)
如果是平均汇聚的话,就是池化后对应的误差处于该值对应池化前那块区域神经元的个数了(取平均)。
卷积层
首先对书上公式的理解:
刚开始不理解为什么还有一个求和,看下图就明白了,剩下就是卷积的导数的公式的运用,记住就好了(如果不想记,欢迎参考下一题的转置关系):
接下来是参考了刘建平老师的博客 进行举例分析:
(1)
(2)
权重
一个大框框起来的表示用一个卷积核得到的一个输出,用颜色填充的表示W11做贡献的地方,也可以看到对应a的值从而理解公式
偏置:
对于b,则稍微有些特殊,因为在CNN中,误差δ是三维张量,而b只是一个向量,不能像普通网络中那样直接和误差δ相等。通常的做法是将误差δ的各个子矩阵的项分别求和,得到一个误差向量,即为b的梯度:
可以这么理解:第l层,特征图上每个点都加了一个b(相同的b),所以,b变一下,每个点都跟着变一下,所以每个点的梯度先乘1,再相加(由于用的是同一个b,依据链式法则,加在一起)。
上课的时候突然感觉有点对这个求和符号有点怀疑了,找了篇文章看了一些,熟悉一下,上述这个公式跟用两个求和符号的意思还是一样滴。
多元求和域的求和式往往还可以表达成一个多重求和。
习题 5-7 忽略激活函数, 分析卷积网络中卷积层的前向计算和反向传播(公式(5.39)) 是一种转置关系.
首先说明,其实卷积也可以想象成那种全连接网络的形式,只不过是有的对应权重为0(没扫住),有的权重相同(这也是权重共享的体现),ps:灵感来自于下图
那我们就可以用:
please请注意,这只是形式上的转置关系,而不是真正的逆运算(啥时候看到过误差前向传啊,是吧)所以这么想就好了,如果是正着看的话,你就想是算的是神经元的值,反向的话,算的是误差。反着的时候,权重变为它的转置,然后就是卷积形式与仿射变换形式的互换。
假设一个 5 维向量 𝒙,经过大小为 3 的卷积核𝒘 = [𝑤1 , 𝑤2 , 𝑤3 ] T 进行卷积,得到3维向量。
可以看出,从仿射变换的角度来看两个卷积操作 𝒛 = 𝒘⊗𝒙和𝒙 等于 rot180(𝒘)与𝒛的宽卷积也是形式上的转置关系
习题5-8 在空洞卷积中, 当卷积核大小为𝐾, 膨胀率为𝐷时, 如何设置零填充𝑃 的值以使得卷积为等宽卷积 .
关于空洞卷积的定义:
等宽卷积需要两端补零P=(卷积核数-1)/2
则结果为
其他知识点:
注意一下:微步卷积是给输入的特征图填充,空洞卷积是给卷积核填空洞
转置卷积:
微步卷积:
如果卷积操作的步长为 𝑆 > 1,需要在 输入特征之间插入𝑆 − 1个0来使得其移动的速度变慢.
最后,补充一下公式忘列出来了
最后把刘建平老师的总结贴到这里,感受一下
参考:
https://blog.csdn.net/weixin_39589455/article/details/114950664
https://blog.csdn.net/zhenjiteng/article/details/127580395?spm=1001.2014.3001.5502
https://blog.csdn.net/qq_38975453/article/details/134437388?spm=1001.2014.3001.5502
卷积神经网络(CNN)反向传播算法 - 刘建平Pinard - 博客园 (cnblogs.com)
Convolutional Neural Networks backpropagation: from intuition to derivation – Grzegorz Gwardys