神经网络与深度学习深度学习-推荐系统-CV-NLP深度学习网络设计

Deep Learning学习笔记(六) 对设计卷积神经网络的一

2017-10-23  本文已影响926人  Edwin_dl

最近用tensorflow复现了AlexNetVGGNetGoogleIncptionNet(V3)ResNet等经典的深度神经网络,整个过程下来还是很有收获的,也算是对神经网络这部分有了更深刻的理解。其实这些网络的整体流程和LeNet无外乎还是相似的,但是在复现这些经典网络的过程中,感受最明显的还是网络背后的设计精妙之处。下面并不会对各网络的细节及每层的参数设置来做具体描述,只讲讲自己对上述几个经典网络设计的一点粗浅理解:

一、AlexNet

2012年,Hinton(DL届的爷爷辈人物)的学生Alex Krizhevsky提出了深度卷积神经网络AlexNet,并以显著的优势赢得了竞争激烈的ILSVRC 2012比赛,top-5的错误率降低至16.4%,相比第二名的成绩26.2%错误率有了巨大的提升。AlexNet可以说是神经网络在低谷期的第一次发声,确立了深度学习在计算机视觉的统治地位!

AlexNet将LeNet的思想发扬光大,把CNN的基本原理应用到了很深很宽的网络中。AlexNet主要用到的新技术有:

二、VGGNet

VGGNet是牛津大学和google一起研发的深度卷积神经网络。相比之前state-of-the-art的网络结构,错误率大幅下降,取得了ILSVRC 2014比赛分类项目的第2名和定位项目的第1名。直到目前,VGGNet依然经常被用来提取图像特征。

VGGNet可以说是探索了卷积神经网络的深度与其性能之间的关系,将日后的这些网络都推向了更深的层次。

VGGNet包括这几个网络都遵循着一个相同的设计思路:越靠后的卷积核数量越多

VGGNet的卷积层设计中一个特别好的trick:与其构建大的卷积核,不如换成几个很小的卷积核逐层提取,不仅参数可以减小,减轻过拟合,还增加了多层的非线性扩展能力。如3个3x3的卷积层串联的效果相当于1个7x7的卷积层,除此之外,3个串联的3x3卷积层,拥有比1个7x7的卷积层更少的参数量,只有后者的3x3x3/7x7=55%(蛋疼的简书不支持数学公式,凑合着看吧......)。最重要的是,3个3x3的卷积层拥有比一个7x7卷积层更多的非线性变换,使得CNN对特征的学习能力更强!

两个串联3x3的卷积层功能类似于一个5x5的卷积层.png

VGGNet的模型参数虽然比AlexNet多,但是反而需要较少的迭代次数就可以收敛,主要原因是更深的网络更小的卷积核带来的隐式的正则化效果

三、GoogleInceptionNet

GoogleInceptionNet首次出现在ILSVRC 2014的比赛中(和VGGNet同年),就以较大的优势取得了第一名。

InceptionNet一个极深的卷积神经网络,拥有非常精妙的设计和构造,整个网络的结构和分支非常复杂,其中有许多设计CNN的思想和trick值得借鉴:

论文中提到了其网络模型的稀疏结构主要基于Hebbian原理:“神经反射活动的持续与反复会导致神经元连接稳定性的持久提升,当两个神经元细胞A和B距离很近时,并且A参与了对B重复/持续的兴奋,那么某些代谢变化会导致A将作为能使B兴奋的细胞。”

在Inception V2的论文中提出了著名的Batch Normalization方法。BN是一个非常有效的正则化方法,可以让大型卷积网络的训练速度加快很多倍,同时收敛后的分类准确率也可以得到大幅提升。(具体关于Batch Normaliation的详细知识在这篇文章里)

四、ResNet

ResNet由微软研究院的何凯明(清华学霸,两次CVPR最佳论文)提出,通过使用Residual Unit成功训练152层深的神经网络,在ILSVRC 2015比赛中获得了冠军,取得3.57%的top-5错误率。

ResNet灵感解决了不断增加神经网络的深度时,会出现Degradation的问题,即准确率会先上升然后达到饱和,再持续增加深度则会导致准确率下降。这并不是过拟合的问题,因为不光是在测试集上误差增大,训练集本身误差也会增大!假设有一个比较浅的网络达到了饱和的准确率,那么在后面再加上几个y=x的全等映射层,起码误差不会增加。使用全等映射直接经前一层输出传到后面的思想,就是ResNet的核心意义

假设某段神经网络的输入为x,期望输出为H(x),如果我们只届把输入x传到输出作为初始结果,那么此时我们需要学习的目标就是F(x)=H(x)-x。ResNet相当于将学习目标改变了,不再是学习一个完整的输出H(x),指示输出和输入的差别H(x)-x,即残差。

Residual Unit.png

传统的卷积层或全连接层在传递信息时,或多或少会存在信息丢失/损耗等问题。ResNet在某种程度上解决了这个问题,通过直接将输入绕道传到输出,保护信息的完整性,整个网络则只需要学习输入、输出差别的那一部分,简化学习目标和难度。

上一篇下一篇

猜你喜欢

热点阅读