上一篇文章中的LeNet-5是第一个广为人知的经典CNN网络,但那是20年前提出的CNN网络,最成功的案例是解决了手写数字识别的问题,当时被广泛应用于邮局/银行的手写邮编/支票数字自动识别系统。但直到2012年之前,在这14年间,CNN网络在图像识别领域的地位逐渐被其他分类模型如SVM取代。其中主要的原因有(事后诸葛亮......):
经过十几年的发展,以上制约CNN网络发展的主要限制因素一个个被解决,结果在2012年的ImageNet竞赛中,继LeNet-5之后的第二个经典CNN网络—AlexNet横空出世。以超出第二名10%以上的top-5准确率,勇夺ImageNet2012分类比赛的冠军,从此, 深度学习 重新回到人们的视野,并一发不可收拾。
下面从一些直观的数据比较1998年的LeNet-5和2012年的AlexNet的区别:
AlexNet网络结构如下图所示:
论文中由于使用了2块GPU,将网络结构布置成了上下两部分,看着很不方便,上图是在网上找的简易版本。
下面总结AlexNet的主要特点:
3.1. 使引入Relu激活函数减轻深度网络难以训练的问题
关于CNN网络的激活函数的讨论,SigAI公众号这篇文章总结的挺好:
另外,下面这篇论文对深度网络难以训练的问题进行了分析:
之前的CNN网络,包括前面著名的LeNet-5,都使用tanh/Sigmoid作为激活函数,这类激活函数具有饱和性,在训练深层网络时会造成梯度消失问题,而AlexNet引入了非饱和的Relu激活函数,有效地缓解了梯度消失问题。
3.2. 解决深度网络的过拟合问题
一方面,近几年来,人们越来越意识到构建庞大的数据集的重要性,于是出现了像ImageNet这样超过1500万张标注图片,2200多种类别的数据集,ILSVRC2012中,AlexNet使用了150万张图片的庞大训练集,使得拥有6000万个参数的AlexNet也没出现严重过拟合问题;
另外,AlexNet在训练时使用了数据增强(data augmentation)策略,相当于进一步扩大了训练数据集;
最后,AlexNet在全连接层部分引入了一个dropout层,同样能有效防止模型出现过拟合。
3.3. 计算能力问题
尽管AlexNet的模型复杂度很大,但其利用了英伟达GPU强大的计算能力,在GPU面前,模型复杂度不是问题。
从模型的设计思路来看,其实AlexNet遵循了LeNet-5的思想,即使用交替的卷积层和池化层用于提取图像的高级语义特征,同时降低特征尺寸。然后使用全连接层/MLP作为分类层。
但是,在细节部分,ALexNet引入了很多新的元素,用于解决以上提到的CNN网络遇到的诸多问题,使得CNN网络开始重新散发光芒。