卷积特征提取与池化

一、卷积特征提取

全联通网络( Full Connected Networks )

在稀疏自编码章节中,我们介绍了把输入层和隐含层进行“全连接”的设计。从计算的角度来讲,在其他章节中曾经用过的相对较小的图像(如在稀疏自编码的作业中用到过的 8x8 的小块图像,在MNIST数据集中用到过的28x28 的小块图像),从整幅图像中计算特征是可行的。但是,如果是更大的图像(如 96x96 的图像),要通过这种全联通网络的这种方法来学习整幅图像上的特征,从计算角度而言,将变得非常耗时。你需要设计 10 的 4 次方(=10000)个输入单元,假设你要学习 100 个特征,那么就有 10 的 6 次方个参数需要去学习。与 28x28 的小块图像相比较, 96x96 的图像使用前向输送或者后向传导的计算方式,计算过程也会慢 10 的 2 次方(=100)倍。

部分联通网络( Locally Connected Networks )

解决这类问题的一种简单方法是对隐含单元和输入单元间的连接加以限制:每个隐含单元仅仅只能连接输入单元的一部分。例如,每个隐含单元仅仅连接输入图像的一小片相邻区域。(对于不同于图像输入的输入形式,也会有一些特别的连接到单隐含层的输入信号“连接区域”选择方式。如音频作为一种信号输入方式,一个隐含单元所需要连接的输入单元的子集,可能仅仅是一段音频输入所对应的某个时间段上的信号。)

网络部分连通的思想,也是受启发于生物学里面的视觉系统结构。视觉皮层的神经元就是局部接受信息的(即这些神经元只响应某些特定区域的刺激)。

卷积 (Convolution)

自然图像有其固有特性,也就是说,图像的一部分的统计特性与其他部分是一样的。这也意味着我们在这一部分学习的特征也能用在另一部分上,所以对于这个图像上的所有位置,我们都能使用同样的学习特征。

更恰当的解释是,当从一个大尺寸图像中随机选取一小块,比如说 8x8 作为样本,并且从这个小块样本中学习到了一些特征,这时我们可以把从这个 8x8 样本中学习到的特征作为探测器,应用到这个图像的任意地方中去。特别是,我们可以用从 8x8 样本中所学习到的特征跟原本的大尺寸图像作卷积,从而对这个大尺寸图像上的任一位置获得一个不同特征的激活值。

下面给出一个具体的例子:假设你已经从一个 96x96 的图像中学习到了它的一个 8x8 的样本所具有的特征,假设这是由有 100 个隐含单元的自编码完成的。为了得到卷积特征,需要对 96x96 的图像的每个 8x8 的小块图像区域都进行卷积运算。也就是说,抽取 8x8 的小块区域,并且从起始坐标开始依次标记为(1,1),(1,2),…,一直到(89,89),然后对抽取的区域逐个运行训练过的稀疏自编码来得到特征的激活值。在这个例子里,显然可以得到 100 个集合,每个集合含有 89x89 个卷积特征。

假设给定了的大尺寸图像,将其定义为 Xlarge。首先通过从大尺寸图像中抽取的 的小尺寸图像样本 Xsmall 训练稀疏自编码,计算 f = σ(W(1)xsmall + b(1))(σ 是一个 sigmoid 型函数)得到了 k 个特征, 其中 W(1) 和 b(1) 是可视层单元和隐含单元之间的权重和偏差值。对于每一个 大小的小图像 xs,计算出对应的值 fs = σ(W(1)xs + b(1)),对这些 fconvolved 值做卷积,就可以得到 个卷积后的特征的矩阵。

二、池化(pooling):

概述

在通过卷积获得了特征 (features) 之后,下一步我们希望利用这些特征去做分类。理论上讲,人们可以用所有提取得到的特征去训练分类器,例如 softmax 分类器,但这样做面临计算量的挑战。例如:对于一个 96X96 像素的图像,假设我们已经学习得到了400个定义在8X8输入上的特征,每一个特征和图像卷积都会得到一个 (96 − 8 + 1) * (96 − 8 + 1) = 7921 维的卷积特征,由于有 400 个特征,所以每个样例 (example) 都会得到一个 892 * 400 = 3,168,400 维的卷积特征向量。学习一个拥有超过 3 百万特征输入的分类器十分不便,并且容易出现过拟合 (over-fitting)。

为了解决这个问题,首先回忆一下,我们之所以决定使用卷积后的特征是因为图像具有一种“静态性”的属性,这也就意味着在一个图像区域有用的特征极有可能在另一个区域同样适用。因此,为了描述大的图像,一个很自然的想法就是对不同位置的特征进行聚合统计,例如,人们可以计算图像一个区域上的某个特定特征的平均值 (或最大值)。这些概要统计特征不仅具有低得多的维度 (相比使用所有提取得到的特征),同时还会改善结果(不容易过拟合)。这种聚合的操作就叫做池化 (pooling),有时也称为平均池化或者最大池化 (取决于计算池化的方法)。

下图显示池化如何应用于一个图像的四块不重合区域。

池化的不变性

