zoukankan      html  css  js  c++  java
  • AlexNet——ImageNet Classification with Deep Convolutional Neural Networks

    1. 摘要

    本文的模型采用了 5 层的卷积,一些层后面还紧跟着最大池化层,和 3 层的全连接,最后是一个 1000 维的 softmax 来进行分类。

    为了减少过拟合,在全连接层采取了 dropout,实验结果证明非常有效。

    2. 数据集

    ImageNet 数据集包含了超过 15,000,000 大约 22,000 类标记好的高分辨率图片,ILSVRC 包含 ImageNet 中 1000 类每类大约 1000 张图片,总共大约有 1,200,000 张训练图片,50,000 张验证图片和 150,000 张测试图片。由于之只有 ILSVRC-2010 的测试集标签可以获得,本文的大部分实验都是基于此数据集。

    数据集中的图片分辨率各不相同,但是网络需要固定的输入维度,因此,作者将图片统一下采样到一个固定的分辨率 256×256。给定一个长方形的图片,先将较短的一边调整为 256,然后裁剪出中间的 256×256 区域作为训练数据。除了减去所有像素的均值,作者未作其它预处理。

    3. 网络结构

    3.1. ReLU

    采取 ReLU 作为激活函数的深度卷积网络训连起来要比采取 Tanh 的快好几倍,因此作者采用 ReLU 作为激活函数。

    3.2. 多 GPU 训练

    单个 GTX 580 GPU 的显存只有 3 GB,限制了网络的最大容量,因此作者利用两个 GPU 并行计算来进行训练。其中,每个 GPU 上分配一半的神经元,而且两个 GPU 间只在特定的层才进行数据同步。

    3.3. 局部响应归一化

    尽管 ReLU 不会遇到输出饱和的问题,但是作者仍然发现局部响应归一化有助于网络的泛化。设定 (a_{x,y}^i) 为位置 ((x,y)) 处第 (i) 个卷积核的响应,那么归一化后的响应 (b_{x,y}^i) 为:

    其中求和在相同空间位置的 (n) 个“相邻”内核映射上进行,(N) 是这一层卷积核的总数。这种响应归一化实现了一种横向抑制,这是受到真实神经元中发现的类型所启发,从而在使用不同内核计算的神经元输出之间产生大的竞争。其中,(k, n, alpha, eta) 都是超参数,需要根据验证集来设定。采用局部响应归一化后,top-1 错误率和 top-5 错误率分别下降了1.4% 和 1.2%。

    3.4. 重叠池化

    传统的池化步长 (s) 和池化区域大小(z*z) 相等,即 (s=z)。在本文中,作者设定 (s<z),这也就是重叠池化。通过采用 (s=2,z=3),top-1 错误率和 top-5 错误率分别下降了 0.4% 和 0.3%。

    3.5. 整体结构

    第一层和第二层网络具有卷积、池化和局部归一化,第三四五层网络只有卷积

    4. 减少过拟合

    4.1. 数据增广

    作者采取了两种方式来进行数据增广,扩充的图片是在 CPU 上进行的,同时 GPU 在进行上一个批次图片的训练,这两个过程并行进行,不引入额外的计算。

    第一种方法是将图片进行平移和水平翻转,从 256×256 的图片中随机裁剪出 224×224 的区域以及它们的水平翻转作为训练图片,这使作者的训练数据扩大了 2048 倍。在测试的时候,从图片中裁出 5 个 224×224 小片(四角和中间)以及它们的水平翻转总共 10 张图片,然后对 10 个输出取平均来进行预测。

    第二种方法是改变图片 RGB 通道的强度。在整个 ImageNet 训练集上对 RGB 通道的像素使用 PCA,然后为每张训练图片添加主成分的倍数,这个幅度正比于特征值和一个从零均值 0.1 标准差的高斯分布中产生的随机变量的乘积。

    [[I_{xy}^R, I_{xy}^G, I_{xy}^B]^T=[p_1, p_2, p_3][alpha_1lambda_1, alpha_2lambda_2, alpha_3lambda_3]^T ]

    (p_i)(lambda_i) 代表第 (i) 个特征值和特征向量,(alpha_i) 是随机变量。对于一张训练图片,所有位置的像素共用同一组 (alpha_i),直到下次这张图片再被用来训练就再产生一个随机变量。该方案近似地捕获自然图像的重要特性,即,某个物体对于光照的强度和颜色的变化是不变的。 采用此方案后, top-1 错误率降低了 1% 以上。

    4.2. Dropout

    通过采取 Dropout,每次有一半的神经元被丢弃,它们因此就不再参与前向和后向过程。也即是每次的网络结构都是不一样的,但这些结构的权重是共享的。这个技术减少了神经元之间的互相依赖,因为某一个神经元并不能依赖其他神经元的出现,其他神经元可能随机被丢弃。因此,它被迫学习更强大的特征,这些特征与其它神经元的许多不同随机子集组合起来非常有用。

    5. 实验结果

    获取更多精彩,请关注「seniusen」!

  • 相关阅读:
    Asp.net2.0 中自定义过滤器对Response内容进行处理 dodo
    自动化测试工具 dodo
    TestDriven.NET 2.0——单元测试的好助手(转) dodo
    JS弹出窗口的运用与技巧 dodo
    ElasticSearch 简介 规格严格
    修改PostgreSQL字段长度导致cached plan must not change result type错误 规格严格
    Linux系统更改时区(转) 规格严格
    mvn编译“Cannot find matching toolchain definitions for the following toolchain types“报错解决方法 规格严格
    ElasticSearch 集群 & 数据备份 & 优化 规格严格
    Elasticsearch黑鸟教程22:索引模板的详细介绍 规格严格
  • 原文地址:https://www.cnblogs.com/seniusen/p/10721761.html
Copyright © 2011-2022 走看看