Convolutional Neural Network(CNN)— 卷积神经网络
CNN专用在影像上的神经网络,目的是作影像辨识、影像分类,即通过输入的影像,输出影像中的内容。

对于CNN,有两种解释方法:

Explanation 1:Neuron Version


如上图所示:
输入:image(假设大小固定为100x100,若非100x100的图片则需要rescale后再放入影像辨识系统中)
输出:y’(vector)
目标输出:y^ (每一个目标需要表示成one-hot vector,在向量中数值为1的维度对应所属目标,且维度长度决定现在的模型可辨识不同种类目标的数目)在上图的y^所表示的目标向量中,猫所对应的维度为1,表示目标结果为猫。

此时计算Cross entropy,cross entropy越小,y‘与y^越接近,即输出结果与目标结果越接近。

机器输出结果y‘是如何从图像转化为向量

3-D tensor:三维矩阵对于machine而言,一张图片是一个3-D tensor,3维:图片的高、图片的宽、图片的channel数目。
当图片是彩色的,channel数目为3(RGB三色)
当图片是黑白的,channel数目为1

基于彩色图片来讨论,将每一个channel中的pixel展开列出成一个向量,向量中每一维存储的数值,代表某一个颜色的强度。

如何辨识向量中的图案

通过Fully connected Network以辨识向量中的图案

每一个neuron和输入向量中每一个数值都会有一个weight。例如上图中,输入向量的长度为3x100x100,neuron数目为1000,则第一层conventional network的参数数目为3x107
参数数目过高,容易导致overfitting,我们事实上不需要这么多参数

如何减少参数,降低model弹性

Simplification 1: 采用receptive field


在影像辨识中,只需要辨识影像中的关键特征,不需要观测整张图片中的所有细节特征。不同的neuron可用于辨识不同的特征。Simplification 1解决了此问题。

每一个neuron只考虑自己的Receptive field。如上图中:这一个neuron只考虑每个channel中3x3的区域。

上图中给出三个问题:
(1)Q:不同neurons是否可以有不同大小的receptive fields? A:可以,Receptive field的大小是自己定义的
(2)Q:neuron可否只考虑某些channel? A:可以,某些pattern或许只在一种颜色上出现
(3)Q:Receptive field可否不是正方形?A:可以,receptive field的形状和大小都是自定义的

此外,多个neuron可以同时守备一个receptive field,不同receptive fields之间可以重叠。通常,同一个receptive field会由一组neurons去守备。

在上图中,左上角3x3的正方形为一个receptive field,由一组neurons守备。将该field向其他方向移动,移动跨度stride设为2,则转化为下一个receptive field。receptive field将会覆盖整张图片,因此可能会出现field超出image的情况,将超出部分补0来解决。

Simplification 2:采用parameter sharing


在侦测过程中,每一组neuron会用不同参数来侦测同一个pattern,如上图:p1会用该守备范围中的neuron的一个参数来侦测鸟喙,而p2会用自己守备范围的neuron中的另一个参数来侦测鸟喙。因此发现可以用同一个参数来侦测同一种pattern。

parameter sharing是基于simplification1的方法,也需要用到receptive field。

每一个receptive field都有一组neuron守备,一个黑圆代表一个neuron。

两个receptive field之间,它们中的两组neuron,相同颜色的neuron表示这两个neuron之间共享同一组参数。因此所有receptive field只有一组参数。共享同一组参数的neuron number称为filter number(number表示某数字序号)

Conclusion:
Fully Connected Layer:弹性最大
Receptive Field:不需要看整张图片,只需要看一个范围
parameter sharing:共享相同作用的参数

Explanation 2:Filter Version

filter的介绍


在第一层convolution中,有很多filter,filter的大小为3 x 3 x channel’s size(前两项也是自定义,不一定是3x3;若图片为彩色,则channel = 3,若为黑白,则channel = 1)。每一个filter都称为tensor。

filter如何与图片运作


假设图片是黑白的。Filter的大小为3x3x1。这些filter中的参数来源于model中的parameter,是未知的,需要通过gradient descent计算出。在这里假设参数已经求出。

将filter与receptive field作interproduct(内积)。如上图中,filter 1与image中左上角的receptive field做interproduct,得到值3,并放在一个新的矩阵的左上角中。stride = 1,因此将field向右移动一个单位,新的field再次和filter 1做内积,得到值-1,置于矩阵中。重复上述操作,直至receptive field覆盖image。

filter与field做内积 = filter侦测pattern,是因为:做内积后,得到的数值越大证明该receptive field与filter越相似。在上图中,filter的对角线为1&1&1,在receptive field中对角线也是1&1&1时,内积得到的值最大。

filter 2像上述一样做内积,再得到一群数字。假设共有64个filter,我们则会有64群数字。通过内积得到的所有数字,称为Feature Map。可以将feature map看作一张channel为64,size为4x4的新图片。

Multiple convolution layers


在第二层的convolution中,也有很多的filter,size为3x3,高度必须设为channel数目,即64。 第二层的channel数目为第一层convolutional layer的filter数目。
在第二层的convolution中,如下图所示:

假设filter的size仍为3x3,第二层的convolutional layer中,蓝色框起来的部分:左上角的-1对应箭头所指范围,右下角的-2对应箭头所指范围,箭头所指的image为原image。如此在一次内积后,能侦测原image中5x5范围中的pattern。因此不必担心侦测不到图案大的pattern

