论文详解 + TCN 篇知识点补充: Receptive Field_感受野

此篇延伸补充的源头文章链接:


相关主题推荐文章


命名由来

Receptive Field 这个词最易开始是从生物领域被 Convolutional Neural Networks 借用到了它的原理描述上面,生物领域的意思在 wiki 上的原文是: The receptive field of an individual sensory neuron is the particular region of the sensory space in which a stimulus will modify the firing of that neuron. (各自独立的感知神经元组成的感受野是一个特殊的感知空间,此空间接受外部的刺激后会改变受刺激本身的神经单元)。

这就好比 CNN 搭建起来的神经网络,kernal 就像是一个类似 stimuli 的 Receptive Field,每当扫过一个整体图像的小块区域后,就会得出一个彼此经过卷积计算的结果,而此结果就好比 modifying the firing of that neuron.

CNN 的运算机制如下图:

可以很清楚的明白,如果只简单的任由 Convolution Filter 去扫描一张原始图片数据,那经过几次计算后,很快的整个 output 就会变得非常小,output 显示出来的最终结果也就越来越失真,换个角度也可以解释为:由于单位数据涵盖的原始数据量越来越大了,也就越来越描述不清楚其本身涵盖的东西详细内容是什么。而涵盖量用个专业的名字给冠上就是题目名:Receptive Field


Receptive Field 面积

在设计 CNN architecture 的时候,我们期望的目的是能够尽可能不失真的条件下抓取越多面积的信息,并搜集成特征值归纳在新的矩阵中,因此单就 CNN 的特征抓取这件事情本身而言,设计者会希望在 Receptive Field 大一点的情况下去搜集局域特征会好些,这样考虑的因素就不单只有单一像素的信息,而 output 出来的矩阵会缩小的情况就用 zero padding 去抵消,让经过 convolution 计算出来的 output 还是原来的尺寸。

一个 Receptive Field 里面的元素重要程度取决于 CNN 使用的 kernal 内部数值分布,一般而言,设计理念为:越接近 Receptive Field 中间的元素其重要程度越大,越加远离中间元素的其他元素,其影响力相对呈现 exponential 曲线递减。因为如此,了解每一层 kernal 的 Receptive Field 面积成为了一件在构筑框架的时候非常重要的事情,他能够让我们更加深刻的理解该层特征值矩阵是纵观了多少面积的原始数据后的出的结论。

计算 Receptive Field 面积前,先要探讨一个 input picture 经过 kernal 做 convolution 后得出的新矩阵大小,公式如下:

  • n_out = 新的矩阵的大小
  • n_in = 神经网络开始前作为输入的该原始数据(可以是图片或是上一层神经网络输出的结果)
  • p = padding 层数,表示我们在 input 数据上面围了多少层 0 元素(为了维持 input = output)
  • k = kernal 尺寸,扫描 input data 的核的长宽大小
  • s = stride,表示每次 kernal 在扫描的时候步伐长度,一次整体前进几格的设定

如果 kernal 在扫描的过程中,其内部元素都排列紧密(kernal 矩阵之间没有间隔),那么 Receptive Field 的大小也就跟上面的 n_out 值相同了,想要增大 Field 的话,就只能够用更大的 kernal 去完成,但是这也意味着更多的计算量,有没有什么办法可以让计算量不变的情况下使得 Field 增大? 聪明的研究员们给出了一个好的答案:Dilated Convolution。


疏松的 Convolution

原来使用 kernal 的时候,都是让其内部的元素“无缝”排列进行 Convolution,为了 0 成本的增加 Receptive Field,原本“无缝”的排列需要预留一些等宽的空格去做 Convolution,详情如下图:


用疏松的 kernal 去扫描的话,原本适配最左边紧密 kernal 去推导的公式也就需要多一个维度的变量去计算最终的 Receptive Field。



猜你喜欢

转载自blog.csdn.net/Kuo_Jun_Lin/article/details/80621538