解析卷积神经网络——基础理论篇

第二章 卷机神经网络基本部件

2.1 “端到端”思想(end-to-end manner)

深度学习的一个重要思想即”端到端”的学习方式,属于表示学习的一种。整个学习流程并不进行人为的子问题划分,而是完全交给深度学习模型直接学习从原始输入到期望输出的映射。相比分治策略,“端到端”的学习方式具有协同增效的优势,有更大可能获得全局最优解’
如图,对深度模型而言,其输入数据是未经任何人为加工的原始样本形式,后续则是堆叠在输入层上的众多操作层。这些操作层整体可看作一个复杂的函数 ,最终损失函数由数据损失(loss)和模型参数的正则化。

2.2 网络符号定义


2.3 卷积层(convolution layer)

卷积层是卷积神经网络中的基础操作,甚至在网络最后起分类作用的全连接层在工程实现时也是由卷积操作替代的。

什么是卷积

卷积运算实际是分析数学中的一种运算方式,在卷积神经网络中通常是仅涉及离散卷积的情形。
(ps:此处原文介绍繁琐,此处替换为我第一次理解时看到的图,理解卷积工作原理。)
假设输入图像(输入数据)为如下图左侧的5×5矩阵,其对应的卷积核(亦称卷积参数convolution-kernel或convolution-filter)为一个3×3的矩阵。同时,假定卷积操作时每做一次卷积,卷积核移动一个像素位置,即卷积步长(stride)为 1。
卷积核按照步长大小在输入图像上从左至右自上而下依次将卷积操作进行下去,最终输出3×3大小的卷积特征,同时该结果将作为下一层操作的输入。

与之类似,若三维情形下的卷积层 l 的输入张量为 x l ∈ R Hl×W l ×D l,该层l卷积核为 f l ∈ R H×W ×Dl 。三维输入时卷积操作实际只是将二维卷积扩展到了对应位置的所有通道上(即 D l ),最终将一次卷积处理的所有 HW D l 个元素求和作为该位置卷积结果。如下图所示。

卷积操作的作用

可以看出卷积是一种局部操作,通过一定大小的卷积核作用于局部图像区域获得图像的局部信息。
本节以三种边缘卷积核(亦可称为滤波器)来说明卷积神经网络中卷积操作的作用。如图,我们在原图上分别作用整体边缘滤波器、横向边缘滤波器和纵向边缘滤波器,这三种滤波器(卷积核)分别为下式Ke,Kh,Kv :

试想,若原图像素 (x, y) 处可能存在物体边缘,则其四周 (x−1, y),(x+1, y),(x, y − 1),(x, y + 1) 处像素值应与 (x, y) 处有显著差异。此时,如作用以整体边缘滤波器 K e ,可消除四周像素值差异小的图像区域而保留显著差异区域,以此可检测出物体边缘信息。同理,类似 Kh 和 Kv 的横向、纵向边缘滤波器可分别保留横向、纵向的边缘信息。

事实上,卷积网络中的卷积核参数是通过网络训练学出的,除了可以学到类似的横向、纵向边缘滤波器,还可以学到任意角度的边缘滤波器。当然,不仅如此,检测颜色、形状、纹理等等众多基本模式(pattern)的滤波器(卷积核)都可以包含在一个足够复杂的深层卷积神经网络中。通过“组合”这些滤波器(卷积核)以及随着网络后续操作的进行,基本而一般的模式会逐渐被抽象为具有高层语义的“概念”表示,并以此对应到具体的样本类别。

2.4 汇合层(pooling layer)

通常使用的汇合操作为平均值池化(acreage-pooling)和最大值汇合(max-pooling),需要指出的是,同卷积层操作不同,汇合层不包含需要学习的参数。使用时仅需指定汇合类型(average 或 max 等)、汇合操作的核大小( kernel size )和池化操作的步长(stride)等超参数即可。

什么是汇合



除了最常用的上述两种汇合操作外,随机汇合(stochastic-pooling)则介于二者之间。对随机汇合而言,元素值大的响应(activation)被选中的概率也大,反之易然。可以说,在全局意义上,随机汇合与平均值汇合近似;在局部意义上,则服从最大值汇合的准则。

汇合操作的作用

汇合操作实际上就是一种“降采样”(down-sampling)操作。另一方面,汇合也看成是一个用 p-范数(p-norm) 作为非线性映射的“卷积”操作,特别的,当 p 趋近正无穷时就是最常见的最大值汇合。汇合层的引入是仿照人的视觉系统对视觉输入对象进行降维(降采样)和抽象。在卷积神经网络过去的工作中,研究者普遍认为汇合层有如下三种功效:

  1. 特征不变性( feature invariant )。汇合操作使模型更关注是否存在某些特征而不是特征具体的位置。可看作是一种很强的先验,使特征学习包含某种程度自由度,能容忍一些特征微小的位移。
  2. 特征降维。由于汇合操作的降采样作用,汇合结果中的一个元素对应于原输入数据的一个子区域( sub-region ) ,因此汇合相当于在空间范围内做了维度约减(spatially dimension reduction ),从而使模型可以抽取更广范围的特征。同时减小了下一层输入大小,进而减小计算量和参数个数。
  3. 在一定程度防止过拟合( overfitting ),更方便优化。

