【ZJU-Machine Learning】卷积神经网络-AlexNet

【ZJU-Machine Learning】卷积神经网络-AlexNet_第1张图片
【ZJU-Machine Learning】卷积神经网络-AlexNet_第2张图片

ImageNet包含超过120万张彩色图片,属于1000个不同类别,这是目前为止最大的图像识别数据库。Alex Krizhevsky等人构建了一个包含65万多个神经元,待估计参数超过6000万的大规模网络,这一网络被称为AlexNet

改进

(1)以ReLU函数代替公式sigmoid或tanh函数

【ZJU-Machine Learning】卷积神经网络-AlexNet_第3张图片
【ZJU-Machine Learning】卷积神经网络-AlexNet_第4张图片
这样做能使网络中的神经元个数减少,以更快速度收敛。此外其导数始终为1.相较sigmoid,他能传播的更深远。

(2)为降采样操作起了一个新的名字—池化(Pooling),意思是把邻近的像素作为一个“池子”来重新考虑。左边所有红色的像素值可以看做是一个“池子”,经过池化操作后,变成右边的一个蓝色像素。
【ZJU-Machine Learning】卷积神经网络-AlexNet_第5张图片
在AlexNet中,提出了最大池化(Max Pooling)的概念,即对每一个邻近像素组成的“池子”,选取像素最大值作为输出。在LeNet中,池化的像素是不重叠的;而在AlexNet中进行的是有重叠的池化。实践表明,有重叠的最大池化能够很好的克服过拟合问题,提升系统性能。

反向传播时,采用赢者通吃的策略,即仅有去最大值的地方有梯度,其余地方都是0.

实践证明,MaxPooling比取平均值更优,主要有以下几个原因:
1)MaxPooling将非线性和降采样融合进了一步。
2)反向传播时,其激活的神经元个数大大减少,通过收敛速率。

(3)随机丢弃(Dropout)。为了避免系统参数更新过快导致过拟合,每次利用训练样本更新参数时候,随机的“丢弃”一定比例的神经元,被丢弃的神经元将不参加训练过程,输入和输出该神经元的权重系数也不做更新。这样每次训练时,训练的网络架构都不一样,而这些不同的网络架构却分享共同的权重系数。实验表明,随机丢弃技术减缓了网络收敛速度,也以大概率避免了过拟合的发生。
【ZJU-Machine Learning】卷积神经网络-AlexNet_第6张图片
Dropout做法是,对每一层,每次训练时以概率p丢弃一些神经元,这样每次训练的网络都不一样。
训练结束后的测试流程,要用完整的网络结构,同时对该层的所有的参数(W,b)都要乘以(1-p)。
这样,相当于训练了很多网络,最后求平均。

(4)增加训练样本。尽管ImageNet的训练样本数量有超过120万幅图片,但相对于6亿待估计参数来说,训练图像仍然不够。Alex等人采用了多种方法增加训练样本,包括:1. 将原图水平翻转;2. 将256×256的图像随机选取224×224的片段作为输入图像。运用上面两种方法的组合可以将一幅图像变为2048幅图像。还可以对每幅图片引入一定的噪声,构成新的图像。这样做可以较大规模增加训练样本,避免由于训练样本不够造成的性能损失

(5)用GPU加速训练过程。采用2片GTX 580 GPU对训练过程进行加速,由于GPU强大的并行计算能力,使得训练过程的时间缩短数十倍,哪怕这样,训练时间仍然用了六天。

CAFFE实现ALEXNET

训练数据
【ZJU-Machine Learning】卷积神经网络-AlexNet_第7张图片
测试数据
【ZJU-Machine Learning】卷积神经网络-AlexNet_第8张图片
【ZJU-Machine Learning】卷积神经网络-AlexNet_第9张图片
【ZJU-Machine Learning】卷积神经网络-AlexNet_第10张图片
【ZJU-Machine Learning】卷积神经网络-AlexNet_第11张图片
【ZJU-Machine Learning】卷积神经网络-AlexNet_第12张图片

你可能感兴趣的:(【ZJU】机器学习)