『Transformer』为什么1*1卷积可以替代全连接层?

起源

来自Transformer

事情起源于同学的一个疑惑,他在阅读Transformer论文时,看到作者在前馈神经网络部分写有这么一句话:

Another way of describing this is as two convolutions with kernel size 1.

于是他向我问道“为什么全连接层可以用1*1卷积层代替呢?”

我对卷积的理解还不够深入,无法被问到,所以我立即开始寻找资源来解决这个问题。

以下是对与此问题相关的内容的分析,以供审阅。

解决

按照我之前的理解,『Transformer』为什么1*1卷积可以替代全连接层?『Transformer』为什么1*1卷积可以替代全连接层?的一张原图的卷积操作是把原图的每个元素乘以一个卷积核参数,得到『Transformer』为什么1*1卷积可以替代全连接层?的特征图,那么这不是直接逐元素乘以常数 嘿!怎么可能更换全连接? !

造成这种误解的原因是,我们通常所说的『Transformer』为什么1*1卷积可以替代全连接层?卷积实际上省略了一个重要的东西,它实际上应该是『Transformer』为什么1*1卷积可以替代全连接层?卷积。

更广泛来说,当我们对K个通道的输入进行『Transformer』为什么1*1卷积可以替代全连接层?卷积时,我们需要一个shape为『Transformer』为什么1*1卷积可以替代全连接层?的kernel。

Kernel示意图

举个例子,对于一张『Transformer』为什么1*1卷积可以替代全连接层?的图像,它拥有RGB三个通道,我们想要执行『Transformer』为什么1*1卷积可以替代全连接层?的卷积操作,那么我们kernel的shape应为『Transformer』为什么1*1卷积可以替代全连接层?

假设卷积核『Transformer』为什么1*1卷积可以替代全连接层?,相同空间位置的不同通道的输入从上到下是『Transformer』为什么1*1卷积可以替代全连接层?,那么输出特征图上对应的位置应该是『Transformer』为什么1*1卷积可以替代全连接层?

所以说,『Transformer』为什么1*1卷积可以替代全连接层?卷积操作是在每个像素位置上,不同feature channels的线性叠加,其目的是保留原有图像平面结构的基础上,调整通道数(即depth),从而完成升维或降维的功能。

1*1卷积 不同通道的线性叠加

明白了这一点,就可以理解为什么『Transformer』为什么1*1卷积可以替代全连接层?卷积操作就相当于一个全连接层了。

依旧举例说明,假如现在有一层全连接网络,输入层维度为3,输出层维度为2,具体参数如下:

『Transformer』为什么1*1卷积可以替代全连接层?

『Transformer』为什么1*1卷积可以替代全连接层?

然后我们可以知道网络『Transformer』为什么1*1卷积可以替代全连接层?,其中『Transformer』为什么1*1卷积可以替代全连接层?

此时我们将维度为3的输入展开为『Transformer』为什么1*1卷积可以替代全连接层?,同样地将维度为2的输出展开为『Transformer』为什么1*1卷积可以替代全连接层?,从卷积的角度可以看成是输入是空间维度为『Transformer』为什么1*1卷积可以替代全连接层?的3个通道的特征图,输出是空间维度为『Transformer』为什么1*1卷积可以替代全连接层?的2个通道的特征图。

对于空间维度『Transformer』为什么1*1卷积可以替代全连接层?的3通道输入,我们需要用『Transformer』为什么1*1卷积可以替代全连接层?的kernel,计算得到『Transformer』为什么1*1卷积可以替代全连接层?的输出特征图,那么使用两个这样的kernel便得到了两个输出通道,即『Transformer』为什么1*1卷积可以替代全连接层?

假设每一个kernel的卷积核参数如下所示:

『Transformer』为什么1*1卷积可以替代全连接层?

可以在『Transformer』为什么1*1卷积可以替代全连接层?卷积操作的基础上添加ReLU函数,那么有如下公式:

『Transformer』为什么1*1卷积可以替代全连接层?,其中『Transformer』为什么1*1卷积可以替代全连接层?

此时『Transformer』为什么1*1卷积可以替代全连接层?卷积运算的公式与全连接层是一致的,这也是为什么『Transformer』为什么1*1卷积可以替代全连接层?卷积运算可以等效为全连接层的原因。

最后回到Transformer上去,如何用两个『Transformer』为什么1*1卷积可以替代全连接层?卷积代替MLP呢?假设『Transformer』为什么1*1卷积可以替代全连接层?,序列长度为『Transformer』为什么1*1卷积可以替代全连接层?,那么可以将每个token看作『Transformer』为什么1*1卷积可以替代全连接层?,并将其竖起来,使用shape为『Transformer』为什么1*1卷积可以替代全连接层?的kernel进行卷积,并使用『Transformer』为什么1*1卷积可以替代全连接层?个这样的kernel,便可得到『Transformer』为什么1*1卷积可以替代全连接层?维度的张量,维度扩大四倍,等价于第一层全连接。

同理再用『Transformer』为什么1*1卷积可以替代全连接层?个shape为『Transformer』为什么1*1卷积可以替代全连接层?的kernel便可得到『Transformer』为什么1*1卷积可以替代全连接层?的输出,回到原维度,等价于第二层全连接。

参考

解惑的主要参考资料

How are 1×1 convolutions the same as a fully connected layer?

辅助参考

卷积神经网络中用1*1 卷积有什么作用或者好处呢?

MLP conv layers

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
上一篇 2022年4月4日 下午3:03
下一篇 2022年4月4日 下午3:11

相关推荐