如果人们选择图像中的连续范围作为池化区域,并且只是池化相同(重复)的隐藏单元产生的特征,那么,这些池化单元就具有平移不变性 (translation invariant)。这就意味着即使图像经历了一个小的平移之后,依然会产生相同的 (池化的) 特征。在很多任务中 (例如物体检测、声音识别),我们都更希望得到具有平移不变性的特征,因为即使图像经过了平移,样例(图像)的标记仍然保持不变。例如,如果你处理一个MNIST数据集的数字,把它向左侧或右侧平移,那么不论最终的位置在哪里,你都会期望你的分类器仍然能够精确地将其分类为相同的数字。

(*MNIST 是一个手写数字库识别库: http://yann.lecun.com/exdb/mnist/)

形式化描述

形式上,在获取到我们前面讨论过的卷积特征后,我们要确定池化区域的大小(假定为),来池化我们的卷积特征。那么,我们把卷积特征划分到数个大小为 的不相交区域上,然后用这些区域的平均(或最大)特征来获取池化后的卷积特征。这些池化后的特征便可以用来做分类。

深度学习笔记---卷积特征提取与池化相关推荐

  1. 深度学习笔记(25) 池化层

    深度学习笔记(25) 池化层 1. max pooling 2. mean pooling 3. pooling 超参 1. max pooling 除了卷积层,卷积网络也经常使用池化层来缩减模型的大 ...

  2. 吴恩达深度学习笔记——卷积神经网络(Convolutional Neural Networks)

    深度学习笔记导航 前言 传送门 卷积神经网络(Convolutional Neural Networks) 卷积神经网络基础(Foundations of Convolutional Neural N ...

  3. 吴恩达深度学习笔记——卷积神经网络(CNN)

    目录 一.计算机视觉(Computer vision) 二.边缘检测示例(Edge detection example) 三.更多的边缘检测内容(More edge detection) 四.Padd ...

  4. 深度学习(十三)——花式池化, Batch Normalization

    https://antkillerfarm.github.io/ 花式池化 池化和卷积一样,都是信号采样的一种方式. 普通池化 池化的一般步骤是:选择区域P,令Y=f(P)Y=f(P).这里的f为池化 ...

  5. 深度学习笔记第三门课 结构化机器学习项目 第一周 机器学习(ML)策略(1)...

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

  6. 深度学习笔记第三门课 结构化机器学习项目 第二周 机器学习(ML)策略(2)...

    本文是吴恩达老师的深度学习课程[1]笔记部分. 作者:黄海广[2] 主要编写人员:黄海广.林兴木(第四所有底稿,第五课第一二周,第三周前三节).祝彦森:(第三课所有底稿).贺志尧(第五课第三周底稿). ...

  7. 【动手学深度学习PyTorch版】15 池化层

    上一篇请移步[动手学深度学习PyTorch版]14 卷积层里的多输入多输出通道_水w的博客-CSDN博客 目录 一.池化层 1.1 池化层 ◼池化层原因 ◼ 二维最大池化 1.2 填充.步幅与多个通道 ...

  8. Ng深度学习笔记-卷积神经网络-目标检测

    目标定位 符号表示: 图片左上角的坐标为(0,0)(0,0)(0,0),右下角标记为(1,1)(1,1)(1,1). 红色方框的中心点(bxb_{x}bx​,byb_{y}by​),边界框的高度为bh ...

  9. Keras读书笔记----卷积层、池化层

    1. 卷积层 1.1. Convolution1D层 一维卷积层,用以在一维输入信号上进行邻域滤波.当使用该层作为首层时,需要提供关键字参数 input_dim 或 input_shape . ker ...

最新文章

  1. 基于java的InputStream.read(byte[] b,int off,int len)算法学习!
  2. 代码之美 - 小函数总结
  3. 信息抽取(五)实体命名识别之嵌套实体识别哪家强,我做了一个简单的对比实验
  4. HTML Viewer的定制
  5. MongoDB复制集技术
  6. Web前端开发——BAT面试题汇总及答案01
  7. qtableview删除选中行_如何批量删除PPT备注+如何修改模板信息
  8. Android 的Android Device Monitor 打不开出现 A error has occured
  9. 阿里影业出品影片《1917》斩获奥斯卡多项大奖 有望国内院线上映
  10. HTTP传输二进制初探
  11. listenfd ---- accept事件
  12. 数学建模姜启源5.1人口增长——学习记录
  13. 数据库设计(一)——数据库设计
  14. 88e1111的1000base-x to copper(GBIC)配置及使用
  15. Kubernetes安装EFK日志收集
  16. Ubuntu LTS 18.04 双硬盘双系统安装以个人优化
  17. Delphi判断是否为周末?今天是周几?
  18. 智能驾驶视觉传感器测试:自动驾驶车辆如何进行传感器标定?
  19. Wix 安装部署教程(十三) -- 多语言安装包
  20. 服务器托管如何选择合适的idc服务器托管商

热门文章

  1. 谁偷了我的奶酪(中)
  2. css 竖排文字输入
  3. 计算机专业打眼会不会有影响,激光打眼后遗症
  4. 高中数学必修一:一元三次函数快速求解(全新思维)
  5. Shell----Shell编程快速入门
  6. html哪些标签可以用在制作列表中,用HTML列表标签ul、ol和dl制作菜单
  7. 分享3个好用到爆的Python模块,点赞收藏
  8. DMZ(非军事化区)
  9. python 中文报错 Non-ASCII character '\xe8' in file
  10. 文件夹监听FileListener