DeepLearning.ai学习笔记(四)卷积神经网络 -- week2深度卷积神经网络 实例探究

一、为什么要进行实例探究?

通过他人的实例可以更好的理解如何构建卷积神经网络,本周课程主要会介绍如下网络

  • LeNet-5
  • AlexNet
  • VGG
  • ResNet (有152层)
  • Inception

二、经典网络

1.LeNet-5

该网络主要针对灰度图像训练的,用于识别手写数字。

该网络是在1980s提出的,当时很少用到Padding,所以可以看到随着网络层次增加,图像的高度和宽度都是逐渐减小的,深度则不断增加。

另外当时人们会更倾向于使用Average Pooling,但是现在则更推荐使用Max Pooling。

还有就是最后的预测没有使用softmax,而是使用了一般的方法

2. AlexNet

AlexNet其实和LetNet-5有很多相似的地方,如大致的网络结构。不同的地方主要有如下:

  • 激活函数使用的是Relu,最后一层使用的是Softmax
  • 参数更多,有6000万个参数,而LeNet-5只有6万个左右
  • 使用Max Pooling

3.VGG-16

这个网络有点牛逼了,因为它有将近1.38亿个参数,即使放到现在也是一个很大的网络,但是这个网络的结构并不复杂。下面主要介绍一下上图网络。

首先该网络使用的是Same卷积,即保证高度和宽度不变,另外因为总共有16层卷积操作,所以就不把每一层都用图像的方式表现出来了,例如[CONV 64 X2]表示的是用64个过滤器进行Same卷积操作2次,即右上角所画的示意图,(224,224,3) -> (224,224,64) -> (224,224,64)

上面三个是比较经典的网络,如果想深入的理解,可以阅读其论文,不过吴大大建议的阅读顺序是AlexNet->VGG->LeNet。

三、残差网络(Residual Network)

视频开始,吴大大表示“非常深的网络是很难训练的,因为存在梯度消失和梯度爆炸的问题”,为了解决这个问题,引入了(跳远链接)Skip Connection(跳远链接),残差网络正是使用了这个方法。

  • 残差块(Residual Block)

首先介绍组成残差网络的单元:残差块(Residual Block),如下图示:

残差块是由两层网络节点组成的,\(a^{[l]}\)经过线性变化,再通过Relu激活函数后得到\(a^{[l+1]}\),\(a^{[l+2]}\)也同理,具体过程如下图示:

特别注意上图中的紫色线连接,\(a^{[l]}\)通过这条线直接将数据传递给\(a^{[l+2]}\),所以\(a^{[l+2]}=g(z^{[l+1]}+a^{[l]})\),这条紫色线也叫作short cut(或skip connection)

  • 残差网络

如图示,残差网络每两层网络节点组成一个残差块,这也就是其与普通网络(Plain Network)的差别。

结合之前的课程我们知道如果使用普通网络训练模型,训练误差会随着网络层次加深先减小,而后会开始增加,而残差网络则不会有这种情况,反而它会随着层次增加,误差也会越来越小,这与理论相符。

四、残差网络为什么有用?

为了直观解释残差网络为什么有用,假设我们已经通过一个很大的神经网络得到了\(a^{[l]}\)。而现在我们又需要添加两层网络进去,我们看看如果添加的是残差块会有什么效果。如下图示:

由残差块的特点我们知道\(a^{[l+2]}=g(z^{[l+1]}+a^{[l]})=g(W^{[l+1]}a^{[l]}+b^{[l+1]}+a^{[l]})\)。

我们先考虑一个极端情况,即\(W^{[l+1]}=0,b^{[l+1]}=0\),那么\(a^{[l+2]}=g(a^{[l]})=a^{[l]}\) (因为激活函数是Relu),所以在添加了额外的两层网络后,即使最坏情况也是保持和之前结果一样。而如果只是加上普通的两层网络,可能结果会更好,但是也很有可能结果会越来越糟糕,这也就是为什么残差网络能够保证深度网络依旧有用的原因了。

另外有个问题需要注意的是各层网络的维度,因为\(a^{[l+2]}=g(z^{[l+1]}+a^{[l]})\),那么就要求\(z^{[l+1]}\)要和\(a^{[l]}\)保持相同的维度所以残差网络使用的是Same卷积。 但是如果唯独不一样也没关系,可以给\(a^{[l]}\)乘上一个\(W_s\)来保持相同维度。\(W_s\)的值可以通过学习获得

五、网络中的网络以及1*1卷积

1*1卷积乍看起来好像很没用,如下图​

​但是如果这个1*1的卷积有深度呢?​

​说个更加直观的理解就是使用1*1卷积可以很方便的减少深度,而不改变高度和宽度,如下图所示:

只需要用32个(1*1*192)的过滤器即可,如果不用1*1卷积,例如采用2*2卷积,要想实现只改变深度,那么还需要使用padding,相比起来更加麻烦了。

六、Inception网络简介

  • 简介

