一、LetNet

LetNet网络是CNN网络的鼻祖,定义了CNN的基本部件:卷积层、池化层全连接层等。

二、AlexNet

主要特点:

1、使用ReLU函数作为CNN的激活函数;

2、Dropout技术和数据增强技术的使用,防止模型过拟合;

3、当时计算性能满足不了网络需求,使用group conv技术;

4、基于神经科学中局部神经元活动竞争机制,提出LRN层,类似于在通道维度上做normalization,使得响应比较大的数值变大相对更大,以此抑制反馈比较小的filter。

LRN层(Local Response Normalization)个人理解:神经科学上来说,局部神经元互相之间有竞争,当多个神经元共同接受一个信号时,哪一个神经元表现的比较好,经过LRN处理之后(标准化后),该神经元相对应该更加明显。
在图像经过卷积层时,feature map会被多个filters采样,对于feature map上某一个点,filters之间会竞争,我们应该他们做一个标准化,突出他们之间的相对大小。因此是在通道维度上做normalization,这个层在后面的网络结构发展中,再也没怎么用了。

三、VGG

VGG网络通过堆叠3x3卷积和2x2最大池化层成功构建了一个较深层的网络。目前,VGG系列中的部分网络仍然被用来作为特征提取网络。

主要内容:

1、两个3x3的卷积层堆叠相当于一个5x5的卷积层的感受野大小,但是比5x5参数量更少,多一个卷积层多了更多的非线性。

2、使用网络权重pre-train技巧,先训练浅层网络,用浅层网络的权重去微调深层网络。

四、Google的Inception系列

Inception 系列是网络结构的神作,其中的多尺寸卷积和多个小卷积核替代大卷积核等概念是以后网络架构的基石。Inception网络系列的发展核心的思想就是模块化!Inception 的最初版本,其核心思想就是使用多尺寸卷积核去观察输入数据。比如我们看某个图像由于远近不同,同一个物体的大小也会有所不同,用不同尺度的卷积核提取特征会有这样的效果。于是有如下的网络:

网络就变宽了,同时也提高了对于不同尺度的适应程度。问题来了: 网络变宽的同时,计算量也变大,要想办法减少参数量来减少计算量,于是在 Inception v1 中的最终版本加上 1x1 卷积核(Pointwise Conv)。

使用PW卷积核对输入的特征图进行降维,减少参数量,从而减少计算。 即使有 PW ,由于 5x5 卷积核参数量还是很大,要再优化。于是使用多个小卷积核替代大卷积核的方法,这就是 Inception v3:

用两个 3x3 卷积核来代替 5x5 卷积,(感受野大小)效果上差不多,但参数量减少很多,达到了优化的目的。不仅参数量少,层数也多了,深度也变深了。 除了规整的正方形,还有分解版本的 3x3 = 3x1 + 1x3,这个效果在深度较深的情况下比规整的卷积核更好。

我们假设输入 256 维,输出 512 维,计算一下参数量:
5x5 卷积核 256∗5∗5∗512=3276800
两个 3x3 卷积核 256∗3∗3∗256+256∗3∗3∗512=589824+1179648=1769472
参数量对比,两个 3x3 的卷积核的参数量是 5x5 一半,可以大大加快训练速度。

当然,Inception系列的贡献还有很多,比如:

1、使用BN层的Inception V2网络。

2、结合Resnet网络结构的Inception V4网络。

3、Inception系列提出辅助分类节点,即是在多个特征层次(浅层预测结合深层预测)上给出预测输出。

五、Resnet

网络特点: 跳跃链接和瓶颈结构

网络深度在增加中会遇到两个问题:1、梯度消失;2、网络退化。

网络更深时意味着需要学习的参数更大,优化问题变得更难,简单地增加网络深度反而出现更高的训练误差。即增加网络层数却导致更大的误差,如下图,一个56层的网络的性能却不如20层的性能好,这不是因为过拟合(训练集训练误差依然很高),是退化问题。

