卷积层
在上面的几篇文章中,我们已经看到了全链接层的威力,但是,这还远远不够。在本文中,我们将看到DNN的一个重要特性,卷积层。
熟悉信号处理的朋友对于卷积的概念不会陌生,这就是我们常用的滤波。只是在很多应用场景中,不是我们常见的一维滤波,而是图像处理中常见的2D滤波(比如最常见的锐化,就是一个简单的高通滤波)。在深度学习的术语中,滤波器被叫做卷积核(kernal)。
在以图像为输入的DNN网络中,一个卷积核其实是针对于输入所有通道的一个滤波器组(group of filters)。比如以常见的MNIST数据为例,每个输入数据是28x28x3的像素集合(28x28是尺寸,3是RGB 通道)。一种常见的卷积核尺寸是5x5x3,就是说每5x5x3的立方体内所有的像素点都与系数做内积,得到输出的特征图上的一个点。
卷积核的常见参数包括
参数 | 含义 |
---|---|
H×W | Heights and Width |
CI×CO | 输入与输出的信号数目 |
S | Stride 步长,即滤波器每次移动的像素点数,也可以理解为滤波之后的降采样因子 |
|
Padding,填充。为了保持输出的尺寸在输入边界的位置填入的“0”的数目 |
经过简单的计算可以得到,在长或者宽的维度上,输入尺寸 HDI×WDI×CI 与输出尺寸 HDO×WDO×CO 之间的关系可以表述为
HDO=HDI+Ptop+Pbottom−HKSH+1WDO=WDI+Pleft+Pright−WKSW+1
一般而言,为了简化控制流,我们会约定
Ptop=Pbottom=Pleft=Pright=PSH=SW=S
下面这篇文章对于卷积层的归纳相当不错,对比来看就会发现,还是信号处理中熟悉的味道 :)。
https://zhuanlan.zhihu.com/p/30074309?utm_source=wechat_session&utm_medium=social
卷积层的计算
正向传播
卷积层的正向传播和反向传播的基本运算是单通道的2D卷积(滤波)。为了简化下文的推导和展示,本文添加了一个虚拟层来表示单通道 2D卷积的输出。虚拟层进行加权求和之后可以得到卷积层的真正输出。
vcx