AlexNet的基本结构

Alexnet是由5个卷积层和三个全连接层组成,一共8个权重层(池化层不是权重层因为其没有参数),其中ReLU激活函数作用在每个卷积层和全连接层上,在第一个卷积层和第二个卷积层后面连接一个局部响应规范化层,最大池化层作用在第一个卷积层,第二个卷积层和第五个卷积层的输出上。

ReLU

在AlexNet结构中抛弃了传统的‘s'形激活函数,而是选择了修正的线性单元作为激活函数也就是relu传统的’s'形激活函数有f(x)=1/(1+e-x),f(x)=tanh(x),其中sigmoid函数如下图:

sigmoid函数具有饱和特性,当输入较大或者较小时,输出曲线接近平缓,此时梯度几乎为0,会造成消失的梯度问题,并且它的输出均值不为0,可能会造成偏置转移,会使得后一层的神经元将上一层的输出的非0均值的信号作为输入,并且它的输出范围在0~1,没有包含负信息,可能会损失一部分有用的信息。

上图为tanh函数的曲线图,由图可知,它的输出值的范围为[-1,1],其输出均值为0,并且包含了负信息,但是由于它也具有饱和特性,所以也会造成消失的梯度问题。

ReLU的形式为:f(x)=max(0,x),当输入为正时,输出值取其本身,此时关于输入x的导数为1,是一个常数,避免了消失的梯度问题,并且当输入小于0时,输出为0,引进了稀疏性,能够加速训练,但是由于其输出均值也大于0,所以也会出现偏置转移现象,并且由于当输入小于0时,对应的神经元输出为0,梯度为0,对应的权重也就无法更新。

重叠最大池化

AlexNet中使用了池化区域为3X3,步长为2的重叠池化,并且声称此种池化方法要比传统的池化区域为2X2,步长为2的非重叠池化方法效果好,论文中说效果提升了0.3%,但是我在其他数据集实验发现,重叠池化的效果不如非重叠池化,理由是当使用重叠池化时,下一个池化区域的最大值很可能就是上一个池化区域最大元素的副本,此时相当于造成了特征冗余。

局部响应规范化

其中aix,y为第i个卷积核在位置(x,y)处做卷积得到特征映射中的元素,再使用relu对其进行非线性变化得到的神经元。bix,y为经过局部响应规范化处理后得到的神经元。N是在某一层中卷积核的总量.k,ε,n,β为超参数,由网络训练得到,在AlexNet中设置k=2,n=5,ε=10-4,β=0.75。局部响应规范化中的求和是在n个相邻的特征映射中的同一个位置,也就是(x,y),这样相当于在神经元之间引入一种竞争机制,较强的特征会有一个较大的元素值。

减少过拟合

1.数据集扩增

在图像数据中最简单和最普通减少过拟合的方法就是人工的扩增数据集,当然这是在保留标签信息的情况下。比如原图片的尺寸是256X256,就可以随机的在原图片上裁剪一个224X224的小块进行训练,并对其进行水平翻转,平移等操作,扩大数据集。

2.Dropout

Dropout是一种正则化方法,随机的将隐藏层的神经元的值置为0,其中有一个drop率为p,通常p设置为0.5,dropout强迫每个神经元学习独立的特征,而不用依赖其他的神经元。它也相当于权重衰减,当某个神经元的值为0时,连接它的权重也为0,网络的参数变少,复杂度降低,防止过拟合,并且它也相当于一种模型融合,假设网络中一共有n个神经元,p=0.5,则此时,相当于有2n个子网络同时训练,是一种模型平均方法,提高泛化表现。

网络结构分析

通常在卷积层后面都应该接一个池化层,但是AlexNet却只在第一个卷积层,第二个卷积层和最后一个卷积层后面连接最大池化,这是因为在网络的较低层,特征映射的大小一般很大,含有较多的参数,这是进行池化的目的是为了减少的参数的数量,防止过拟合,而在网络的较高层,提取的特征一般是高级特征,可能是某个物体的轮廓,比如小狗的眼睛,但是小狗可能出现在图像中的任意位置,此时最大池化的目的是提供一种平移翻转不变性。至于AlexNet为什么只用了5个卷积层,文中提到深度是重要的,但是再深可能会出现退化现象。而去掉一个卷积层又会使网络的表示能力下降。

