4.1 通过学习寻找卷积核


在深度神经网络中,层与层之间存在着链接上层与下层的权重系数 。深度学习的核心思想之一,就是给与算法训练目标,让算法自己朝着目标函数最小化的方向进行学习,并自动求解出权重系数www的最佳组合。在深度网络的在DNN中,我们输入的是特征矩阵,让特征矩阵与权重系数相乘后,传入下一层进行加和与激活,并通过从后向前的方式训练网络自己找出权重。在计算机视觉领域,我们输入的特征变成了一张张图像的一个个通道,我们让通道上的像素值与卷积核进行卷积操作后,得出输入下一层的图像(特征图 feature map)。而卷积操作本质就是感受野与卷积核点积,其操作与DNN中的权重与特征相乘非常相似。

顺着这样的思路,卷积层(Convolutional layer)诞生了,任意使用卷积层的神经网络就被称为是卷积神经网络(Convolution Neural Network),卷积网络一族有相当多的经典模型。每当卷积层被建立时,卷积核中的值就会被随机生成,输入图像的像素点与卷积核点积后,生成的特征图被输入到下一层网络,并最终变成预测标签被放入损失函数中进行计算。在使用优化算法进行迭代、损失足够低后,卷积核中的权重值就被自动学习出来了,这就实现了“自动找出最佳权重,并提取出对分类最有利的特征”。
这样学习出的卷积核的值以分类效果为最终目标,可以选择出最恰当的特征,因此理想状况下,可以完美避免人工进行特征提取的这个步骤。剩下的问题就是,通过深度学习自动学习得出的特征,能够比人手提取的特征更好吗?这个问题耗费了学术界数十年的时间,最终被现代神经网络的数个经典架构所验证。但现在,我们暂且不谈这个,继续来看深度学习与卷积的碰撞所带来的改变。

4.2 参数共享:卷积带来参数量骤减

从传统计算机视觉的角度而言,将卷积操作引入神经网络是一个绝妙的操作,但不止如此,对研究神经网络的学者们而言,卷积的到来也解决了众多深度学习中的关键问题。比如——卷积可以极大程度地减少参数量。

深度学习的模型总是需要大规模计算和训练来达到商业使用标准,计算量一直都是深度学习领域的痛,而巨大的计算量在很多时候都与巨量参数有关。在卷积神经网络诞生之前,人们一直使用普通全连接的DNN来训练图像数据。对于一张大小中等,尺寸为(600,400)的图像而言,若要输入全连接层的DNN,则需要将像素拉平至一维,在输入层上就需要600*400 = 24万个神经元,这就意味着我们需要24万个参数来处理这一层上的全部像素。如果我们有数个隐藏层,且隐藏层上的神经元个数达到10000个,那DNN大约需要24亿个参数( 个)才能够解决问题。

然而,卷积神经网络却有“参数共享”(Parameter Sharing)的性质,可以令参数量骤减。一个通道虽然可以含有24万个像素点,但图像上每个“小块”的感受野都使用相同的卷积核来进行过滤。卷积神经网络要求解的参数就是卷积核上的所有数字,所以24万个像素点共享卷积核就等于共享参数。假设卷积核的尺寸是5x5,那处理24万个像素点就需要25个参数。假设卷积中其他需要参数层也达到10000个,那CNN所需的参数也只有25万。由于我们还没有介绍卷积神经网络的架构,因此这个计算并不是完全精确,但足以表明卷积有多么节省参数了。参数量的巨大差异,让卷积神经网络的计算非常高效。在第一堂课时我们说到,深度学习近二十多年的发展,都围绕着“让模型计算更快、让模型更轻便”展开,从全连接到卷积就是一个很好的例子。预测效果好,且计算量小,这是卷积神经网络在计算机视觉领域大热的原因之一。

4.3 稀疏交互:获取更深入的特征

卷积操作是为了提取特征而进行的数学计算,它能够根据损失函数的指导而自动提取出对分类或其他目标更有效的特征。然而,卷积神经网络是如何保证提取到的特征比传统方法,如sobel算子等方法“更深”的呢?

