神经网络与深度学习——第5章 卷积神经网络

本文讨论的内容参考自《神经网络与深度学习》https://nndl.github.io/ 第5章 卷积神经网络

卷积神经网络

在这里插入图片描述

卷积

卷积的定义

在这里插入图片描述

一维卷积

在这里插入图片描述
在这里插入图片描述

二维卷积

在这里插入图片描述
在这里插入图片描述

互相关

在这里插入图片描述
在这里插入图片描述

卷积的变种

在这里插入图片描述

卷积的数学性质在这里插入图片描述

交换性

在这里插入图片描述

导数

在这里插入图片描述
在这里插入图片描述

卷积神经网络

在这里插入图片描述

用卷积来代替全连接

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

卷积层

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

汇聚层

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

卷积网络的整体结构

在这里插入图片描述

参数学习

在这里插入图片描述
在这里插入图片描述

卷积神经网络的反向传播算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

几种典型的卷积神经网络

LeNet-5

在这里插入图片描述
在这里插入图片描述
这里解释一下(2),平均汇聚是相加然后乘以一个可训练参数,再加上一个可训练偏置,因此可训练参数的数量是 6 ∗ ( 1 + 1 ) 6 * (1 + 1) 6(1+1),而连接数是 6 ∗ 14 ∗ 14 ∗ ( 2 ∗ 2 + 1 ) 6 * 14 * 14 * (2 * 2 + 1) 61414(22+1),这里包括了偏置在内。
(3)C3这里使用了60个卷积核,为什么只得到了16个特征图,而不是60个特征图,这是LeNet-5的特殊的连接,连接表如下:

在这里插入图片描述

(5)C5卷积层是使用了120*16个二维的 5 X 5 5X5 5X5的卷积核,实际上就是120个三维的 5 X 5 X 16 5X5X16 5X5X16的卷积核。

实际上,上面的卷积核都是二维的,所以算起来不太一样,卷积层输出的特征图数目等于卷积核数目,不论上一层的特征图有多少,卷积核都可以进行卷积,最终只输出一个特征图(见下图),因为卷积核的通道数和输入特征图的通道数相同,每个通道都和卷积核对应通道的部分卷积,最后再相加,变成一个特征图。
在这里插入图片描述

AlexNet

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Inception网络

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

残差网络

在这里插入图片描述
在这里插入图片描述

其他卷积方式

在这里插入图片描述

转置卷积

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

空洞卷积

在这里插入图片描述
在这里插入图片描述

总结和深入阅读

在这里插入图片描述
在这里插入图片描述

习题

在这里插入图片描述
在这里插入图片描述
这里再解释一下窄卷积和宽卷积,以1维举例
在这里插入图片描述
比如说我有7个元素,卷积核长度是5,那么窄卷积出来的元素个数就是(7-5+1)= 3,而为了把边缘特征也提取出来,就需要进行0填充,在7个元素的左右各填充(5-1)=4个0,总共就有15个元素,那么宽卷积出来的元素个数就是(15-5+1)=11。接下来来证明宽卷积的可交换性:
首先给定一个二维图像 X ∈ R M X N X \in R^{MXN} XRMXN和一个二维卷积核 W ∈ R U X V W \in R^{UXV} WRUXV,由于要使用宽卷积,所以对图像进行填充,两端各补 U − 1 U-1 U1 V − 1 V-1 V1个零,得到全填充图像 X ∈ R ( M + 2 U − 2 ) X ( N + 2 V − 2 ) X \in R^{(M+2U-2)X(N+2V-2)} XR(M+2U2)X(N+2V2)

在这里插入图片描述
结果是一样的,所以是可交换的。
在这里插入图片描述
1X1的卷积核可以用来升降维,因为卷积后的特征图通道数和卷积核个数是相同的,那么通过给定个数的1X1卷积核就可以实现升降维。
1X1卷积核的升维和降维就是通道之间的线性组合,实现跨通道的信息交互,比如说3X3,64channel的卷积核后面再加一个1X1,28channel的卷积核,就会变成3X3,28channel的卷积核,原来的64个channel可以理解为跨通道线性组合变成了28个channels。
1X1卷积核增加了网络深度,因为添加了一层卷积层,卷积过程会包含一个激活函数,所以在特征图从尺寸不改变的情况下,增加了网络深度,增加了非线性,所以会增加整个网络的表达能力。

在这里插入图片描述
(1)通道数为256到256,相当于使用了256个3X3的卷积核,所以时间复杂度是 100 ∗ 100 ∗ 256 ∗ 3 ∗ 3 ∗ 256 = 5898240000 100*100*256*3*3*256=5898240000 10010025633256=5898240000
空间复杂度是 256 ∗ 100 ∗ 100 = 2560000 256*100*100=2560000 256100100=2560000
(2)通道数先从256到64再到256
时间复杂度是 100 ∗ 100 ∗ 256 ∗ 1 ∗ 1 ∗ 64 + 100 ∗ 100 ∗ 64 ∗ 3 ∗ 3 ∗ 256 = 1638400000 100*100*256*1*1*64+100*100*64*3*3*256=1638400000 1001002561164+1001006433256=1638400000
空间复杂度是 64 ∗ 100 ∗ 100 + 256 ∗ 100 ∗ 100 = 3200000 64*100*100+256*100*100=3200000 64100100+256100100=3200000
可以看到1X1的卷积核虽然多了些空间复杂度,但能大幅减少时间复杂度。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

以习题5-5的例子来说,
在这里插入图片描述
比如前向计算的时候,第 l + 1 l+1 l+1层的净输入为 z ( l + 1 ) = W ( l + 1 ) z ( l ) z^{(l+1)}=W^{(l+1)}z^{(l)} z(l+1)=W(l+1)z(l),那么反向传播时,第 l l l层的误差项为 δ ( l ) = ( W ( l + 1 ) ) T δ ( l + 1 ) \delta^{(l)}=(W^{(l+1)})^T \delta^{(l+1)} δ(l)=(W(l+1))Tδ(l+1),是一种转置关系。

上一篇:【Oracle】PL SQL 怎么重新编译无效的对象


下一篇:链式法则:神经网络前向与反向传播的基石