AlexNet由Alex Krizhevsky设计,该网络结构在2012年ImageNet竞赛中获得冠军。
1. AlexNet网络整体结构
image.png
2. AlexNet网络中张量(图像)尺寸和参数数量
AlexNet网络中总共有5个卷积层和3个全连接层.总共有62,378,344个参数.
Layer Name | Tensor Size | Weights | Biases | Parameters |
---|---|---|---|---|
Input Image | 227x227x3 | 0 | 0 | 0 |
Conv-1 | 55x55x96 | 11x11x3x96=34848 | 96 | 34944 |
MaxPool-1 | 27x27x96 | 0 | 0 | 0 |
Conv-2 | 27x27x256 | 5x5x96x256=614400 | 256 | 614656 |
MaxPool-2 | 13x13x256 | 0 | 0 | 0 |
Conv-3 | 13x13x384 | 3x3x256x384=884736 | 384 | 885120 |
Conv-4 | 13x13x384 | 3x3x384x384=1327104 | 384 | 1327488 |
Conv-5 | 13x13x256 | 3x3x384x256=884736 | 256 | 884992 |
MaxPool-3 | 6x6x256 | 0 | 0 | 0 |
FC-1 | 4096x1 | 6x6x256x4096=37748736 | 4096 | 37752832 |
FC-2 | 4096x1 | 4096 x4096=16777216 | 4096 | 16781312 |
FC-3 | 1000x1 | 4096x1000=4096000 | 1000 | 4097000 |
Output | 1000x1 | 0 | 0 | 0 |
Total | 62378344 |
3. AlexNet突破性进展
3.1 引入非线性激活函数:ReLu
image.png
优点:
①不会梯度饱和,解决了gradient vanishing问题。
②计算复杂度低,不需要指数运算。
③适合用于反向传播。
缺点:
①输出不是zero-centered
②Dead ReLU Problem(神经元坏死现象):某些神经元可能永远不会被激活,导致相应参数永远不会被更新(在负数部分,梯度为0)。产生这种现象的两个原因:参数初始化问题;learning rate太高导致在训练过程中参数更新太大。 解决方法:采用Xavier初始化方法,以及避免将learning rate设置太大或使用adagrad等自动调节learning rate的算法。
③ReLU不会对数据做幅度压缩,所以数据的幅度会随着模型层数的增加不断扩张。
3.2 防止过拟合:Dropout
Dropout就是说,在训练的时候,所有的神经元都以一定的概率p被置为0,论文中取p=0.5,但是网络的权值都是共享的。这样,每个bacth送进网络进行训练的时候,相当于每次训练的网络结构都是不太相同的。最终训练完成之后,进行分类的时候,所有的神经元都不会被置为0,也就是说Dropout只发生在训练阶段。这样,最后的分类结果其实就相当于集成了多个不同的网络,效果自然会得到提升,泛化能力也强,在一定程度上可以减轻过拟合。
3.3 防止过拟合:Data augumentation
①从原始图像(256,256)中,随机的crop出一些图像(224,224)。【平移变换,crop】:训练时候,对于256x256的图片进行随机crop到224x224,然后允许水平翻转,那么相当与将样本倍增到((256-224)^2)x2=2048。
②水平翻转图像。【反射变换,flip】:测试时候,对左上、右上、左下、右下、中间做了5次crop,然后翻转,共10个crop,之后对结果求平均。
③给图像增加一些随机的光照。【光照、彩色变换,color jittering】:对RGB空间做PCA,然后对主成分做一个(0,0.1)的高斯扰动。结果让错误率又下降了1%。
3.4 归一化层的使用:LRN
局部响应归一化(Local Response Normalization)原理是仿造生物学上活跃的神经元对相邻神经元的抑制现象(侧抑制),简单来说就是对于在同一位置,不同的map层之间的神经元进行归一化。使得值越大的神经元会更大,小的会更小,从而增加网络的泛化能力,本质上,这个层也是为了防止激活函数饱和。
image.png
① a表示第i个核在位置(x,y)运用ReLu非线性神经元输出,n是同一位置上邻近kernel map的数目,N是kernel的总数。
②n=5 , k =2,α = 10^(-4), β=0.75是超参数,由验证机决定。
举个例子:i=10,N=96,n=4。当求第i=10个卷积核在位置x,y处提取到的特征(a),局部响应归一化过程如下:用(a)除以第8/9/10/11/12在位置x,y处提取的特征之和,就是“每个图”除以“半径以内的其他图对应像素的平方和”。