这需要从“神经元”的层次来看待。在CNN中,我们都是以“层”或者“图”、“通道”这些术语来描述架构,但其实CNN中也有神经元。在任何神经网络中,一个神经元都只能够储存一个数字。所以在CNN中,一个像素就是一个神经元(实际上就是我们在类似如下的视图中看到的每个正方形小格子)。很容易理解,输入的图像/通道上的每个小格子就是输入神经元,feature map上的每个格子就是输出神经元。在DNN中,上层的任意神经元都必须和下层的每个神经元都相连,所以被称之为“全连接”(fully connected),但在CNN中,下层的一个神经元只和上层中被扫描的那些神经元有关,在图上即表示为,feature map上的绿格子只和原图上绿色覆盖的部分有关。这种神经元之间并不需要全链接的性质被称为稀疏交互(Sparse Interaction)。人们认为,稀疏交互让CNN获得了提取更深特征的能力。
深度学习中的许多方法来源于对其他学科的借鉴,卷积的结构也不例外。为了研究大脑是如何理解人眼所看到的内容,神经学家们对人眼成像系统进行了丰富的研究。人类的眼球中含有一系列视觉细胞,但这些细胞不是等价的,他们之中的一部分是简单细胞,只能捕捉到简单的线条、颜色等信息,这些简单细胞捕捉到简单信息后,会将信息传导至复杂细胞,复杂细胞会将这些信息重组为轮廓、光泽等更高级的信息,之后再将信息传导至更高级的细胞,形成完整的图像。神经学家认为,人眼的细胞有着“提取浅层特征,合成高级特征”的能力。CNN的“稀疏交互”的属性允许神经元只包含上一层图像“局部”的信息,这就与人眼的简单细胞只提取简单线条的属性很相似。因此我们有理由相信,当图像被输入网络后,前端的卷积神经网络提取到的特征都是浅层的(和sobel算子等方法一样),将这些浅层特征继续输入后续的网络,再次进行提取和学习,就能够将浅层特征逐渐组合成深层特征。而图像天生就可以通过不断变换、被提取出更多的特征(相对的,自然语言就没有这个性质,所以NLP领域的CNN往往没有CV领域的CNN深),因此位于卷积神经网络架构后端的卷积层们,一定是捕捉到了更深层的特征的。

虽然“稀疏交互”是客观的,但是否依赖于这个属性来提取出更深的特征确实有争议的。根据“模拟人眼”的理论,CNN提取出的各层的特征图应该是类似下面这样的:


这张图可视化了在人脸识别中各层卷积层所提取到的特征图。从左至右,神经网络越来越深,从最开始的只能提取到一些简单的线条,到最后可以提取出一整张人脸,似乎能够证明CNN的确拥有和人眼细胞一样的能力。然而当我们真正去可视化一些经典卷积神经网络的结构时,随着卷积层的加深,可视化出来的效果往往是这样的:


不难发现,我们很难直接看出“从局部到整体”这样一个特性。从CNN的预测效果来看,我们有理由相信它的确提取到了更深的特征,但绝不是以我们认为的,“先提取细节、再拼接成局部、最后组成图像”的方式。

无论如何,卷积与深度学习碰撞所带来的变革是革命性的。通过学习的方式改进卷积核、再通过深层网络不断提纯特征、以及大幅度降低参数量,卷积神经网络的作用已经不言而喻。接下来,我们就来学习,如何使用PyTorch构筑卷积神经网络。

