您的位置:首页 > 理论基础 > 计算机网络

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

2017-11-14 16:06 363 查看

经典的卷积神经网络架构

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激活函数,所以最后的输出a⩾0。这里我们给出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

使用公开发表论文中提到的网络架构

使用开源网络架构的实现

使用别人预先训练好的网络架构,然后在自己的数据集上微调
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息