概述:自ImageNet 比赛开赛以来,很多里程碑式的CNN(卷积神经网络)相继出现。本篇技术贴是对其中最为有代表性ALexNet、VGG、InceptionNet(v1-v4, resnet)、Resnet的介绍与总结,尝试梳理CNN这一段灿烂的发展历程。有不当之处,还请大牛们多多指正。 一、整理发展脉络 Alexlet是第一个标志性的深层CNN网络,它利用dropout和ReLU等技术实现了对以前不能训练的深度网络的训练(不采用这些技术可能造成过拟合等问题)。接下来的网络是2014ImageNet的双雄,VGG和GoogLenet(也称inception)。VGG主要的优化方式可以概括为小卷积(small convolution filter),大深度。单纯的增加网络结构和大小会带来计算代价过大和过拟合等问题。GoogLenet尝试将全连接层替换为稀疏矩阵来解决过拟合。但是稀疏矩阵的计算效率又不高。GoogLenet(inception) V1引入了inception结构,通过将稀疏矩阵聚类为密集的子矩阵。这样既解决其计算效率不高也解决了深层网络的过拟合的问题。Inception v2提出了一些准则增大网络,并通过分解大卷积减少计算代价,辅助分类器解决梯度消失(后来证明并没有什么用)。Inception v3在v2基础上增加了BN(batch normalization: 批量正则化)等优化。同时,ResNet团队通过残差学习(residual learning),使得信息在网络中更加通畅的传递,加速了网络优化速度,提高了网络表现。Inception v4是通过进一步对v3增加深度、宽度和优化,已达到resnet类似的表现。Inception-Resnet,顾名思义就是inception结构和resnet结构的融合。Inception-ResNet-v1有和Inception v3相似的计算代价,Inception-ResNet-v2有和Inception v4相似的计算代价。接下来将对每一个网络进行详细的介绍。 二、详细介绍
1.深度网络AlexNet
图1 ReLU: ReLU(Rectified Linear Units), 翻译过来是修正的线性单元,主要是用来加速训练的。在此之前,我们通常用f(x)=tanh(x)或者sigmoid函数模拟神经元输出,这种函数被称为饱和非线性函数,函数图像见图二。ReLU表达式是f(x)=max(0,x),函数图像见图三. 图二 图三 为什么ReLU能加速训练呢?首先,显而易见ReLU的导数比sigmoid和tanh函数好求多了,在反向传导求梯度时快。另一方面,ReLU激活的部分梯度是1,梯度不容易消失。而sigmoid和tanh梯度很小,尤其是两端,这就使得梯度消失效应更严重。所以ReLU可以更快优化网络,即用更少的迭代次数实现收敛。最后,ReLU在x |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|