Lesson 16.4 卷积遇见深度学习相关推荐

  1. Lesson 16.3 卷积操作

    3 卷积操作 这里有两个长度为9的列表,我们让对应位置的元素相乘,之后再相加: a∗9+b∗8+7∗c+6∗d+5∗e+f∗4+g∗3+h∗2+i∗1a * 9+b * 8+7 * c+6 * d+5 ...

  2. ARM_NEON_CNN编程 SIMD单指令多数据流 intrinsics指令 内联汇编 CNN卷积网络优化 深度学习优化

    ARM_NEON_CNN编程 SIMD单指令多数据流 intrinsics指令 内联汇编 CNN卷积网络优化 深度学习优化 博文末尾支持二维码赞赏哦 _ 本文github 神经网络arm neon加速 ...

  3. 【论文翻译】HCGN:面向集体分类的异构图卷积网络深度学习模型

    HCGN:面向集体分类的异构图卷积网络深度学习模型 摘要 集合分类是研究网络数据的一项重要技术,旨在利用一组具有复杂依赖关系的互联实体的标签自相关性.随着各种异构信息网络的出现,集合分类目前正面临着来 ...

  4. 实用卷积神经网络 运用python pdf_解析卷积神经网络—深度学习实践手册 中文pdf高清版...

    解析卷积神经网络-深度学习实践手册从实用角度着重解析了深度学习中的一类神经网络模型--卷积神经网络,向读者剖析了卷积神经网络的基本部件与工作机理,更重要的是系统性的介绍了深度卷积神经网络在实践应用方面 ...

  5. 量子计算遇见深度学习(下篇)

    点击左上方蓝字关注我们 在上篇教程中,我们介绍了量子计算的基本原理和一些基础概念,其中包括量子比特.常见的量子逻辑门.量子电路和量子测量等等.最终通过量桨运行了量子计算中的"hello wo ...

  6. 1.7 单层卷积网络-深度学习第四课《卷积神经网络》-Stanford吴恩达教授

    ←上一篇 ↓↑ 下一篇→ 1.6 三维卷积 回到目录 1.8 简单卷积网络示例 单层卷积网络 (One Layer of a Convolutional Network) 今天我们要讲的是如何构建卷积 ...

  7. 使用方法 yii_如何实现高速卷积?深度学习库使用了这些黑魔法

    选自github.io 作者:Manas Sahni 机器之心编译 参与:魔王 使用深度学习库可以大幅加速CNN模型运行,那么这些库中的哪些具体的做法实现了这种高速度和高性能呢?佐治亚理工学院计算机科 ...

  8. 如何实现高速卷积?深度学习库使用了这些「黑魔法」

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:公众号 机器之心 授权转载 使用深度学习库可以大幅加速CNN ...

  9. 360副总裁颜水成博士:技术与产品并重,1×1卷积让深度学习更出彩 | CCF-GAIR 2017...

    7 月 7 日,由中国计算机学会(CCF)主办,雷锋网与香港中文大学(深圳)承办的CCF-GAIR 2017全球人工智能与机器人峰会在深圳大中华喜来登酒店如期开幕.奇虎360副总裁.首席科学家.IEE ...

最新文章

  1. cifs------网络文件系统(1)
  2. TypeError: __init__() takes 1 positional argument but 4 were given
  3. oracle 11g ORA-12514
  4. 每日一皮:这年头没点绝活连洗车都不行...
  5. 【mongoDB实战】mongo对某个键添加索引
  6. asp.net url 重写解决方案
  7. 2、Mysql 8.0.20最新版本修改密码
  8. 检查数据报:防火墙和入侵检测系统
  9. java集合的添加方法_深入理解java集合框架之---------Arraylist集合 -----添加方法
  10. (85)Vivado 多周期路径约束情况
  11. cpuid linux,Linux下获取CPUID、硬盘序列号与MAC地址(2)
  12. AI ProCon 2020第一天:40+大厂专家共话AI技术应用下一个十年!
  13. 强大的DataGrid组件[12]_分组(Group)——Silverlight学习笔记[20]
  14. 梦幻群侠传5帮派修炼_梦幻群侠传5手游下载
  15. oracle里如何求及格率,统计出每个教师每门课的及格人数和及格率
  16. Android TextView 字体颜色渐变
  17. Linux crontab 定时执行任务
  18. java斜体_Java可以指示字体是否为斜体字
  19. 计算机怎么样保存文件,电脑怎样保存表格文件
  20. 不要做一个只会抱怨的人

热门文章

  1. android自动更新列表,Android数据库表结构自动升级
  2. 快速了解FAT32文件系统
  3. 小乌龟 拉取项目_从有个叫“乌龟石”的地方讲起
  4. spring 发送html邮件,Springboot2.0 发送HTML 格式的邮件。
  5. android 之UI 高级控件Adapter(适配器详解)
  6. java 隐藏文件_java-如何仅列出jtree中的非隐藏文件和非系...
  7. PCL:关于pcd数据显示乱码
  8. C++重载下标操作符[](二)
  9. C++ “::” 作用域符 双冒号 实力解释
  10. python爬取动态网站