如上图示,我们使用了各种过滤器,也是用了Max Pooling。但是这些并不需要人工的选择其个数,这些都可以通过学习来确定下来。所以这种方法很好的帮助我们选择何种过滤器的问题,这也就是Inception网络

  • 计算成本

但是需要注意的一点则是随之而来的计算成本,尤其是5*5的过滤器,下面以这个过滤器举例进行说明:

如上图示,使用32个5*5*192的过滤器,对(28,28,192)进行Same卷积运算得到(28,28,32)的输出矩阵,该卷积需要执行的乘法运算有多少次呢?

输出矩阵中的一个数据是经过 \(5*5*192\)次乘法得到的,那么总共的乘法运算次数则是\(5*5*192*28*28*32=\)1.2亿

  • 瓶颈层(Bottleneck layer)

上面的运算次数多大1.2亿次,运算量相当之大,因此有另一种网络结构对此进行优化,而且可以达到同样的效果,即采用1*1卷积

如图示进行了两次卷积,我们计算一下总共的乘法次数。

第一次卷积:\(28*28*16*192=\)2.4million 第二次卷积:\(28*28*32*5*5*16=\)10million 总共乘法次数是12.4million,这与上面直接用5*5过滤器的运算次数整整少了十倍。

七、Inception网络

八、使用开源的实现方案

这一节主要介绍了如何使用github,这里不做详细记录了。

九、迁移学习

简单说就是在他人的基础上实现自己想要的模型,举个栗子,假如我们现在需要识别家里养的两只猫,分别叫小花和小白,但是我们只有比较少的图片。辛运的是网上已经有一个已经训练好的模型,是用来区分1000个不同事物的(包括猫),其网络模型如下:

​我们的需求是最后结果有三种:是小花,是小白,都不是。​所以需要对softmax做如下图修改。另外由于数据较少,所以可以对他人的模型的前面的结构中的参数进行冻结,即权重和偏差不做改动。

​当然,如果我们有一定量的数据,那么freeze的范围也可以随之减少,即拿来训练的层次可以增多

十、数据扩充

1.Common augmentation methods

  • 旋转(rotation)
  • 修剪(shearing)
  • 局部变形(local warping)
  • 镜像(mirroring)

2.Color shifting

我们都知道图像是由RGB三种颜色构成的,所以该数据扩充方法常采用PCA color augmentation,即假如一个图片的R和G成分较多,那么该算法则会相应的减少R,G的值,而增加B的值

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

一文帮你理解什么是深层置信网络(DBN)

翻译 | 林椿眄 编辑 | SuiSui 前言 随着机器学习的进步和深度学习的出现,一些工具和图形表示被逐渐用来关联大量的数据。深度置信网络(Deep Beli...

447130
来自专栏SimpleAI

【DL笔记3】一步步亲手用python实现Logistic Regression

从【DL笔记1】到【DL笔记N】,是我学习深度学习一路上的点点滴滴的记录,是从Coursera网课、各大博客、论文的学习以及自己的实践中总结而来。从基本的概念、...

22340
来自专栏机器学习AI算法工程

比较R语言机器学习算法的性能

原文:Compare The Performance of Machine Learning Algorithms in R 译文:http://g...

35860
来自专栏企鹅号快讯

详解各种随机算法

转自:JarvisChu 之前将的算法都是确定的,即对于相同的输入总对应着相同的输出。但实际中也常常用到不确定的算法,比如随机数生成算法,算法的结果是不确定的,...

71790

用Pandas在Python中可视化机器学习数据

为了从机器学习算法中获取最佳结果,你就必须要了解你的数据。

24850
来自专栏机器学习算法工程师

你必须要知道CNN模型:ResNet

作者:叶 虎 编辑:张 欢 PART 01 ResNet简介 引言 深度残差网络(Deep residual network, ResNet)的提出是CNN...

83570
来自专栏用户2442861的专栏

循环神经网络教程第三部分-BPTT和梯度消失

作者:徐志强 链接:https://zhuanlan.zhihu.com/p/22338087 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,...

65510
来自专栏程序生活

CS224n 笔记2-词向量表示:Word2vec1. 单词含义的表示2. Word2Vec的主要思路3. 更多Word2Vec细节4 .梯度的推导5. 损失/目标函数相关推荐阅读

1. 单词含义的表示 我们如何表示一个单词的意思 下面是意思的定义: 用词语,语句表示的想法或观点 人们使用词汇,符号来表达的想法 在一篇文章和艺术品表达的观点...

46180
来自专栏小小挖掘机

残差网络ResNet网络原理及实现

论文地址:https://arxiv.org/pdf/1512.03385.pdf

50630
来自专栏磐创AI技术团队的专栏

TensorFlow系列专题(九):常用RNN网络结构及依赖优化问题

前面的内容里我们介绍了循环神经网络的基本结构,这一小节里我们介绍几种更常用的循环神经网络的结构。

19850

扫码关注云+社区

领取腾讯云代金券