[高大上的DL]经典网络模型总结之AlexNet篇

为了不让大家以为我这两天没学习的假象(shi shi),决定今天一定要更新一下了!

之前基本把卷积神经网络的内容过了一遍,还差一点就是网络层的介绍,后来我想了一下,不如和经典的卷积神经网络放在一起,因为这些经典的网络,因为应用了一些比较好的思想而取得state-of-the-art(当前最好)的效果。所以放在一起可以更好的理解吧。今天简单说一下著名的AlexNet,当然总结的目的不是说可以代替大家看论文,只是把我当时看的时候,不明白的地方说一下。还有就是AlexNet可以给我们的启发,以后可以借鉴的地方。

首先要搞清楚例如LeNet,VGG,AlexNet,GoogLeNet,ResNet等,这些是什么东西?和之前讲的CNN有什么关系?这些模型主要是为了解决图片分类的问题,区别在于模型的结构不同,他们都是基于CNN的,其中LeNet是最早提出来的(when,who可以去了解一下)。下面开始AlexNet,直接看模型结构。

图1:AlexNet(简单标一下号,方便描述)

这是一张论文里面的图,学习AlexNet都会见到的一张图。首先我想说一下,这张图里面有一个小小的bug(在我看来),就是这张图并不完整,他上面还有一部分没画出来!!!你知道这是什么问题吗,这个问题困扰了我很久,每次看都看不懂,后来发现上面确实只画了1/2,但是一直没人告诉我啊(囧)。AlexNet的作者是Alex Krizhevsky,就是以作者的名字命名的。

接下来,我们从左到右解释一下,首先是一个224x224x3大小的图片,3代表通道。然后有2个大小为11x11的卷积核,为什么是2个?因为AlexNet是12年提出来的,那时候没有像现在这么牛的NVIDIA的GPU,当时用的是580吧,现在都已经1080了,对吧。所以呢机智的作者就把模型分到了2个GPU上进行训练。他们每一个的过程其实是一样的,只不多分为两个GPU上,可以加速模型训练的过程。要知道当时AlexNet用的数据是百万级的ImageNet数据集,有1000个类别。如果没有好的GPU,训练过程是很困难的,还有要说的是,那时候还没有TensorFlow这样可以省去写很多底层的框架!恩,我就是想说,作者很厉害,很厉害!由于Alex开创性的贡献,现在有很多人使用好几个GPU做并行运算,为什么可以这样做?了解一点,是因为现在NVIDIA的GPU都支持交互计算(细节我也不清楚)。

然后看一下stride of 4,是什么意思。Stride也叫做步长,他表示两个卷积核中心点的距离。就是第一个卷积核起始的位置与下一个卷积起始的位置相隔4个像素点,挺好理解的,理解不了,可以自己画个图。做完卷积之后得到了一个55x55x48大小的图,注意48代表通道,这里也就是feature map的数量。如果加了stride之后,怎么知道卷积之后图片的大小是多少呢?这里是有公式的,这个公式我开始学的时候并不知道。

其中W2,H2代表卷积之后图片的长和宽,同理W1,H1。P代表Padding的数量,Padding一般是ZeroPadding,简单说就是给图像的最外层补P圈0,P等于几就补几圈。这样做的好处之一是,可以增强图像边缘的特征的提取。S代表Stride的数目,就是卷积的步长,F就是卷积核的大小。但是我按照这个公式算,并不能算对……,后面我把这里搞明白了再告诉大家,谁知道可以给我说下哈。然后由2到3是先做了卷积然后做max pooling,同理3到4,这里要注意卷积核大小的变化,一直到5到6的时候卷积核是3x3的。6到7,7到8,8到9是三个全连接层,模型结构基本就是这样的了。

接下说一下AlexNet比较重要的几个地方。AlexNet有几个创造性的地方,包括使用Relu激活函数、多个GPU并行、Local Response Normalization、Data Augmentation以及防止过拟合的Dropout。

1. Dropout

