AlexNet 论文阅读笔记

ImageNet Classification with Deep Convolutional Neural Networks

为什么LeNet被提出后没有收到太多重视,但是AlexNet被提出之后就被关注?或者说,AlexNet好在哪里?

​ 数据量的增长:AlexNet的数据量是以million为单位的

​ ReLU修正线性单元的应用

​ GPU的出现加快了训练速度

​ Dropout:有效防止过拟合

Introduction

在object recognition(目标识别)上,机器学习算法表现得不好吗?

机器学习算法收到的表现好,但是之前用到的数据集都相对较小(以10k为单位),在小数据集上的简单任务上(比如手写数字识别,它的背景是纯色的,然后有内容的图像也只是数字的像素点,数字的类别和变形还是不多的),机器学习的表现已经很好了,但是现实中的物体变化都很大(背景、姿势、角度、纹理等等,都可能很不一样),目标识别任务不会像之前(cifar,Mnist等)那么简单,所以肯定需要更大的数据集(millions)。

更大的数据集带来的问题:millions of images需要学习能力更强大的学习器,卷积神经网络就是其中的一类。

the paper’s contribution:

​ 1) one of the largest CNNs which reached the best result

​ 2) GPU inplementation method

​ 3) new and unusual features to improve performance and reduce training time

​ 4) techniques to prevent overfitting

限制network的大小的主要因素:对训练时间的要求,GPU的内存大小

motivation:

​ 更复杂的任务–>对更大数据集的需求–>对更有效学习器的需求

为什么卷积神经网络比传统的计算机视觉机器学习算法好?

为什么之前用机器学习算法可以很好地处理Mnist等数据集,但是放到Imagenet这类数据集上就不适用了?

以kNN为例:把二维图像展成一维的,然后用kNN进行分类。但是这样做似乎会忽略掉二维图像相邻pixel的信息,在简单图像上没什么问题(例如手写数字),但是imagenet中的图片比手写数字肯定要复杂的多

特征提取算法+分类器:但是提取出来的特征是有限的

神经网络的一个好处就是不需要自己去想办法提取特征,可以自行提取特征

那么为什么卷积神经网络比全连接的经典神经网络更适合?全连接神经网络在处理图像的时候参数太多,训练起来很耗时,而且庞大的参数很可能导致过拟合。卷积神经网络可以共享权重,所以更适合图像的训练。

所以综合起来——CNN似乎更适合

特征提取一般是从原始像素里面提取高级特征,这些特征可能可以捕捉到类别间的区别,是无监督的过程,然后用这些特征跟标签去做分类。但是最终分类结果,很大程度上取决于你提取出来的特征够不够好、够不够有代表性,提取特征的过程可能就会很复杂漫长,可能还会需要很多人类的先验知识加入进去,可能都是在做猫狗分类,但是不一样的数据集,提出来的特征都会有很大差别,所以说传统方法更耗时而且可能不好推广。

Architecture

在这里插入图片描述

response-normalization layers: follow the 1&2 layers

max-pooling layer follow the response-normalization layers

relu is applied to every convolutional layer and fully-connected layer

这个结构,数据显示,如果去掉任意一层,都会降低最终模型的效果

ReLU修正线性单元

之前的激励函数:tanh或sigmoid

ReLU跟tanh比起来,可以显著使训练加快

为什么用ReLU训练起来更快?sigmoid和tanh可能出现梯度消失的问题(到了某个饱和的区间之后,sigmoid/tanh的导数就会趋近于0,然后梯度就会下降得很慢)

在大型数据集上应用大型模型时,训练速度会很重要。所以要使用ReLU,主要目的是加速模型的训练

Multiple GPUs

将训练分到两个GPU上

GPU只在特定的层进行交流

这样可以提高网络的运行速度,也容许了更大的规模的网络

在之后的实验中会发现,因为GPU之间的交流是受限制的(只在特定的层),所以说在训练中两个GPU上提取出来的特征的关注点可能会不一样(比如说一个更关注色彩方面的特征,另一个就不太关注颜色)

Local Response Normalization

ReLU本来是不需要它的输入被归一化的:不需要归一化来防止饱和(只要非零)

为什么需要归一化:如果数据分布发生变化,泛化能力会降低(每次学习都要去适应新的数据分布),所以需要归一化来使得数据分布达到相对的一致。

local normalization有助于模型的泛化

侧抑制:被激活的神经元抑制相邻的神经元(生物学概念)

LRN:借鉴侧抑制实现局部抑制。相当于引入了竞争机制?在卷积层之后应用。反馈较大的神经元的输出变得更大,抑制反馈相对较小的神经元

将ReLU的输出的结果和它周围的邻居做这样一个局部的归一化

Overlapping pooling 重叠池化

可以避免过拟合

会获得隔壁感受野的一些信息,可以获得相邻感受野之间的依赖信息

池化的过程相当于筛选特征减少特征的数量,重叠池化的话有可能两个池化核的结果是一样的

How to prevent overfitting?

why need to prevent overfitting: too much parameters to learn

data augmentation

label-preserving transformations

1, extract random patches and their horizontal reflections

2, alter the intensities of RGB channels: PCA

Dropout

why dropout is effective?

当每次不同的单元被dropout时,可以看作在训练不同结构的网络?相当于训练了很多不同结构的网络然后对结果求平均,这样可以抵消一些过拟合带来的影响

如果不用dropout的话,训练很多个不同的网络的成本很高的,采用dropout之后相当于是训练了很多不同的网络

因为每次dropout掉的单元都是随机的,这样迫使某个神经元学习的特征不应该过分依赖于别的神经元,学到的应该是更普遍的、更鲁棒的特征

为什么dropout主要被用在了全连接层上?卷积层的参数没那么多,不大会过拟合,全连接层参数太多,更可能过拟合吧

Details of learning

SGD: 随机梯度下降

small weight decay: reduce the model’s training error

怎么评价?

​ 1)看给出的top1/top5标签是不是正确的

​ 2)检索:网络在后面的一个全连接层不是会给出一个4096维的vector吗,找出来跟目标图像的vector在欧氏距离上最相近的几个图,看看他们是不是真的是同一类/真的相像。(为什么这样可以评价呢?因为即使是同一类的图,在原始pixel上的欧氏距离很有可能很远,比如说不同的位置、不同的姿势等等,所以其实还是看的网络是不是有提取到重要关键的信息)。直接算4096维向量间的距离还是很费时间的,所以可以再训练一个auto-encoder出来。
标图像的vector在欧氏距离上最相近的几个图,看看他们是不是真的是同一类/真的相像。(为什么这样可以评价呢?因为即使是同一类的图,在原始pixel上的欧氏距离很有可能很远,比如说不同的位置、不同的姿势等等,所以其实还是看的网络是不是有提取到重要关键的信息)。直接算4096维向量间的距离还是很费时间的,所以可以再训练一个auto-encoder出来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值