第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究

深度卷积网络:实例探究

  • 1. 为什么要进行实例探究
  • 2. 经典网络
  • 3. 残差网络 ResNets
  • 4. 残差网络为什么有用
  • 5. 网络中的网络 以及 1×1 卷积
  • 6. 谷歌 Inception 网络简介
  • 7. Inception 网络
  • 8. 使用开源的实现方案
  • 9. 迁移学习
  • 10. 数据增强 Data augmentation
  • 11. 计算机视觉现状

1. 为什么要进行实例探究

学习前辈们组建网络的方法,借鉴过来解决自己的问题。

经典的网络模型:

  • LeNet-5
  • AlexNet
  • VGG
  • ResNet
  • Inception

2. 经典网络

第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第1张图片
第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第2张图片
第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第3张图片

3. 残差网络 ResNets

非常非常的神经网络是很难训练的,因为存在梯度消失和梯度爆炸问题
第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第4张图片
第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第5张图片

  • 中间的激活能够到达网络的更深层
  • 这种方式确实有助于解决梯度消失和梯度爆炸问题,让我们在训练更深网络的同时,又能保证良好的性能
  • ResNet 在训练深度网络方面非常有效

4. 残差网络为什么有用

第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第6张图片
残差网络起作用的主要原因:

  • 残差块学习恒等函数非常容易,你能确定网络性能不会受到影响,很多时候甚至可以提高效率,或者说至少不会降低网络的效率

个人理解,之前的网络都是单向传递,有点像链表,当前层只与上一层有关,且只影响下一层;而残差网络结构则突破了这一模式,将当前层的影响不仅影响到下一层,而且影响到接下来的多个层,有点像图结构,并且从实践效果看,效果不错。我们知道,深度学习会通过隐藏层的不断加深,来抽象组合成更加全面的特征。
另外,我觉得当今深度学习最让人诟病的地方在于其黑箱不可解释性,所以,我们不能只局限于已有的结构模型图,而是多开放思路,设计更多新颖的网络结构,来逼近人类大脑的性能。

5. 网络中的网络 以及 1×1 卷积

第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第7张图片
我们知道,可以通过池化层来压缩输入的高度和宽度,但是池化层不改变通道数

1×1卷积层 给神经网络添加了一个非线性函数,从而减少或保持输入层中的通道数量不变,也可以增加通道数量

6. 谷歌 Inception 网络简介

构建卷积层时,你要决定过滤器的大小究竟是1×1,3×3 还是 5×5,要不要添加池化层。

而 Inception网络 的作用就是代替你来决定,虽然网络架构变得更加复杂,但网络表现却非常好
第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第8张图片
基本思想是:

Inception 网络不需要人为决定使用哪个过滤器或者是否需要池化,而是由网络自行确定这些参数,你可以给网络添加这些参数的所有可能值,然后把这些输出连接起来,让网络自己学习它需要什么样的参数,采用哪些过滤器组合

通过使用1×1卷积来构建瓶颈层,从而大大降低计算成本

第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第9张图片
事实证明,只要合理构建瓶颈层,既可以显著缩小表示层规模,又不会降低网络性能,从而节省了计算

7. Inception 网络

Inception 模块:
第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第10张图片
Inception 网络:Inception 模块堆叠
第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第11张图片

8. 使用开源的实现方案

事实证明很多神经网络复杂细致,因而难以复制,因为一些参数调整的细节问题,例如学习率衰减等等,会影响性能

  • 选择一个你喜欢的神经网络框架
  • 接着寻找一个开源实现,从GitHub下载下来,以此基础开始构建
    这样做的优点在于,这些网络通常都需要很长的时间来训练,而或许有人已经使用多个GPU,通过庞大的数据集预先训练了这些网络,你就可以使用这些网络进行迁移学习

9. 迁移学习

第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第12张图片

10. 数据增强 Data augmentation

数据扩充是经常使用的一种技巧来提高计算机视觉系统的表现

  • 垂直镜像对称(常用)
  • 随机裁剪(常用)
  • 旋转,剪切(局部扭曲)(不常用)
  • 色彩转换(给RGB通道按分布加上失真值),使得算法对照片的颜色更改更具鲁棒性

常用的实现数据扩充的方法:

  1. 使用一个线程或者是多线程,用来加载数据,实现变形失真
  2. 然后传给其他的线程或者其他进程,来训练,可以并行实现

数据扩充过程中也有一些超参数,比如,颜色变化,随机裁剪参数。
另外,可以使用别人的开源实现,了解他们如何实现数据扩充。也可以自己去调整这些参数

11. 计算机视觉现状

第四门课:卷积神经网络(第二周)——深度卷积网络:实例探究_第13张图片
为了提高性能表现:

  • 集成:使用多个神经网络,平均他们的输出,缺点,更多的时间,占用内存更大
  • Multi-crop 数据扩充,也是运行时间多,只有1个神经网络占用内存

你可能感兴趣的:(吴恩达《深度学习》)