小奥的学习笔记

  • Home
  • Learning & Working
    • Speech Enhancement Notes
    • Programming language
    • Computer & DL
    • MOOC
  • Life
    • Life Time
    • Thinking & Comprehension
    • Volunteer
    • Plan
    • Travel
  • Footprints
  • GuestBook
  • About
    • About Me
    • 个人履历
    • 隐私策略
  1. 首页
  2. Study-notes
  3. Computer & DL
  4. Deep Learning
  5. 正文

吴恩达深度学习课程DeepLearning.ai笔记(4-2)

2018年3月5日 1607点热度 0人点赞 0条评论

卷积神经网络 — 深度卷积模型

1. 经典的卷积网络

本节,吴恩达教授介绍了几种经典的神经网络模型,分别是LeNet、AlexNet、VGGNet,并且提到了后面要介绍的ResNet(残差网络)和Google的Inception。接下来对本节介绍的网络分别做一个简单的介绍。

(1)LeNet-5:

如图1 所示。LeNet-5主要针对灰度设计,所以其输入尺寸比较小,大小为32×32×1(灰度图像没有三维的RGB)。

1520257750879198.jpg

图1

从图中可以看出,在LeNet的经典模式中:随着网络深度增加,图像的大小在缩小,但是通道却在增加;每个卷积层后面连接一个池化层。

(2)AlexNet:

如图2所示,该网络用语对彩色的图片进行处理。注意,虽然源论文中不是采用227×227×3,但在实际测试中,该尺寸效果更好。

1520257774775352.jpg

图2

与前面的LeNet类似,但是该网络结构更复杂,参数也更多,相应的表现也更加好。该网络使用了RELU,使用了多个GPU。

(3)VGG-16:

VGG卷积层和池化层具有相同的大小,都是3×3,步长stride=1,SAME的卷积核为2×2,步长为2的池化结构,其结构如图3所示:

1520257857205197.jpg

图3

(4)ResNet(残差网络)

残差网络是由残差块构建的网络。那么什么是残差块呢?下面来做一个解释。

下面是一个普通的的神经网络块传输(暂时无视a[l]到a[l+2]的这条线):

1520257805882694.jpg

图4

其前向传播过程分别是一个线性、RELU、线性、RELU的过程。而残差块则是增加了一个将a[l]直接连接到a[l+2]的过程,如图5所示,这个过程称为short cut或者skip connection。

1520257872939773.jpg

图5

完整的残差块结构如图3所示。务必注意,这个连接在RELU activation function之前!

多个残差块连接起来就构成了ResNet网络。(注意,在论文中,普通的神经网络被称为Plain Network)

在学习神经网络的时候就提到了,ResNet对于中间的激活函数来说,有助于能够达到更深的网络,解决梯度消失和梯度爆炸的问题。

为什么残差网络表现能很好呢?

假设我们有一个Big NN,其输入为x,输出为a[l],如果我们想增加网络深度的话,同时也给其增加一个残差块:

1520257890727981.jpg

图6

假设网络中我们都是用RELU activation function,那么最后的输出a≥0,这里的a[l+2]我们可以知道为:

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

如果使用L-2正则化或者权重衰减,就会压缩W和b的值,如果W[l+2]=0同时b[l+2]=0,那么

a[l+2]=g(z[l+2]+ a[l])=g(a[l])=relu(a[l])= a[l]

因此我们可以看到,对于残差块来说学习上面这个恒等的函数是很容易的。所以在增加了残差块后更深网络的性能也不差于plain network。同时,如果增加的网络结构能够学习到一些有用信息,那么就会提升网络的性能。

2. 1×1卷积

什么是1×1卷积呢?

就是卷积核是一个1×1的元素。虽然说看起来这种卷积似乎没什么作用,但实际上作用非常大。

在二维上,这种卷积相当于图片每个元素与这个卷积核数字相乘。但是在三维上,与1×1×nc的卷积核进行卷积,就相当于三维图像上的1×1×nc的切片,也就是nc个点乘卷积数值权重,通过RELU函数输出对应结果。而不同的卷积核则相当于不同的隐层神经元节点与切片上的点一一连接。所以本质上这个卷积核相当于对一个切片上nc个单元都应用了一个全连接的神经网络。