Dropout之前没有提到过,今天主要介绍一下这个。神经网络之所以在深度学习之前没有发展起来的一个重要原因就是很容易过拟合,而Dropout是一种避免过拟合的神器!Dropout的想法很简单,就是在每次训练的时候,以一定的概率(一般取0.2,0.25,0.3)断开一部分神经元的连接,见下图。既然神经元断开了,那么就意味着网络的weights不再更新。然后按照断开之后的神经元的链接方式继续向前传播,利用输出的损失反向传播来更新参数。等到下一次再向前传播的时候,又会随机断开一定比例的神经元,注意这里断开的不一定是上次一断开的神经元,所以上一次断开的神经元的参数又可以继续更新。这样不断的重复这个过程,就可以有效防止过拟合。

图2: Dropout(来源网络)

2. ReLu激活函数

这个函数在当时来看是十分先进的,但是现在已经在很普遍的使用了,还出现了对他的改进版,Leaky Relu,所以这里只要了解一下,知道AlexNet使用了这个函数即可。这里想说的是,要作为激活函数,必须是可微分的,比如sigmoid,tanh,relu等都是存在导函数的。

其他几个点可以看论文去了解一下,我觉得不是十分重要(I want to go to bed…),就不说了哈。

本文分享自微信公众号 - 机器学习和数学(ML_And_Maths)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-05-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器之心

教程 | 无需反向传播的深度学习:DeepMind的合成梯度

选自GitHub 作者:iamtrask 机器之心编译 参与:王宇欣、Ellen Han 在这篇博文中,我们将从起点(从零开始)学习 DeepMind 最近提...

396100
来自专栏DT乱“码”

TensorFlow实现卷积神经网络

1.卷积神经网络简介 卷积神经网络(convolutional neural network, CNN),最早是19世纪60年代,生物学家对猫视觉皮层研究发...

32490
来自专栏null的专栏

优化算法——截断梯度法(TG)

一、L1正则的表达形式    在机器学习中,几乎无人不知无人不晓L1正则与L2正则,L1正则与L2正则都有参数控制的作用,对模型起到约束的作用,防止过拟合。但是...

56560
来自专栏人工智能

基于TensorFlow生成抽象纹理

来源:otoro 编译:weakish 编者按:Google Brain机器学习开发者hardmu使用TensorFlow,基于CPPN网络生成了许多有趣的高分...

58780
来自专栏AI科技评论

干货 | 攻击AI模型之DeepFool算法

AI 科技评论按:本文为“兜哥带你学安全”系列之三,首发于AI科技评论,未经许可不得转载。

48530
来自专栏人工智能LeadAI

零基础入门深度学习 | 第三章:神经网络和反向传播算法

无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习这个超热的技术,会不会感...

543120
来自专栏marsggbo

论文笔记系列-Simple And Efficient Architecture Search For Neural Networks

本文提出了一种新方法,可以基于简单的爬山过程自动搜索性能良好的CNN架构,该算法运算符应用网络态射,然后通过余弦退火进行短期优化运行。

16410
来自专栏PaddlePaddle

【词向量】Hsigmoid加速词向量训练

导语 PaddlePaddle提供了丰富的运算单元,帮助大家以模块化的方式构建起千变万化的深度学习模型来解决不同的应用问题。这里,我们针对常见的机器学习任务,提...

32780
来自专栏数据科学学习手札

(数据科学学习手札36)tensorflow实现MLP

  我们在前面的数据科学学习手札34中也介绍过,作为最典型的神经网络,多层感知机(MLP)结构简单且规则,并且在隐层设计的足够完善时,可以拟合任意连续函数,而除...

50540
来自专栏数据派THU

Python实例介绍正则化贪心森林算法(附代码)

作者:Ankit Chaoudhary 翻译:笪洁琼 校对:梁傅淇 通过本文与大家讨论一个被称为正则化的贪心森林算法。 引言 作为一名参与多个机器学习竞赛数据...

50860

扫码关注云+社区

领取腾讯云代金券