卷积神经网络学习笔记与心得(5)全连接层
经过若干层卷积和池化后,图片的维度会越来越小,数量会越来越多,最终进入全连接层并分类输出(传统的神经网络)。由于全连接层会有大量的连接权值,模型过拟合的可能性会增加。对此,研究者提出过稀疏连接和Dropout等方法,降低过拟合的可能性。
Dropout是一种简单且有效的防止过拟合的方法。它用于训练阶段的全连接层:每次训练时,随机使全连接层的某些节点不更新,但是将他的权重保留下来。
Dropout原理的一种直观解释是:由于每次用输入网络的样本进行权值更新时,隐含节点都是以一定概率随机出现,因此不能保证每2个隐含节点在每次遍历时都同时出现,这样权值的更新不再依赖于有固定关系隐含节点的共同作用,阻止了某些特征仅仅在其它特定特征下才有效果的情况。
关于全连接层,我在做OCR项目时还有这样一段插曲:项目开始的时候,由于所有大家都没有深度学习技术的使用经历,连使用哪种模型都不清楚。当时流行的模型很多,比如Lenet5,GoogLenet v1,Resnet50等等。考虑到Lenet5可能没法胜任混合字符识别,我们首先将Lenet5排除了(后来我们使用的模型是在Lenet5上加了一个卷积层,一个池化层,我们称之为Lenet7_),而Resnet50模型我们的机器跑不动,因此选择了GoogLenet v1。GoogLenet v1的输出层和一般的卷积神经网络不同,它使用的是全局平均池化,而不是全连接层。这个概念是2014年一篇名为《Network in Network》的论文中提出的(这篇论文很有名)。使用全局平均池化代替全连接层的目的主要是为了减少参数数量,消除过拟合风险(全局平局池化层并不需要学习)。
离职后的一天,我突发奇想把Lenet7的全连接层换成了全局平均池化,结果让我大吃一惊,识别率急剧下降。后来我才意识到,全连接层是个非线性分类器,它在一定程度上保证模型的复杂度,当提取到的特征向量不互斥时,全连接层就能发挥作用了。而GoogLenet是一个22层网络,提取到的特征足够抽象,特征向量几乎是完全互斥的,这时用全局平均池化这样的线性分类器才能够发挥比较好的作用。详情可以看这条链接中魏秀参的答案:
https://www.zhihu.com/question/41037974/answer/150522307