上一期,我们一起学习了深度学习中如何避免过拟合,

深度学习三人行(第7期)----深度学习之避免过拟合(正则化)

接下来我们一起学习下网红网络之卷积神经网络(CNN),我们多多交流,共同进步。本期主要内容如下:

  • 人的视觉机制

  • CNN之卷积层

  • CNN之卷积核

  • 特征图的叠加

  • 小结

尽管IBM的深蓝计算机早在1996年就已经打败国际象棋世界冠军Garry Kasparov。但是相当一段时间内,计算机仍不能去识别一些简单的图片或者口语识别。那么为什么这些对于我们看似简单的任务,对于电脑就那么难呢?主要是这些认知对于人类来说,发生在认知领域内,包括视觉,听觉和大脑内的其他感知区域。当这些信号到达我们的意识层面的时候,已经被包装成了高级的特征。比如,当我们看到一只可爱的小狗的时候,我们已经不能选择不看到这个小狗,也不能不去注意它的可爱,所以当我们意识到看到这个小狗的时候,它已经被包装了。显然这不能解释我们是怎么认识小狗的。因此,对于这个问题,我们不能用主观的意识经验,而是要从感知模块出发,研究其原理,才能明白是如何认知的。

卷积神经网络受人大脑视觉皮层原理的启发而被发现,并且在上个世纪80年代用在图像识别中。由于最近几年,计算机计算能力的大幅度提升,数据量的暴增以及前几期我们学到的技术的发展。卷积神经网络在很多方面的表现已经超过了人。比方说图像搜索,自动驾驶,自动影视分类等,不仅于此,CNN已经不再限制于图像领域了,对于语音识别,自然语言处理等方面也有很优秀的变现。当然,这期,我们只关注图像方面。


一. 人的视觉机制

David H. Hubel 和Torsten Wiesel在上个世纪50年代末在猫和猴子上面做了一系列实验,在视觉皮层上方面得出了关键的结论,并在1981年获得了诺贝尔生理学奖。他们发现,视觉皮层的很多神经元都有一个小的局部感受野,也就意味着,神经元只对有限区域的感受野上的刺激物做出反应。如下图,局部感受野就是图中五个虚线的小圆圈。

不同的感受野可以重叠,他们共同铺满整个视野。并且他们发现,一些神经元仅仅对横线有反应,有一些神经元对其他方向的线条有反应。有些神经元的感受野比较大,能够整合比较低级的pattern。这个发现直接导致了一个观点,那就是高级别的神经元的刺激是源于相邻低级别神经元的反应。这种强有力的视觉构架使得能够去检测视野中的复杂的pattern。

这项视觉机制的研究在上个世纪80年代产生了感知机,后面逐渐发展成了现在的卷积神经网络。1998年Yann LeCun等的一篇介绍LeNet-5构架的论文是卷积神经网络发展中的一个里程碑。这个网络构架广泛用于手写字体识别,网络中有一些是之前学习过的,比方说全连接层,sigmoid激活函数。也有一些我们即将学到的新的构架如卷积层和池化层等。

为什么不用简单的有全连接层的dnn网络去识别图片呢?当然对于小的图片还好,但是对于稍微大一点的图片来说,这就是一个灾难。比方说对于一个100x100的图片,那么共有10000个输入,假如第一层有1000个神经元(已经被严重限制)的话,那么将会有1000万个连接。然而,这仅仅是第一层。而CNN用部分连接的方式来解决这个问题。


二. CNN之卷积层

CNN中最重要的一部分就是卷积层,第一个卷积层并不是连接输入图像的所有像素,只是与感受野中的像素相连,如下图:

接着第二个卷积层上的神经元连接第一个卷积层的一个局部区域。这种构架使得网络在第一层的时候专注于图像的低级特征,而在下一层的时候整合一些高级别的特征,依次类推。这种构架方式和人现实世界中视觉认知方式类似,所以CNN在图像识别领域表现优异。在全连接层的DNN中,连接层是由一个长条形式的神经元组成,在training的时候需要将二维图像展成一维的数据输入给网络。然而在CNN中,每一层都是二维的,所以输入输出的连接就比较方便了。

