Sparse Interactions, Receptive Field and Parameter Sharing是整个CNN深度网络的核心部分,我们用本文来具体分析其原理。

首先我们考虑Feedforward Neural Network,L层的输出矩阵,等于L层的输入矩阵与L层的权重矩阵做矩阵乘法,而后进行非线性变换。也就是说,L层的每一个输出数据,与L层的每一个输入数据都有关系。若输入数据是m维,输出数据是n维,则存在m*n个权重项来表征输入与输出间的关系。所以,Forward-propagation的时间复杂度是O(m*n)。

根据在机器学习方面的实际经验看来,weight过多导致的问题主要有:难以训练,overfitting等。所以CNN引入Sparse Interactions来解决稠密权重(Dense Weight)的问题。以一个核宽度为3的网络来举例:下一层的输出S3,只与3个输入x2,x3,x4有关。

x2,x3,x4称为s3的Receptive Field,这其实是一个从神经科学舶来的概念。这里引用wikipedia关于Receptive Field的一段原文吧:

“Work by Hubel and Wiesel in the 1950s and 1960s showed that cat and monkey visual cortexes contain neurons that individually respond to small regions of the visual field. Provided the eyes are not moving, the region of visual space within which visual stimuli affect the firing of a single neuron is known as its receptive field. Neighboring cells have similar and overlapping receptive fields. Receptive field size and location varies systematically across the cortex to form a complete map of visual space. The cortex in each hemisphere represents the contralateral visual field.”

在位于枕叶(Occiptal Lobe)的大脑视觉皮质(Visual Cortex)中,存在一些神经元,每个单独的神经元对应一个Receptive Field。这也是Biological Neural Network在图像处理方面启发Artificial Neural Network的地方。如果仅仅到此为止,我们的确降低了模型的复杂度,并且把Weight Matrix缩小至k*n,k是kernel的大小。也就是说,在下一层中共有n个neurons,每一个neuron仅仅与上一层的k个值有关。

但Weight Sharing概念的引入,则将模型进一步简化,从而达到:weight的个数仅仅与kernel的大小有关。对于Kernel 和 Weight Sharing,可以这样理解:L层与L-1层之间并没有固定的连接线,而是采取动态绑定,在两层之间存在一个小小的window,称为kernel。透过该窗口可以看到原图像的一小部分,随着窗口不断从左到右,从上到下滑动,整个图片都被扫描。而扫描到的图片区,和kernel来做卷积,生成feature map。而整张图片,共享的weight其实就是kernel的值,如果kernel改变,整张图的扫描结果(feature map)将会改变。过程如下图:

另一种理解方式如下图,实际情况也非动态扫描,而是存在权重相同的通路:

Convolutional Neural Networks(2):Sparse Interactions, Receptive Field and Parameter Sharing的更多相关文章

  1. [转]An Intuitive Explanation of Convolutional Neural Networks

    An Intuitive Explanation of Convolutional Neural Networks https://ujjwalkarn.me/2016/08/11/intuitive ...

  2. An Intuitive Explanation of Convolutional Neural Networks

    https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/ An Intuitive Explanation of Convolu ...

  3. Understanding the Effective Receptive Field in Deep Convolutional Neural Networks

    Understanding the Effective Receptive Field in Deep Convolutional Neural Networks 理解深度卷积神经网络中的有效感受野 ...

  4. 机器视觉:Convolutional Neural Networks, Receptive Field and Feature Maps

    CNN 大概是目前 CV 界最火爆的一款模型了,堪比当年的 SVM.从 2012 年到现在,CNN 已经广泛应用于CV的各个领域,从最初的 classification,到现在的semantic se ...

  5. 卷积神经网络用于视觉识别Convolutional Neural Networks for Visual Recognition

    Table of Contents: Architecture Overview ConvNet Layers Convolutional Layer Pooling Layer Normalizat ...

  6. 卷积神经网络LeNet Convolutional Neural Networks (LeNet)

    Note This section assumes the reader has already read through Classifying MNIST digits using Logisti ...

  7. [C6] Andrew Ng - Convolutional Neural Networks

    About this Course This course will teach you how to build convolutional neural networks and apply it ...

  8. A Beginner's Guide To Understanding Convolutional Neural Networks(转)

    A Beginner's Guide To Understanding Convolutional Neural Networks Introduction Convolutional neural ...

  9. (转)A Beginner's Guide To Understanding Convolutional Neural Networks Part 2

    Adit Deshpande CS Undergrad at UCLA ('19) Blog About A Beginner's Guide To Understanding Convolution ...

随机推荐

  1. [ZJOI2009]取石子游戏

    瞪了题解两三天,直接下转第二篇题解就康懂了 首先我们令 : \(L[i][j]\) 表示当前 \([i,j]\) 区间左侧放置 \(L[i,j]\) 数量的石子后先手必败 \(R[i][j]\) 表示 ...

  2. CSS3实现小于1px的边框(移动端)

    <!doctype html> <html lang="en"> <head> <meta content="width=dev ...

  3. wxpython模板程序,包括各个实例

    #coding=utf-8 import wx import time import os class MyApp(wx.App): def __init__(self): wx.App.__init ...

  4. 浏览器是怎样工作的(一):基础知识 转载http://ued.ctrip.com/blog/how-browsers-work-i-basic-knowledge.html

    译注: 前两天看到一篇不错的英文文章,叫做 How browsers work,该文概要的介绍了浏览器从头到尾的工作机制,包括HTML等的解析,DOM树的生成,节点与CSS的渲染等等,对于想学习浏览器 ...

  5. 关于.net的精彩对话(转)

    [序言]我想很多爱好软件编程的网友都像我一样,对微软推出的.net平台充满了好奇,但是看了相关的文档也是一头雾水,还好,Purple很幸运在QQ上遇到了一位.net高手,经过高手的一番教导,Purpl ...

  6. SQL语句-exec执行

    动态sql语句基本语法1 :普通SQL语句可以用Exec执行 eg:   Select * fromtableName        Exec('select * from tableName')   ...

  7. Python之路-Python中的线程与进程

    一.发展背景 任务调度 大部分操作系统(如Windows.Linux)的任务调度是采用时间片轮转的抢占式调度方式,也就是说一个任务执行一小段时间后强制暂停去执行下一个任务,每个任务轮流执行.任务执行的 ...

  8. AtCoder Beginner Contest 137

    前言 又是卡在了T4 , 总分 100 + 200 + 300 = 600pts rank 2449.以后还是要多积累比赛经验. A 输出a+b,a-b,a*b中最大的数,还要多简单?不挂代码了 B ...

  9. DDD领域驱动设计初探(一):聚合

    前言:又有差不多半个月没写点什么了,感觉这样很对不起自己似的.今天看到一篇博文里面写道:越是忙人越有时间写博客.呵呵,似乎有点道理,博主为了证明自己也是忙人,这不就来学习下DDD这么一个听上去高大上的 ...

  10. CH5E26 扑克牌 (计数类DP)

    $ CH~5E26~\times ~ $ 扑克牌: (计数类DP) $ solution: $ 唉,计数类DP总是这么有套路,就是想不到. 这道题我们首先可以发现牌的花色没有价值,只需要知道每种牌有 ...