输入数据有两条路线,一条常规路线,另一条捷径(shortcut),直接实现单位映射的直接连接的路线,这有点类似与电路中的“短路”。把网络中的一个模块的输入和输出关系看作是y=H(x),那么直接通过梯度方法求H(x)就会遇到上面提到的退化问题,如果使用带shortcut的结构,可变参数部分的优化目标不再是H(x),若用F(x)来代表需要优化的部分,则H(x)=F(x)+x,也就是F(x)=H(x)-x。因为在单位映射的假设中y=x就相当于观测值,所以F(x)就对应着残差,因而叫残差网络。 学习残差F(X)比直接学习H(X)简单。设想,现在只需要去学习输入和输出的差值就可以,绝对量变为相对量(H(x)-x 就是输出相对于输入变化了多少),优化会简单很多。

学过模拟电子技术的同学,会不会觉得这残差结构的跳跃链接不就是模电中的差分放大电路嘛。

上图中x经过卷积层后的输出和直接跳跃的x在数据维度上可能不匹配,Resnet网络主要采用两种方法解决这个问题:

  • zero_padding:对恒等层进行0填充的方式将维度补充完整,这种方法不会增加额外的参数。
  • projection:在恒等层采用1x1的卷积核来增加维度,这种方法会增加额外的参数 。

下图是两种形态的残差模块,左图是常规残差模块,有两个3×3卷积核组成,但是随着网络进一步加深,这种残差结构在实践中并不是十分有效。针对这右图的“瓶颈残差模块”(bottleneck residual block)可以有更好的效果,由1×1、3×3、1×1这三个卷积层堆积而成,这里的1×1的卷积能够起降维或升维的作用,从而令3×3的卷积可以在相对较低维度的输入上进行,以达到提高计算效率的目的。

六、DenseNet

主要创新:特征重用和旁路设置。

在此之前,网络发展从加深网络层数(ResNet)和加宽网络结构(Inception)来提升网络性能,而DenseNet从特征出发,通过特征重用(联合低级和高级图像特征)和旁路(Bypass)设置,不仅减少了网络的参数量,而且一定程度上缓解梯度消失问题。DenseNet有以下优点:

  1. 与ResNet对比,更少的特征就能达到resnet的性能,且short path链接模式不同,DenseNet使用的是concatenate操作,而ResNet使用add链接。
  2. 旁路加强了特征(feature map)的重用,因为大量特征图的重用,网络不必学习冗余的特征图,DenseNet需要更少的参数(不需要太多的filters去采样),网络更易训练。
  3. 由于每一层都连接最前层和最后面层,则最初信号和最初梯度都能收到,网络内含有隐式的深度监督。

ResNet假设:若某一较深的网络多出另一较浅网络的若干层有能力学习到恒等映射,那么这一较深网络训练得到的模型性能一定不会弱于该浅层网络。
DenseNet假设:与其多次学习冗余的特征,特征复用是一种更好的特征提取方式。

单个Dense Block

DenseNet将这种密集连接的结构分成多个block,每个block中使用Dense连接且feature maps尺寸相同,然后多个block组成一个DenseNet网络,每个block之间用transition layer(BN—conv_1x1—pool_avg_2x2)连接(实现pooling下采样)。

DenseNet结构,红色框出的是transition layer。

具体结构:

