Coursea吴恩达《卷积神经网络》课程笔记(2)深度卷积网络

来源:互联网 发布:数据库黑客大曝光 编辑:程序博客网 时间:2024/06/03 19:45

经典的卷积神经网络架构

  • LeNet-5
  • AlexNet
  • VGG
  • ResNet
  • Inception(Google Network)

残差网络

残差网络是由残差块组成

1 残差网络块

这里写图片描述

z[l+1]=W[l+1]a[l]+b[l+1]
a[l+1]=g(z[l+1])
z[l+2]=W[l+2]a[l+1]+b[l+2]
a[l+2]=g(z[l+1]+a[l])

2 残差网络的优势

这里写图片描述

  • 可以防止梯度消失和梯度爆炸
  • 恒等映射增加了网络的性能,普通网络

3 残差网络表现好的原因

假设有个比较大的神经网络,输入为x,输出为a[l]。如果我们想增加网络的深度,这里再给网络增加一个残差块:
这里写图片描述
假设网络中均使用Relu激活函数,所以最后的输出a0。这里我们给出a[l+2]的值:

a[l+2]=g(z[l+1]+a[l])=g(W[l+2]a[l+1]+b[l+2]+a[l])

如果使用L2正则化或者权重衰减,会压缩W和b的值,如果W[l+2]=0同时b[l+2]=0,那么上式就变成:
a[l+2]=g(a[l])=relu(a[l])=a[l]

所以从上面的结果我们可以看出,对于残差块来学习上面这个恒等函数是很容易的。所以在增加了残差块后更深的网络的性能也并不逊色于没有增加残差块简单的网络。所以尽管增加了网络的深度,但是并不会影响网络的性能。同时如果增加的网络结构能够学习到一些有用的信息,那么就会提升网络的性能。

4 残差网络举例

这里写图片描述

1 * 1的卷积

这里写图片描述

意义

  • 增加非线性
  • 可以很方便的控制管道的数量
  • 减少计算量(在Inception中经常使用)

Inception 网络

意义

代替人工来确定卷积层中的过滤器类型,确定是否需要卷积层,或池化层。它是通过学习参数来进行选择的

Inception module

这里写图片描述

虽然Inception网络可以代替人工选择,但是计算量巨大。如何优化计算呢?

利用1*1卷积

  • 使用前

这里写图片描述

  • 使用后
    这里写图片描述
    计算量减少了10倍

数据增强

  • Minoring
  • Random Cropping
  • Color Shifting

计算机视觉现状

Data Vs Hand engineering

  • 当我们拥有少量的数据时,我们更多的是Hand engineering.来获取良好的表现
  • 当我们拥有大量的数据时,我们可以设计一个巨大的网络,简单的架构,很少Hand engineering.便可以获得良好的表现

Two Source of Kownledge

  • 标记的数据
  • 人工特征,设计好的网络架构

Tips for doing well on benchmarks

Ensemble

  • 独立的训练几个网络,取所有网络输出的平均值
  • 在一个网络上运行测试图片的不同变形,平均输出结果

Use Open Source Code

  • 使用公开发表论文中提到的网络架构
  • 使用开源网络架构的实现
  • 使用别人预先训练好的网络架构,然后在自己的数据集上微调
阅读全文
0 0