CNN中的经典结构之AlexNet的更多相关文章

  1. 论文笔记:CNN经典结构1(AlexNet,ZFNet,OverFeat,VGG,GoogleNet,ResNet)

    前言 本文主要介绍2012-2015年的一些经典CNN结构,从AlexNet,ZFNet,OverFeat到VGG,GoogleNetv1-v4,ResNetv1-v2. 在论文笔记:CNN经典结构2 ...

  2. 小白的经典CNN复现(三):AlexNet

    小白的经典CNN复现(三):AlexNet 锵锵--本系列的第三弹AlexNet终于是来啦(≧∀≦),到了这里,我们的CNN的结构就基本上和现在我们经常使用或者接触的一些基本结构差不多了,并且从这一个 ...

  3. 论文笔记:CNN经典结构2(WideResNet,FractalNet,DenseNet,ResNeXt,DPN,SENet)

    前言 在论文笔记:CNN经典结构1中主要讲了2012-2015年的一些经典CNN结构.本文主要讲解2016-2017年的一些经典CNN结构. CIFAR和SVHN上,DenseNet-BC优于ResN ...

  4. deep learning 经典网络模型之Alexnet、VGG、Googlenet、Resnet

    CNN的发展史 上一篇回顾讲的是2006年Hinton他们的Science Paper,当时提到,2006年虽然Deep Learning的概念被提出来了,但是学术界的大家还是表示不服.当时有流传的段 ...

  5. CNN中,1X1卷积核到底有什么作用呢?

    CNN中,1X1卷积核到底有什么作用呢? https://www.jianshu.com/p/ba51f8c6e348 Question: 从NIN 到Googlenet mrsa net 都是用了这 ...

  6. CNN中的局部连接(Sparse Connectivity)和权值共享

    局部连接与权值共享 下图是一个很经典的图示,左边是全连接,右边是局部连接. 对于一个1000 × 1000的输入图像而言,如果下一个隐藏层的神经元数目为10^6个,采用全连接则有1000 × 1000 ...

  7. MATLAB对于文本文件(txt)数据读取的技巧总结(经典中的经典)

    振动论坛原版主eight的经典贴http://www.chinavib.com/thread-45622-1-1.html MATLAB对于文本文件(txt)进行数据读取的技巧总结(经典中的经典)由于 ...

  8. 如果将彩色图像和灰度图像一起放进 CNN 中去,会是什么结果?

    如果将彩色图像和灰度图像一起放进 CNN 中去,会是什么结果? 今天,坑爹的实验,我处理 SUN397 的时候,忘记去掉灰度图了,结果,利用微调后的 model 提取 feature,悲剧的发现,无论 ...

  9. CNN中的卷积核及TensorFlow中卷积的各种实现

    声明: 1. 我和每一个应该看这篇博文的人一样,都是初学者,都是小菜鸟,我发布博文只是希望加深学习印象并与大家讨论. 2. 我不确定的地方用了"应该"二字 首先,通俗说一下,CNN ...

随机推荐

  1. spring MVC框架入门(外加SSM整合)

    spring MVC框架 一.什么是sping MVC Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面.Spring 框架提供了构建 W ...

  2. 什么是MQTT协议?

    MQTT协议介绍 MQTT协议是什么? MQTT(Message Queuing Telemetry Transport Protocol)的全称是消息队列遥感传输协议的缩写,是一种基于轻量级代理的发 ...

  3. JWT(JSON Web Token) 多网站的单点登录,放弃session

    多个网站之间的登录信息共享, 一种解决方案是基于cookie - session的登录认证方式,这种方式跨域比较复杂. 另一种替代方案是采用基于算法的认证方式, JWT(json web token) ...

  4. OAuth是什么?

    一.OAuth的概念 1.问题的提出 2.应用场景 3.规范演进 二.OAuth的运行原理 1.参与者 访问私有数据需要用户参与(客户.用户.服务提供者) 访问公共数据不需要用户参与(客户.服务提供者 ...

  5. bad interpreter:No such file or directory 解决方法

    今天在执行一个从网上考下来的脚本的时候,出现了下面的错误: Linux下面一个脚本死活也运行不了, 我检查了数遍,不可能有错. 提示:bad interpreter:No such file or d ...

  6. 【原生js实现一键回到顶部】

    <!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...

  7. JavaScript中Global、Math、Date对象的常用方法

    JavaScript当中Global.Math.Date类型常用方法如下: /* js 中 Global对象 是一个不存在的对象,它里面的方法可以调用 常用方法: 1 encodeURI 对uri进行 ...

  8. Python入门之迭代器/生成器/yield的表达方式/面向过程编程

    本章内容 迭代器 面向过程编程 一.什么是迭代 二.什么是迭代器 三.迭代器演示和举例 四.生成器yield基础 五.生成器yield的表达式形式 六.面向过程编程 ================= ...

  9. [洛谷P2234][HNOI2002] 营业额统计 - Treap

    Description Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况. Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额. ...

  10. SourceTree 01 - git 客户端介绍

    SourceTree - git客户端介绍 SourceTree系列第1篇 --->> SourceTree 01 - git 客户端介绍(http://www.cnblogs.com/g ...