深度学习基础--分类网络相关推荐

  1. 深度学习基础--不同网络种类--深度置信网络(DBN)

    深度置信网络(DBN)   RBM的作用就是用来生成似然分布的互补先验分布,使得其后验分布具有因子形式.   因此,DBN算法解决了Wake-Sleep算法表示分布难以匹配生成分布的难题,通过RBM使 ...

  2. 深度学习基础--不同网络种类--双向深度网络(bi-directionaldeep networks, BDDN)

    深度神经网络可以分为3类:   1)前馈深度网络(feed-forwarddeep networks, FFDN)   2)反馈深度网络(feed-back deep networks, FBDN) ...

  3. 深度学习基础--不同网络种类--反馈深度网络(feed-back deep networks, FBDN)

    深度神经网络可以分为3类:   1)前馈深度网络(feed-forwarddeep networks, FFDN)   2)反馈深度网络(feed-back deep networks, FBDN) ...

  4. 深度学习基础--不同网络种类--尖峰神经网络/脉冲神经网络(spiking neural network, snn)

    尖峰神经网络/脉冲神经网络(spiking neural network, snn)   是三代神经网络模型,属于计算神经科学,动物的神经网络大多是脉冲神经网络.   资料不多,而且大多是外文   本 ...

  5. 二分类交叉熵损失函数python_【深度学习基础】第二课:softmax分类器和交叉熵损失函数...

    [深度学习基础]系列博客为学习Coursera上吴恩达深度学习课程所做的课程笔记. 本文为原创文章,未经本人允许,禁止转载.转载请注明出处. 1.线性分类 如果我们使用一个线性分类器去进行图像分类该怎 ...

  6. 深度学习网络模型——RepVGG网络详解、RepVGG网络训练花分类数据集整体项目实现

    深度学习网络模型--RepVGG网络详解.RepVGG网络训练花分类数据集整体项目实现 0 前言 1 RepVGG Block详解 2 结构重参数化 2.1 融合Conv2d和BN 2.2 Conv2 ...

  7. 资源 | Intel发布AI免费系列课程3部曲:机器学习基础、深度学习基础以及TensorFlow基础

    翻译 | AI科技大本营(公众号ID:rgznai100) 校对 | 成龙 编辑 | 明明 Intel于近期发布了三门AI系列的免费课程,分别是关于机器学习基础.深度学习基础.TensorFlow基础 ...

  8. 深度学习基础(基本概念、优化算法、初始化、正则化等)

    2020-04-25 16:29:09 引言 深度学习目前已成为发展最快.最令人兴奋的机器学习领域之一,许多卓有建树的论文已经发表,而且已有很多高质量的开源深度学习框架可供使用.然而,论文通常非常简明 ...

  9. 【完结】有三AI阿里云的深度学习基础课程暂时完结,欢迎扩散学习

    2021年3月份有三AI与阿里天池联合推出了深度学习系列课程, 课程内容包括人工智能与深度学习发展背景,深度学习典型应用,卷积神经网络,循环神经网络,生成对抗网络,深度学习开源框架等内容,目前已经基本 ...

最新文章

  1. MFC中添加自己定义的消息
  2. 用AJAX实现无刷新的分页
  3. DiscuzToolkit
  4. MYSQL的函数有哪些?(3.字符串函数)
  5. 服务器开发中网络数据分析与故障排查经验漫谈
  6. mysql事务编号_Mysql事务
  7. android 插入耳机 使用自身mic录音_这样选用麦克风,耳机降噪效果会更好
  8. 行人属性数据集pa100k_基于InceptionV3的多数据集联合训练的行人外观属性识别方法与流程...
  9. java实现把数据写入到Excel并下载
  10. php中file对象实例,AJAX_File, FileReader 和 Ajax 文件上传实例分析(php),File FileReader 可以干什么? Ajax - phpStudy...
  11. python编程常用类型_Python 高级编程系列__03:python 中常见的内置类型
  12. Github上托管项目
  13. LINUX SHELL中大小写转换及注意事项
  14. # 保利威视频在线分析下载
  15. java 有多少种锁_java有哪些锁?java锁种类盘点
  16. PCB多层板设计技巧
  17. 你见过凌晨4点的洛杉矶吗?写一个简单的投篮游戏
  18. vue3 内置组件keep-alive用法的全面介绍
  19. iOS-获取手机健康步数,去除人为添加的数据
  20. 第二章:华为VRP(理论+实验命令)

热门文章

  1. tomcat9打开html网页出现乱码
  2. 谷歌地球下载 Outline密钥生成 问题备忘录
  3. 自己动手写SGD算法
  4. java之封装,继承,多态
  5. 51单片机const unsigned char number[16]是啥意思
  6. 室外定位:高精度北斗RTK定位技术
  7. 使用再生龙制作linux系统镜像及还原,使用再生龙(clonezilla)制作系统还原盘及恢复镜像并测试恢复(命令行方式)...
  8. android平板和手机的区别,平板和手机有什么区别?
  9. 【牛客网-华为机试题目录】持续更新中
  10. PHP Laravel框架 微信模板消息发送