2.5 激活函数(activation function)

激活函数(activation function)层又称非线性映射(non-linearity mapping)层,激活函数的引入为的是增加整个网络的表达能力(即非线性)。否则,若干线性操作层的堆叠仍然只能起到线性映射的作用,无法形成复杂的函数。在实际使用中,有多达十几种激活函数可供选择。
本节以Signoid型激活函数和ReLU函数为例,介绍涉及激活函数的若干基本概念和问题。直观上,激活函数模拟了生物神经元特性:接受一组输入信号并产生输出。在神经科学中,生物神经元通常有一个阈值,当神经元所获得的输入信号累积效果超过了该阈值,神经元就被激活而处于兴奋状态;否则处于抑制状态。

在人工神经网络中,因Signoid型函数可以模拟这一生物过程,从而在神经网络发展历史进程中曾处于相当重要的地位。
Signoid型函数也称Logistic函数,定义如下:


很明显能看出,经过Signoid型函数作用后,输出响应的值域被压缩到 [0, 1] 之间,而0对应了生物神经元的“抑制状态”,1则恰好对应了“兴奋状态”。不过再深入的观察还能发现在Signoid函数两端,对于大于 5(或小于 −5)的值无论多大(或多小)都会压缩到 1(或0)。
如此便带来一个严重问题,即梯度的“饱和效应”(saturation effect)。对照 Signoid型函数的梯度图,大于5(或小于 −5)部分的梯度接近0,这会导致在误差反向传播过程中导数处于该区域的误差将很难甚至根本无法传递至前层,进而导致整个网络无法训练(导数为 y 将无法更新网络参数)。此外,在参数初始化的时候还需特别注意,要避免初始化参数直接将输出值域带入这一区域:一种可能的情形是当初始化参数过大时,将直接引发梯度饱和效应而无法训练。

为了避免梯度饱和效应的发生,Nair 和 Hinton于2010年将修正线性单元(Rectified Linear Unit 简称ReLU)引入神经网络 。ReLU 函数是目前深度卷积神经网络中最为常用的激活函数之一。另外,根据 ReLU函数改进的其他激活函数也展示出更好的性能(请参见第 3章内容)。
ReLU 函数实际上是一个分段函数,其定义为:


由图可见,ReLU 函数的梯度在 x ≥ 0 时为 1,反之为 0。对 x ≥ 0 部分完全消除了Sigmoid型函数的梯度饱和效应。同时,在实验中还发现相比Sigmoid 型函数,ReLU 函数有助于随机梯度下降方法收敛,收敛速度约快 6倍左右。正是由于 ReLU 函数的这些优质特性,ReLU 函数已成为目前卷积神经网络及其他深度学习模型(如递归神经网络RNN等)激活函数的首选之一。

2.6 全连接层(fully connected layers)

全连接层在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、汇合层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的特征表示映射到样本的标记空间的作用。
在实际使用中,全连接层可由卷积操作实现:对前层是全连接的全连接层可以转化为卷积核为 1 × 1 的卷积;而前层是卷积层的全连接层可以转化为卷积核为h × w的全局卷积,h 和 w 分别为前层卷积输出结果的高和宽。
以经典的VGG-16网络模型为例,对于 224 × 224 × 3 的图像输入,最后一层卷积层(指 VGG-16中的pooling5 ) 可得输出为 7 × 7 × 512 的特征张量,若后层是一层含 4096 个神经元的全连接层时,则可用卷积核为 7 × 7 × 512 × 4096 的全局卷积来实现这一全连接运算过程,其中该卷积核具体参数如下:

% the first fully connected layer
filter_size = 7; padding = 0; stride = 1;
D_in = 512; D_out = 4096; 

经过此卷积操作后可得 1 × 1× 4096 的输出。如需再次叠加一个含 2048个神
经元的全连接层,可设定以下参数的卷积层操作。

% the second fully connected layer
filter_size = 1; padding = 0; stride = 1;
D_in = 4096; D_out = 2048; 

2.7目标函数

全连接层是将网络特征映射到样本的标记空间做出预测,目标函数的作用则用来衡量该预测值与真实样本标记之间的误差。
在当下的卷积神经网络中,交叉熵损失函数和l2损失函数分别是分类问题和回归问题中最为常用的目标函数。

2.8小结

  1. 本章介绍了深度学习中的关键思想——“端到端”学习方式;
  2. 介绍了卷积神经网络的基本部件:卷积操作、汇合操作、激活函数(非线性映射)、全连接层和目标函数。整个卷积神经网络通过这些基本部件的“有机组合”即可实现将原始数据映射到高层语义、进而得到样本预测标记的功能。下一章将介绍卷积神经网络结构中的几个重要概念以及如何对这些部件进行”有机组合“。