那么在卷积神经网络中,神经元是怎么连接的呢?一个在已知层的(i, j)位置上的神经元和上一层的谁相连呢?,如下:

其中f_h和f_w分别为感受野的高和宽。如下图:

正如图中所示,为了保证输入输出的大小一致,通常会在输入的边界进行0扩充。

当然也通过跳跃感受野,使得一个小的卷积层连接一个大的输入层也是可行的,如下图:

两个连续感受野的举例叫做stride,上图中,一个5x7的输入层连接了一个3x4的层。这里用了3x3的感受野,stride=2。这样的话上层的(i,j)位置的神经元是连接前一层的哪个位置呢?如下:

其中s_h和s_w分别为水平和竖直的stride。


三. CNN之卷积核

一个神经元的权重可以看做是一个感受野大小的图像,比如下图:

上图显示了两个可能的权重叫做过滤器,也称作卷积核。左边的卷积核可以看成一个竖直的线条,神经元用这些权重的时候,将会重点关注竖线条部分,如左上图得到的特征图1,对竖线条有增强作用。而右边的卷积核可以看作是横线条,重点关注横线条区域,如有上图的特征图2,对横线条有增强左右。因此一层神经元用同一个卷积核,将得到一个特征图,该特征图将增强与卷积核相似的区域。在训练的时候,CNN去寻找最有用的卷积核,并且通过不同的组合得到更复杂的pattern。


四. 特征图的叠加

目前为止,我们明白了二维图像的卷积层的原理,事实上,卷积层通常是有几个尺寸一样的特征图组合而成,因此更为精确的展示如下3D图:

在一个特征图中,所有神经元共享着相同的参数(权重和偏置项),但是不同的特征图有着不同的参数。神经元的感受野和之前的是一样的,但是它扩展到了前面层的所有特征图。简单的说,一个卷积层同时对输入应用多个卷积核。使之有能力在输入层上检测多个特征。此外,输入图像通常也是有多层组成,比如一张简单的彩色图就包括RGB三层,灰度图有一层,一些特殊图像可能会有红外紫外光等多层。注意到不同特征图的相同位置的神经元都是与上一层的相同位置的神经元相连接的。用一个公式来表示就是:

上公示中的z表示当前卷积层中的第k张特征图中的i行j列的位置的输出,f_h和f_w是为感受野的尺寸,s_w和s_h为stride的大小,f_n'为上一个卷积层的特征图的个数。x为上一个卷积层中第k'张特征图中i'行j'列位置的输出,b为当前层中特征图k的权重,w为当前层的第k张特征图的神经元与上一层中特征图k'的u行v列的位置相连的权重值。如此,我们将特征图进行叠加相连。


五. 小结

今天,我们从人类视觉的感受机制出发,一起学习了卷积层的原理,卷积核如何产生特征图的以及特征图是如何进行叠加的相关知识。学习的路上,多谢有你。

(如需更好的了解相关知识,欢迎加入智能算法社区,在“智能算法”公众号发送“社区”,即可加入算法微信群和QQ群)

