网络架构
- 这是论文中的图
PS:这个图的input尺寸应该是标错了??227*227*3吧??
上图中,其实能明显地看出上面一层和下面一层。上下两层各由一个GPU进行计算(其实是硬件条件补星2333)。这两个GPU只在固定的几层之间进行交流。
- 一个易于计算的示意图
网络总共的层数为8层,5层卷积,3层全连接层。
- 简化的图
- 也有人理解成模块
其中前5模块四卷积模块,用于提取图片特征,后3个模块是全链接层,用于图像分类。
(1)第一、二模块
(2)第三、四模块
(3)第五模块
(4)第六模块
(5)第七、八模块
创新点
- ReLu函数 ---------- f(x)=max(0,x)
基于ReLU的深度卷积网络比基于tanh和sigmoid的网络训练快数倍,下图是一个基于CIFAR-10的四层卷积网络在tanh和ReLU达到25%的training error的迭代次数:
- 标准化(Local Response Normalization)LRN
在神经网络中,我们用激活函数将神经元的输出做一个非线性映射,但是tanh和sigmoid这些传统的激活函数的值域都是有范围的,但是ReLU激活函数得到的值域没有一个区间,所以要对ReLU得到的结果进行归一化。也就是Local Response Normalization。局部响应归一化的方法如下面的公式:
表示输入的(x,y)位置做第i次卷积并通过relu单元的结果,而是对应的归一化相应结果。 n是指相同位置的第i 次前后附近的n次卷积,而N是总的卷积次数。而且,这个卷积核作用的次序是在训练前就已经定好了。实际上,这个局部响应归一化是模拟生物神经元的侧抑制作用,当前神经元的作用受附近神经元作用的抑制,这样我们就理解为何上图公式,在归一化阶段仅仅除以相同位置附近前后几次的神经元响应的平方,而不是N次结果响应的平方。
- Dropout
之前转载的一篇blog(理解dropout)
- 数据增强(data augmentation)
在深度学习中,当数据量不够大时候,一般有4解决方法:
(1) data augmentation——人工增加训练集的大小——通过平移, 翻转, 加噪声等方法从已有数据中创造出一批"新"的数据
(2)Regularization——数据量比较小会导致模型过拟合, 使得训练误差很小而测试误差特别大. 通过在Loss Function 后面加上正则项可以抑制过拟合的产生. 缺点是引入了一个需要手动调整的hyper-parameter。
(3)Dropout——也是一种正则化手段. 不过跟以上不同的是它通过随机将部分神经元的输出置零来实现
(4) Unsupervised Pre-training——用Auto-Encoder或者RBM的卷积形式一层一层地做无监督预训练, 最后加上分类层做有监督的Fine-Tuning
参考
详解深度学习之经典网络架构(二):AlexNet 有代码实现
深入理解AlexNet网络
深入理解AlexNet网络