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)}\) 前面再添加了一个卷积层用于获得所需要的权重.

????思考

能否像这样通过转化实现在训练的过程中对核间相关性的处理????