参考文献

(带标注,仅供参考)

方法

1. Hidden neuron的稀疏化

一个通用的表示图像恢复任务的神经网络表示为如下: (为什么如此建模作者在Related Works中有描述)

Y=W2F(W1X)\mathbf{Y} = \mathbf{W_2} * \mathcal{F}(\mathbf{W_1} * \mathbf{X})

Notes Description Connections w.r.t image restoration tasks
X\mathbf{X} 输入图片 以图像超分为例,代表输入的低分辨率图片
Y\mathbf{Y} 输出图片 以图像超分为例,代表输出的高分辨率图片
F()\mathcal{F}(\cdot) 神经网络中的非线性激活函数 一种稀疏表示的方式,但文章中认为不是很高效
W1\mathbf{W_1} 卷积核1 线性投射到高维空间的基矩阵(或者说是投射的token,作为基底来表示用token线性组合,即图片本身)
W2\mathbf{W_2} 卷积核2 同上

想要达到稀疏编码的效果,作者认为应当将隐藏层中的神经元分成 kk 组,每个组中有 cc 个神经元/节点(原文称为nodes)。每次只有一组的神经元可以有非零参数(这里bz个人认为已经引入了SNN中Timesteps的概念了)。与之对应,卷积核也可以如此处理,分成k组,即:

W1=[(W11)T,(W12)T,...,(W1k)T]T\mathbf{W_1} = [(W_1^1)^T,(W_1^2)^T, ... ,(W_1^k)^T]^T

W2=[(W21),(W22),...,(W2k)]\mathbf{W_2} = [(W_2^1),(W_2^2), ... ,(W_2^k)]

用于和隐藏层神经元进行计算,只有和非零元素运算的卷积核是有效的。上述表达式就可以写成:

Y=[W21,W22,W2k]F([(W11)T,(W12)T,(W1k)T]TX)=i=1kW2iF(W1iX).\begin{aligned}\mathbf{Y}&=[W_2^1,W_2^2,\ldots W_2^k]\mathcal{F}([(W_1^1)^T,(W_1^2)^T,\ldots(W_1^k)^T]^TX)\\&=\sum_{i=1}^kW_2^i*F(W_1^i*X).\end{aligned}

加入稀疏约束条件,只允许第 ii 组有非零元素,等价于只有第 ii 组数据参与计算:

Y=W2iF(W1iX)Y=W_2^i*F(W_1^i*X)

这个 ii 怎么确定,需要一个特定的选择策略(Adaptive Selection),选出具有最大数值的组别(largest amplitude)。作者团队选择一层MLP作为对输入XX分组的选择策略。

卷积的权值共享特质意味着选择策略也需要考虑在图像空间上的特征,作者受Squeeze-and-excitation(SEBlock)的启发,在X扔进MLP中先进行池化(Pool)操作。组别iij就可以通过下面的式子筛选出:

i=argmaxj[1,k](MLP(Pool(X),j).i=\underset{j\in[1,k]}{\text{argmax}}(\text{MLP}(\text{Pool}(X),j).

2. Relaxed Soft Sparsity

(补充:L0L_0范数(L0L_0-norm)是指向量中非0的元素的个数。)

为了解决argmax()\mathbf{argmax}(\cdot)函数不可微(至于为什么不可微参见此链接),无法塞到神经网络里进行反向传播训练的问题,作者首先尝试了使用Gumbel trick重参数化,但效果不尽人意。

所以就将稀疏约束的条件放宽:用 Softmax()\mathbf{Softmax}(\cdot) 替代 argmax()\mathbf{argmax}(\cdot)。不去计算所有组别索引中最优的kk, 而是去计算每个组别经过 Softmax()\mathbf{Softmax}(\cdot) 处理过后的最大概率。即

β=σ(MLP(Pool(X)))=[β1,β2,,βk](0,1)k\beta = \sigma(\mathrm{MLP}(\mathrm{Pool}(X))) = [\beta_1,\beta_2,\dots,\beta_k] \in \real ^k_{(0,1)}

则输出Y就可以写成:

Y=i=1kβiW2iF(W1iX)Y = \sum_{i=1}^k \beta_i W_2^i * \mathcal{F}(W_1^i * X)

接着作者又开始加假设条件:给定一个Softmax输出,i,s.t.βiβj0,ji\exist i, s.t. \beta_i \gg \beta_j \rightarrow 0, \forall j \neq i。翻译成人话:“对于任意的一组β\beta,在某一组中一定能找到一个βi\beta_i是远大于其他所有组的,且其他组的值近似为0”. 有了这个假设条件,输出就等于(顺便把βi\beta_i项拆开,类似于合并操作的做法)

Y(i=1kβiW2i)F((i=1kβiW1i)X)Y \approx (\sum_{i=1}^{k}\sqrt{\beta_i}W_2^i)*\mathcal{F}((\sum_{i=1}^{k} \sqrt{\beta_i}W_1^i) * X)

作者还指出,两个β\sqrt{\beta}为了取得最好的效果不一定要相等。作为两个独立的参数可以使模型效果更好。

3. Cardinality over sparsity groups

cardinality: n. [数]基, 也指ResNeXT里的分支/分组卷积的个数。