LabDesign_BSConv
前言
提出利用秩来判断核间的相关性,减少网络结构中卷积核的数量,进而减少网络的计算量,从而达到轻量化网络的目的。
一、实验设计
验证通过处理核间相关性能否提升网络质量?
1. 预训练模型
针对一个小型的项目, 例如对用于手写字体的识别的卷积网络进行训练。提取出网络中已经训练好的卷积核。
2. 算法处理
通过算法(秩或降维)判断卷积核之间的相关性,然后对卷积核进行取舍
3. 搭建新网络
利用筛选出的卷积核结合 GhostNet 的结构对之前的小型项目进行测试
4. 问题
这样就只针对于某个特有任务进行了一个预处理的步骤,但这样就不能作为通用网络适用于其他情况
二、BSConv
1. 核心思想
之前的 GhostNet 考虑的是核间的相似性, BSConv 考虑的是核内的相似性。
在常规卷积中, 每个卷积层对输入张量 \(U \in R^{M \times Y \times X}\) 进行变化得到输出张量 \(V \in R^{N \times Y \times X}\) ,相应的卷积核 \(F^{(1)}\) ... \(F^{(N)}\), 每个卷积核的尺寸为 \(M \times K \times K\)。相应的公式可以描述为
\[ V_{n,:,:} = U * F^{(n)}, n \in \{1, ... , N\} \]
对 BSConv 而言, 它的卷积核是下面这样
\[ F_{m,:,:}^{(n)} = w_{n,m} \cdot B^{(n)}, m \in \{1, ... , M\}, n \in \{1, ... , N\} \]
其中权重 \(w_{n,m}\) 就是需要通过学习来获取的了
2. 实际处理
在训练的过程中,其实光用上述式子处理是会出现问题的。例如反向传播时,权重应该怎么变化?(利用权重推导出卷积核进行卷积核更新,这个就和初始卷积核的操作大同小异,只是多了一个权重作为中间变量)
\[ V_{n,:,:} = U * F^{(n)} = \sum_{m=1}^{M}(U_{m,:,:} * F_{m,:,:}^{(n)}) \]
\[ V_{n,:,:} = \sum_{m=1}^{M}(U_{m,:,:} * (w_{n,m} \cdot B^{(n)}) ) \]
\[ V_{n,:,:} = (\sum_{m=1}^{M}(U_{m,:,:} \cdot w_{n,m}) * B^{(n)}) \]
\[ V_{n,:,:}^{'} = U * \tilde{w}_n \]
\[ V_{n,:,:} = V_{n,:,:}^{'} * B^{n} \]
通俗一点就是, 这个转换在单通道卷积层 \(B^{(n)}\) 前面再添加了一个卷积层用于获得所需要的权重.
????思考
能否像这样通过转化实现在训练的过程中对核间相关性的处理????