最近读了一篇试图解释深度学习编码机制的文章,文章全名:Global Pooling, More than Meets the Eye: Position Information is Encoded Channel-Wise in CNNs。这篇文章证明全局池化之后空间信息是被保存在通道维度的,并且和通道顺序直接相关。文中用了一套严密且巧妙的实验证实了上述观点,这种实验设计逻辑值得借鉴。文章主要回答了如下问题:
1.全局池化后空间信息还存在吗?
2.如果存在,是被保存在哪里?以什么形式保存?
为回答上述问题,文中设计了四个具体实验,分别是:
1.通过GAPNet来证明GAP之后能保存位置信息
如图1左侧,GAPNet模型的输入是h*w*3的图片,将图片Input分成9块,仅保留一块的像素值,其余像素值置零,输入到f_θ得到z,再经过1*1卷积得到z',此时z'的通道维度为9,通过GAP之后得到一个9维向量,最大值索引代表图片Input中保留像素值的那部分的位置。然后利用大量数据进行训练,假设GAP之后已经没有位置信息了,那GAPNet是铁定训练不出来的。但结果非常amazing啊,不仅练出来了,精度还达到了100%!这说明GAP之后空间信息确确实实被保留了。文中还简要提及,除了位置预测模型以外,还做了目标识别(其实说的是图像分类)的实验,发现这次GAPNet模型和PermuteNet模型的精度差别减少到了10%,比位置模型两者的精度差异少了12%。目标识别任务对和位置模型相比,对绝对位置的要求降低,只要特定目标在图里就行。对位置信息需求小的任务,两者结果差异小(GAP产生的影响小),对位置信息需求大的任务,两者结果差异大(GAP产生的影响大),这也一定程度上佐证了空间信息在GAP后仍旧被保存了下来。图像识别任务和前面的预测位置相比,模型对位置不敏感,两种模型的差别就比较小,这揭示了CNN用于位置和语义表示的编码类型之间的一个有趣的二分法:位置信息主要依赖于信道的顺序,而语义信息则不依赖
那么问题来了,空间维度都压缩没了,三维生物都被压缩到二维了,你这空间信息保存哪去了?为了回答这个问题,文章给出了第二个关键实验。
图1 GAPNet和PermuteNet
2.通过PermuteNet证明GAP后空间信息保存在通道维度上,且和通道顺序直接相关
如图1右侧,一直到f_θ产生h'*w'*c都和GAPNet一模一样,但后面开始有了差别。PermuteNet先经过GAP得到1*1*c的(注意不是1*1*9)向量,然后随机打乱通道顺序,再经过全连接层得到1*1*9的向量,同样选最大值索引作为保留图像的位置索引,结果模型精度直降22%,这说明啥?说明通道维度顺序一变,模型就提取不到位置信息了,换句话说,位置信息就通过通道顺序进行编码!
前面已经证明,位置信息可以在通道中被编码,那么下一个问题出现:有多少位置信息可以从没有明确地进行位置分类训练的预训练模型中解码?就是说一般CNN网络(预测类别不是预测位置的网络模型)能保留多少位置信息?为回答这个问题,文章给出第三个实验。
领取专属 10元无门槛券
私享最新 技术干货