Comparison of two stories


Explanation 1中的共享参数,共有3x3x3个,对应到Explanation 2中的filter里3x3x3个参数。上图中,相同颜色表示参数一致。

Pooling

将一张图片缩小后,其中的内容不会发生改变。

Pooling 是如何运作的

Pooling中不含参数,不需要学习,仅仅是一个Operator。Pooling有很多版本,下面讲述 Max pooling:

在Max Pooling中,filter得到的一群数字后,将数字分为n x n的square(n为自定义数字),选取每一个square中最大的数字作为每一个square的代表。图片通过pooling就能从4x4的图片变成2x2的图片。
Convolution与pooling一般交替使用。需要注意的是:若需要在图片中侦测细微的东西,使用pooling则会降低侦测效果,使用pooling的原因是为了减少影像,从而减少运算量,因此pooling操作不是必要的。

pooling后的操作是:将矩阵中的数值拉直成一个向量,再将该向量放入fully connected的layer中,再经过softmax得到最后的辨识结果。

机器学习 卷积神经网络 Convolutional Neural Network(CNN)相关推荐

  1. 卷积神经网络(Convolutional Neural Network, CNN)

    卷积神经网络(Convolutional Neural Network, CNN) 目录 卷积神经网络(Convolutional Neural Network, CNN) 概述: 结构: 卷积层:

  2. 卷积神经网络Convolutional Neural Network (CNN)

    卷积神经网络 转载请注明:http://blog.csdn.net/stdcoutzyx/article/details/41596663 自今年七月份以来,一直在实验室负责卷积神经网络(Convol ...

  3. 深度学习之卷积神经网络(Convolutional Neural Networks, CNN)

    前面, 介绍了DNN及其参数求解的方法(深度学习之 BP 算法),我们知道DNN仍然存在很多的问题,其中最主要的就是BP求解可能造成的梯度消失和梯度爆炸.那么,人们又是怎么解决这个问题的呢?本节的卷积 ...

  4. 深度学习之卷积神经网络(Convolutional Neural Networks, CNN)(二)

    前面我们说了CNN的一般层次结构, 每个层的作用及其参数的优缺点等内容.深度学习之卷积神经网络(Convolutional Neural Networks, CNN)_fenglepeng的博客-CS ...

  5. 卷积神经网络Convolution Neural Network (CNN) 原理与实现

    本文结合Deep learning的一个应用,Convolution Neural Network 进行一些基本应用,参考Lecun的Document 0.1进行部分拓展,与结果展示(in pytho ...

  6. 卷积神经网络, Convolutional Neural Networks , CNN

    1,简介 CNN是deep learning在图像处理领域的一个应用 由具有可学习的权重和偏置常量(biases)的神经元组成,是deeplearning在图像处理的一个应用 2,卷积层(Convol ...

  7. 深度学习(Deep Learning)——卷积神经网络 (Convolutional Neural Networks / CNN)

    一.卷积神经网络的概述 1.卷积神经网络与普通神经网络非常相似,它们都由具有可学习的权重w和偏置常量(biases)的神经元组成.每个神经元都接收一些输入,并做一些点积计算,输出是每个分类的分数,普通 ...

  8. 【翻译论文】An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM)

    [翻译论文]An Architecture Combining Convolutional Neural Network (CNN) and Support Vector Machine (SVM) ...

  9. 第五节 Convolutional Neural Network (CNN)

    第五节 Convolutional Neural Network (CNN) 1. image classification 图像分类 首先假设输入模型的所有图片的大小都是固定的.如果图像不一样就线r ...

最新文章

  1. mac for docker访问宿主机服务
  2. java读取pdf_Java 读取PDF中的文本和图片的方法
  3. REST、RESTful 与 RESTful API
  4. 怎么给自己的python换源_windows/linux下如何更换Python的pip源
  5. [LeetCode]LRU Cache有个问题,求大神解答【已解决】
  6. leetcode-Combinations 复习复习排列组合
  7. 完美实现Android ListView中的TextView的跑马灯效果
  8. 数据库索引设计与优化pdf
  9. Windows Server 无法启用 网络发现
  10. 网易发起“疾风”智造IoT联盟,深化“互联网+先进制造业”发展
  11. 古代情感诗词top100
  12. 凉开水泡绿茶有利降血糖
  13. JVM---垃圾回收概述及相关概念
  14. Tiled-免费2D游戏场景Tile编辑器
  15. GG32F450XX上移植RT-Thread+LWIP协议栈
  16. 如何在未越狱的iOS 设备上安装 ipa
  17. 检查手机端还是非手机端,做m站和pc站的适配
  18. 华为宣布鸿蒙OS开源
  19. 同态加密:分圆多项式简介
  20. RESTful的意义及其使用规则

热门文章

  1. FileZilla FTP Server 安全加固
  2. 漂亮的壁纸,这些网站就足够了。
  3. 老师发的周报写法,之前自己太随意没有规则了QAQ
  4. 旷视2020图像算法工程师机考题(15道选择题)
  5. 微信每日早安推送 Windows版
  6. LeetCode:数组刷题(17道经典题目)
  7. SONET与SDH的关系
  8. 75款响应式国外漂亮网站建设中模板(上线倒计时模板)
  9. 互联网营销新模式,泰山众筹sun4.0模式了解一下
  10. 在VM虚拟机上安装Red Hat Enterprise Linux