卷积神经网络(其他卷积方式)
介绍一些其它的卷积方式:
转置卷积
假设有一个高维向量为x ∈ 和一个低维向量为z ∈
,p < d。如果用仿射变换来实现高维到低维的映射,
z = Wx, (5.39)
其中W ∈ 为转换矩阵。我们可以很容易地通过转置W 来实现低维到高维的反向映射,即
上述并不是逆运算,只是形式上的转置关系。
卷积操作也可以写为仿射变换的形式。假设一个5 维向量x,经过大小为3的卷积核进行卷积,得到3 维向量z。卷积操作可以写为
其中C 是一个稀疏矩阵,其非零元素来自于卷积核w中的元素 。
如果要实现3 维向量z 到5 维向量x 的映射,可以通过仿射矩阵的转置来实现。
从公式(5.42) 和(5.45) 可以看出,从仿射变换的角度来看两个卷积操作z =w ⊗ x 和x = rot180(w) ˜⊕z 也是形式上的转置关系。因此,我们将低维特征映射到高维特征的卷积操作称为转置卷积(Transposed Convolution),也称为反卷积.
和卷积网络中,卷积层的前向计算和反向传播也是一种转置关系。
对一个p 维的向量z,和大小为m的卷积核,如果希望通过卷积操作来映射到高维向量,只需要对向量z 进行两端补零p = m− 1,然后进行卷积,可以得到p + m − 1 维的向量。
m = 3, p = 0 ,s = 1 | m = 3, p = 0 ,s = 2 |
卷积 | 卷积 |
转置卷积 | 转置卷积 |
注:m表示卷积核大小, p 表示零填充大小(zero-padding), s 表示步长(stride)。
微步卷积 我们可以通过增加卷积操作的步长s > 1 来实现对输入特征的降采样操作,大幅降低特征维数。同样,我们也可以通过减少转置卷积的步长s < 1 来实现上采样操作,大幅提高特征维数。
步长s < 1 的转置卷积也称为微步卷积(Fractionally-Strided Convolution)[Long et al., 2015]。为了实现微步卷积,我们可以在输入特征之间插入0 来间接地使得步长变小。
如果卷积操作的步长为s > 1,希望其对应的转置卷积的步长为1/s,需要在输入特征之间插入s − 1 个0 来使得其移动的速度变慢。
以一维转置卷积为例,对一个p 维的向量z,和大小为m的卷积核,通过对向量z 进行两端补零p = m−1,并且在每两个向量元素之间插入s−1 个0,然后进行步长为1 的卷积,可以得到s × (p − 1) + m维的向量。上图给出了一个步长s = 2,无零填充p = 0 的两维卷积和其对应的转置卷积。
空洞卷积
对于一个卷积层,如果希望增加输出单元的感受野,一般可以通过三种方式实现:
(1)增加卷积核的大小;
(2)增加层数;
(3)在卷积之前进行汇聚操作。
空洞卷积(Atrous Convolution),或称为膨胀卷积(Dilated Convolution),是一种不增加参数数量,同时增加输出单元感受野的一种方法。相比原来的正常convolution,dilated convolution 多了一个 hyper-parameter 称之为 dilation rate 指的是kernel的间隔数量(e.g. 正常的 convolution 是 dilatation rate 1)。
Standard Convolution with a 3 x 3 kernel (and padding)
Dilated Convolution with a 3 x 3 kernel and dilation rate 2
空洞卷积通过给卷积核插入“空洞”来变相地增加其大小。如果在卷积核的每两个元素之间插入d − 1 个空洞,卷积核的有效大小为
m′ = m + (m − 1) × (d − 1),
其中d 称为膨胀率(Dilation Rate)。当d = 1 时卷积核为普通的卷积核。
图5.18给出了空洞卷积的示例
m = 3, p = 0, s = 1 | m = 3, p = 0, s = 1 |
---|---|
d=1 | d=2 |
前两种操作会增加参数数量,而第三种会丢失一些信息。
空洞卷积(dilated convolution)理解:https://www.jianshu.com/p/f743bd9041b3
注:m表示卷积核大小,p 表示零填充大小(zero-padding), s 表示步长(stride),d表示膨胀率(dilation)。
卷积神经网络的相关内容到此结束, 望各位读者批评和修正。