深度学习三人行(第8期)----卷积神经网络通俗原理相关推荐

  1. 深度学习三人行(第10期)----CNN经典网络之LeNet-5和AlexNet

    上一期,我们一起学习了深度学习卷积神经网络中的代码实现,内存计算以及池化层的原理等, 深度学习三人行(第9期)----卷积神经网络实战进阶(附代码) 接下来我们一起学习下关于CNN中比较经典的网络Le ...

  2. 深度学习三人行(第5期)----深度学习中的优化器选择

    上一期,我们一起学习了TensorFlow在训练深度网络的时候怎么解决梯度消失或梯度爆炸的问题,以及怎么尽可能的减少训练时间. 深度学习三人行(第4期)---- TF训练DNN之进阶 这期我们继续学习 ...

  3. 深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战 卷积神经网络,听起来像是计算机科学.生物学和数学的诡异组合,但它们已经成为计算机视觉领域中最具影响力 ...

  4. 【深度学习】基于Pytorch的卷积神经网络概念解析和API妙用(一)

    [深度学习]基于Pytorch的卷积神经网络API妙用(一) 文章目录 1 不变性 2 卷积的数学分析 3 通道 4 互相关运算 5 图像中目标的边缘检测 6 基于Pytorch的卷积核 7 特征映射 ...

  5. 【深度学习】基于Pytorch的卷积神经网络概念解析和API妙用(二)

    [深度学习]基于Pytorch的卷积神经网络API妙用(二) 文章目录1 Padding和Stride 2 多输入多输出Channel 3 1*1 Conv(笔者在看教程时,理解为降维和升维) 4 池 ...

  6. 深度学习笔记(26) 卷积神经网络

    深度学习笔记(26) 卷积神经网络 1. CONV 2. POOL 3. Layer 4. FC 5. 卷积的优势 1. CONV 假设,有一张大小为32×32×3的输入图片,这是一张RGB模式的图片 ...

  7. 花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)

    目录 0. 前言 1. LeNet-5 2. AlexNet 3. VGG-16 4. ResNet 残差网络 5. Inception Network 如果这篇文章对你有一点小小的帮助,请给个关注, ...

  8. 花书+吴恩达深度学习(十二)卷积神经网络 CNN 之全连接层

    目录 0. 前言 1. 全连接层(fully connected layer) 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔~我会非常开心的~ 花书+吴恩达深度学习(十)卷积神经网络 CNN ...

  9. 【深度学习】5:CNN卷积神经网络原理

    前言:先坦白的说,深度神经网络的学习在一开始对我造成的困扰还是很大的,我也是通过不断地看相关的视频资料.文献讲解尝试去理解记忆.毕竟这些内容大多都是不可查的,我们看到的都只是输入输出的东西,里面的内部 ...

最新文章

  1. 北京 10 年,难说再见!
  2. ORACLE学习笔记--性能优化2
  3. 顺天则昌,逆天则亡(2006-03-13 21:07:17)(新浪)
  4. SD-WAN成本节省取决于基础WAN技术
  5. ue4 改变枢轴位置_UE4渲染模块概述(四)---反射
  6. UVA11525 Permutation 逆康托展开
  7. 基因组浏览器使用 (EPGG)
  8. 源码安装mysql 5.1_Linux环境下源码编译安装MySQL5.1
  9. [cocos2d-x]屏幕自适应解决的方法
  10. 【老孙随笔】求职,不要无的放矢
  11. CDISC SDTM AE domain学习笔记 - 2
  12. express搭建的nodejs项目使用webpack进行打包
  13. 跟着小皮老师了解Go语言LiteIDE详细使用教程❤
  14. 如何让电脑产生和输出特定分贝值的声音
  15. java 按 大写字母_用大写字母拆分字符串
  16. Hive 核心原理(hive-3.1.2)(转载)
  17. “海潮效应”侵袭厨电市场,品牌突围时不我待
  18. Framework 修改默认输入法
  19. Python实战:一键导出微信读书的书籍和笔记
  20. 小新想把百度搜索引擎改为edge

热门文章

  1. 大数据分析利器之Power BI,你是否已经掌握?
  2. 纯css实现3D立方体
  3. 请问您贵姓?免贵姓姓。啥?没想到吧!姓和氏都是姓氏!
  4. [成功解决]Vmware虚拟机一打开就蓝屏解决方法
  5. 锁定计算机后点鼠标屏幕无反应,电脑鼠标点击桌面没有反应怎么办
  6. CSDN如何改变图片大小
  7. SQLTools插件下载与使用说明
  8. 如何避免电子设备测量中的接地回路?
  9. 鬼刀画风扁平化粒子网源码 响应式布局
  10. 不能表中的标识列插入显示值