1520257912117229.jpg

图7

最后得到了一个相同长宽但第三维度变成卷积核个数的图片。

应用:维度压缩和增加非线性。

3. Inception Network

Inception Network 的作用就是使我们无需去考虑在构建深度卷积神经网络时,使用多大的卷积核以及是否添加池化层等问题。

Inception主要结构:

1520257931725545.jpg

图8

在上面的Inception结构中,应用了不同的卷积核,以及带padding的池化层。在保持输入图片大小不变的情况下,通过不同运算结果的叠加,增加了通道的数量。

计算成本的问题:

对于上面的5×大小卷积核计算成本:

1520257946113573.jpg

图9

1 filters:5×5×192;

32 个 filters;

总的计算成本:28×28×32×5×5×192=120M

对于1×1×1大小卷积核用作过渡的计算成本,也将下面的中间的层叫做“bottleneck layer”:

1×1×1卷积层计算成本:28×28×16×1×1×192=2.4M

5×5×5卷积层计算成本:28×28×32×5×5×16=10.0M

总的计算成本:2.4M+10.0M=12.4M

1520257973102235.jpg

图10

所以1×1×1卷积核作为bottleneck layer”的过渡层能够有效减小卷积神经网的计算成本。事实证明,只要合理地设置“bottleneck layer”,既可以显著减小上层的规模,同时又能降低计算成本,从而不会影响网络的性能。

Inception的单个单元结构和总体结构如图11和图12所示。

1520257986105667.jpg

图11

1520258011527791.jpg

图12

4. 迁移学习

此部分不再累述。

5. 数据扩充

方法:镜像旋转、随机剪裁、色彩转换(PCA颜色增强)等。

本笔记部分参考了http://blog.csdn.net/koala_tree/article/details/78531398,对原作者表示感谢。

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: Python 人工智能 机器学习 神经网络
最后更新:2018年3月5日

davidcheung

这个人很懒,什么都没留下

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

搜索
欢迎关注我的个人公众号
最新 热点 随机
最新 热点 随机
DEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架 奥地利匈牙利九日游旅程 论文阅读之Study of the General Kalman Filter for Echo Cancellation 小奥看房之鸿荣源珈誉府 杭州往返旅途及西溪喜来登和万怡的体验报告 2022年的第一篇碎碎念
奥地利匈牙利九日游旅程小奥看房之鸿荣源珈誉府论文阅读之Study of the General Kalman Filter for Echo CancellationDEEPFILTERNET:一种基于深度滤波的全频带音频低复杂度语音增强框架
Anaconda的一些操作总结 2017考研最后33天复习计划 2017 CSL 1st: Shandong Luneng Taishan F.C VS Tianjin Elion Taida F.C iNove新春2010主题[本博客2010新年主题] 把CentOS7中的vim打造成C++IDE 2010 S.V Beijing Travel 11:唉
标签聚合
生活 学习 高中 Java 鸟哥的linux私房菜 算法 leetcode linux Python python学习
最近评论
davidcheung 发布于 5 个月前(02月09日) The problem has been fixed. May I ask if you can s...
tk88 发布于 5 个月前(02月07日) Hmm is anyone else having problems with the pictur...
cuicui 发布于 8 个月前(10月20日) :wink:
niming 发布于 9 个月前(09月19日) 同级校友,能刷到太巧了
davidcheung 发布于 2 年前(08月16日) 我得找一下我之前整理的word文档看一下,如果找到了我就更新一下这篇文章。
Nolan 发布于 2 年前(07月25日) 您的笔记非常有帮助。贴图不显示了,可以更新一下吗?
davidcheung 发布于 3 年前(06月19日) 到没有看webrtc的代码。现在主要在看我们公司的代码了。。。只是偶尔看一看webrtc的东西。。。
aobai 发布于 3 年前(03月13日) gain_change_hangover_ 应该是每三个block 只能够调整一次,这样保证每帧...
匿名 发布于 5 年前(12月30日) 烫
小奥 发布于 5 年前(12月12日) webRTC里面的NS本身我记得就是在C++里面呀

COPYRIGHT © 2025 小奥的学习笔记. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

陕ICP备19003234号-1

鲁公网安备37120202000100号