设计理由:
卷积通常用于提取输入特征或聚合特征。同一层的卷积核会被普适地应用于所有的输入模块中,如果希望更多地提取到特征或者更好地提取需要地特征,就需要设计更大更宽的卷积核或者更针对性地设计卷积核(例如对一个input的不同部分使用不同的kernal参数)。众所周知,使用更大更宽的卷积核会显著增加计算量,所以更针对性地设计卷积核maybe a better way.
条件卷积的方法:
条件卷积是为了更针对性地设计卷积核而提出的方法。简单地说,就是根据超参数k,设计k个不同的卷积核,实际使用的卷积核是这k个卷积核的加权求和的结果。这样相对于普通卷积核每次更新参数需要更新所有channel的所有pos,条件卷积核只需要更新所有基本卷积核(提前设计,基本卷积核越多粒度越高)的加权权重。从而实现了一定的卷积核动态更新,同时显著减少了计算量!
问题:
- 条件卷积是计算一张图上的不同部位时就进行一次更新,还是一层更新一次?如果是一层更新一次其实和普通卷积也没有区别?
原文中说了,如果权重不更新,相当于每层都使用的是静态卷积核!所以是针对一层一层的。
条件卷积相对于普通卷积的优势体现在,普通卷积是更新卷积核上所有位置(不同pos,不同channel)的参数,参数量很大很大;而条件卷积是设计很多不同基本卷积核(类似于基本向量),通过基本卷积核的加权合成一个最终的卷积核,所以如果想实现更多的卷积核粒度,可以设计更多的基本卷积核,不过同时也需要更多的参数量(一个卷积核需要一个参数,而普通卷积核一个卷积核需要所有pos,所有channel都要参数,所以计算量还是明显小于普通卷积核)。