一、什么是卷积神经网络
卷积神经网络就是含有卷积层的网络。
二、有哪些经典的模型?每一次的技术进步在哪里?
- 卷积神经网络(LeNet)
LeNet第一次将卷积神经网络推上舞台,通过梯度下降训练卷积神经网络可以达到手写数字识别在当时最先进的结果。
LeNet交替使用卷积层和最大池化层后全连接层进行图像分类(使用sigmoid激活函数)。
2. 深度卷积神经网络(AlexNet)
Alex与LeNet结构类似,但使用了更多的卷积层和更大的参数空间来拟合大规模数据集ImageNet, 它是浅层神经网络和深度神经网络的分割线。
虽然看上去AlexNet的实现比LeNet的实现多了几行代码,但是观念上的转变和真正优秀的实验结果却令学术界付出了很多年。
(1)与相对较小的LeNet相比,AlexNet包含8层变换(5层卷积,2层全连接隐藏层,1个全连接输出层)
(2)将sigmoid激活函数改为更简单的ReLU激活函数
(3)通过丢弃发来控制全连接层的模型复杂度
(4)引入大量图像增广,比如翻转、裁剪、颜色变化等,进一步扩大数据集来缓解过拟合。
3. 使用重复元素的网络(VGG)
VGG通过5个可以重复使用的卷积块来构造网络,根据每块里卷积层个数和输出通道数的不同可以定义出不同的VGG网络。
VGG比起AlexNet计算通常慢很多,也需要更多的内存或显存。
eg:VGG-11使用5个卷积块,前两块使用单卷积层,后三块使用双卷积层。第一块输出通道是64,之后每次对输出通道数翻倍,直到变为512.
4. 网络中的网络(NiN)
串联多个由卷积层和“全连接层”构成的小网络来构建一个深层网络。
(1)NiN重复使用由卷积层和代替全连接层的1*1卷积层构成的NiN块来构建深层网络。
卷积层:输入和输出是四维,样本、通道、高、宽
全连接层:输入和输出是二维,样本、特征
如果想在全连接层后加上卷积层,需要将全连接层变为四维,而1*1卷积层可以看成全连接层,使得空间信息自然传递到后面的层中。
(2)NiN去除了容易造成过拟合的全连接输出层,而是将其替换成NiN块和全局平均池化层。
好处是可以显著减小模型参数尺寸,从而缓解过拟合。然而,该设计有时会造成训练时间的增加。
NiN块:输出通道数等于标签类别数
全局平均池化层:对每个通道的所有元素求平均并直接用于分类
NiN的以上设计思想影响了后面一系列神经网络的设计。
5. 含并行连接的网络(GoogleNet)
(1)Inception 模块
Inception块通过不同窗口形状的卷积层和最大池化层来并行抽取信息,并使用1*1卷积层减少通道数从而降低模型的复杂度。
在卷积网络中,如何设置卷积层的卷积核大小是一个关键问题,在Inception网络中,一个卷积层包含多个不同大小的卷积操作。eg:Inception模块同时使用1*1,3*3,5*5等不同大小的卷积核,并将得到的特征拼接起来作为输出特征映射。
(2)GooleNet将多个设计精细的Inception模块和其它层串联起来,其中Inception块的通道数分配之比是在ImageNet数据集上通过大量实验得来的。
(3)GoogleNet和它的后继者们一度是ImageNet上最高效的模型之一,在类似的测试精度下,它们的计算复杂度往往更低。
6. 残差网络(ResNet)
残差网络用于解决“退化现象”,当网络很深时,很小的数乘起来将会变成 0(梯度消失),很大的数乘起来会变得非常大(梯度爆炸)。 随着网络层不断的加深,模型的准确率先是不断的提高,达到最大值(准确率饱和),然后随着网络深度的继续增加,模型准确率毫无征兆的出现大幅度的降低。
为了解决梯度消失 / 爆炸的问题,添加了一个跳过 / 快捷方式连接,将输入 x 添加到经过几个权重层之后的输出中。输出为 H (x) = F (x) + x,权重层实际上是学习一种残差映射:F (x) = H (x) - x,即使权重层的梯度消失了,我们仍然始终具有标识 x 可以转移回较早的层。
7. 稠密连接网络(DenseNet)
稠密连接网络(DenseNet)是一种深度卷积神经网络,通过在网络中引入密集连接(dense connection)来增强特征重用和梯度流动,从而提高模型的性能和泛化能力。
ResNet将函数展开为:
ResNet和DenseNet的关键区别在于,DenseNet输出是连接(用图中的[,]表示)而不是如ResNet的简单相加。 因此,在应用越来越复杂的函数序列后,我们执行从x到其展开式的映射:
稠密网络主要由2部分构成:稠密块(dense block)和过渡层(transition layer)。 前者定义如何连接输入和输出,而后者则控制通道数量,使其不会太复杂。
稠密块: 基本构建单元,每个Dense Block包含多个卷积层和一个跳跃连接(shortcut connection),其中每个卷积层的输入都是前面所有层的拼接。
过渡层:由于每个稠密块都会带来通道数的增加,使用过多则会过于复杂化模型。 而过渡层可以用来控制模型复杂度。 它通过1×1卷积层来减小通道数,并使用步幅为2的平均汇聚层减半高和宽,从而进一步降低模型复杂度。
引用:
(186条消息) 深度学习知识点全面总结_GoAI的博客-CSDN博客
动手学深度学习 李沐
(194条消息) 卷积神经网络之 - 残差⽹络(RESNET)_视学算法的博客-CSDN博客
稠密连接网络(DenseNet) - 知乎 (zhihu.com)