[读书笔录]解析卷机神经网络(魏秀参)——第二章相关推荐

  1. [读书笔记][20个月赚130亿]-第二章第二节-165号

    我读了20个月赚130亿的, 第二章第二节,165号. 大学路165号, 离斯坦福大学很近的一个地方,学生经常经过的一个地方,那是一个幸运的地方,有个很多成功的公司在那里,谷歌,paypal, 罗技. ...

  2. 读书笔记《超实用笔记读书法》第二章 用购书清单指名购书

    购书清单是一份无形的财富 制作购书清单,作为读书方法过程的一部分 理由一 培养带着目的去读书的目的意识 影响阅读速度 步骤:列出读书清单–>在书店确认–>购买 通过这步骤,了解为什么要读这 ...

  3. 读书笔记《疯狂人类进化史》,第二章,人为什么不长毛

    一.人类没毛的可能原因 1)像鲸鱼.海豚,他们常年在水里,披着满身的毛发没什么意义,还增加阻力: 2)像裸鼹鼠这种长期生活在地地下的动物,长毛也没什么意义,既不需要保暖,也不需要防晒,没有毛发还可以免 ...

  4. 深度学习笔记之《解析卷积神经网络》附下载地址

    点击上方"Datawhale",选择"星标"公众号 第一时间获取价值内容 <解析卷积神经网络>是 @魏秀参 博士撰写的深度学习实践手册,主要以卷积神 ...

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

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

  6. 神经网络如何调参、超参数的最优化方法、python实现

    神经网络如何调参.超参数的最优化方法.python实现 一.what is 超参数 二.超参数优化实验 一.what is 超参数 超参数是什么,其实就是,各层神经元数量.batch大小.学习率等人为 ...

  7. keras_猫狗分类案例(三)_卷机神经网络的可视化(可视化类激活的热力图)

    卷机神经网络的可视化(可视化类激活的热力图) 参考:https://www.cnblogs.com/zhhfan/p/9978099.html python深度学习 可视化类激活的热力图 我还要介绍另 ...

  8. Hinton机器学习与神经网络课程的第二章学习笔记

    Hinton机器学习与神经网络课程的第二章学习笔记 该笔记为自己以后方便查阅,要是有大神感觉我的笔记有哪些地方记的有误差或者不对的话也欢迎指出 文章目录 Hinton机器学习与神经网络课程的第二章学习 ...

  9. 智能计算系统(学习笔记)-第二章神经网络

    课程: (智能计算系统第二章)地址 第二章神经网络 从机器学习到神经网络 符号说明: 线性-回归regression:最基础的机器学习 一元线性回归 多元线性回归 评价拟合的好坏 神经网络的发展 人工 ...

  10. 第一行代码Android第二章读书笔记

    第一行代码Android第二章读书笔记 Activity 1.1 手动创建活动 1.2 Toast和Menu/销毁活动 Intent 2.1 显示/隐式 2.2 传递/返回数据 活动的生命周期 3.1 ...

最新文章

  1. PHPCMS V9 杂记一
  2. 伤感网络验证系统_可验证云数据库架构与设计
  3. 《android基于andFix的热修复方案》实战篇
  4. IOS7笔记-6、控制器多态性、导航控制器、选项卡栏控制器
  5. 档案盒正面标签制作_错题本科学制作方法、正确使用方式及窍门
  6. js中substr与substring的区别
  7. android模拟器参数设置,模拟器设置界面详解 - 新手引导 - 逍遥安卓论坛 - Powered by Discuz!...
  8. java spark命令行执行参数
  9. Linux C++后端开发学习路线参考汇总
  10. 马云的卸任,刘强东的舆论,万达的动荡,谁将是下一个龙头老大!
  11. 北疆游记 - 照片在左边相册
  12. 编程人员的不二之选 LEGION Y9000X正式发布
  13. 人类记忆系统之谜,或许是这样一回事
  14. 做了个网页版的 五笔跟打器: 玫枫跟打器
  15. html几个重要标签用法(div,p,span,ul,li,dl,dt,dd,a,img,h,strong,em)
  16. 章节十六:编码和文件读写
  17. 电脑蓝屏原因与手把手处理指南(关于0x00000124分析)
  18. Threejs系列--9游戏开发--沙漠赛车游戏【基础场景渲染】
  19. Google天气预报API
  20. unity Toggle Groud

热门文章

  1. 游戏软件测试用例编写范文,软件测试用例报告模板.doc
  2. JMeter使用教程-压测
  3. atmega328p引脚图_ATmega328P定时器详解
  4. wps office2019PC版和Mac版_来试试这款政府版WPS吧
  5. PHP高并发场景的三种解决方案
  6. STEP 7-MicroWIN SMART 上传时搜索不到PLC
  7. linux dma大块内存,宋宝华:Linux内核的连续内存分配器(CMA)——避免预留大块内存...
  8. for linux pdf转mobi_在Linux上,如何为Amazon Kindle转换各种电子书格式
  9. Navicat注册机报错No all pattern found! file already patched
  10. 性能测试-性能狗(Perfdog)测试与数据分析