本文从理论和实验上表明了动态路由机制对胶囊网络的泛化性和对数据仿射变换的健壮性都没有起到太大的作用, 并且提出了两个小改进, 一个是对所有胶囊使用同一个矩阵进行线性变换, 另一个是取消了动态路由, 使用平均池化处理前一层的胶囊.
论文链接: https://arxiv.org/abs/1911.07968v3
相关工作
有很多工作致力于改进路由迭代算法. 例如文献 [27] 将已有的路由算法归纳为一个加权的核密度估计框架, 并且提出了两个使用不同优化策略的快速路由算法. 文献 [6] 提出了一种基于注意力机制的路由算法, 只需要进行快速的前向传递.
除此以外, 一致性系数 a i j a_{ij} aij 不仅可以通过内积来得到, 也可以通过基于正态分布假设 [10, 2] 或距离度量 [16] 来计算.
也有一些改进胶囊计算复杂度的研究工作, 例如文献 [25] 把路由机制改为一种优化问题, [17] 使用两个分支算法来估计路由系数.
本文的工作
首先从理论上分析路由算法在胶囊网络中所起到的作用. 算法流程可以分为以下几步:
s
j
(
t
)
=
∑
i
N
c
i
j
(
t
)
u
^
j
∣
i
v
j
(
t
)
=
g
(
s
j
(
t
)
)
c
i
j
(
t
+
1
)
=
exp
(
b
i
j
+
∑
r
=
1
t
v
j
(
r
)
u
^
j
∣
i
)
∑
k
exp
(
b
i
k
+
∑
r
=
1
t
v
k
(
r
)
u
^
k
∣
i
)
.
\begin{aligned} \boldsymbol{s}_{j}^{(t)} &=\sum_{i}^{N} c_{i j}^{(t)} \hat{\boldsymbol{u}}_{j \mid i} \\ \boldsymbol{v}_{j}^{(t)} &=g\left(\boldsymbol{s}_{j}^{(t)}\right) \\ c_{i j}^{(t+1)} &=\frac{\exp \left(b_{i j}+\sum_{r=1}^{t} \boldsymbol{v}_{j}^{(r)} \hat{\boldsymbol{u}}_{j \mid i}\right)}{\sum_{k} \exp \left(b_{i k}+\sum_{r=1}^{t} \boldsymbol{v}_{k}^{(r)} \hat{\boldsymbol{u}}_{k \mid i}\right)}. \end{aligned}
sj(t)vj(t)cij(t+1)=i∑Ncij(t)u^j∣i=g(sj(t))=∑kexp(bik+∑r=1tvk(r)u^k∣i)exp(bij+∑r=1tvj(r)u^j∣i).
上标
t
t
t 代表迭代次数, 假设总共有
K
K
K 次迭代, 胶囊网络最后的输出可以表示为
y
=
(
∥
v
1
(
K
)
∥
,
⋯
,
∥
v
M
(
K
)
∥
)
.
\boldsymbol{y}=\left(\left\|\boldsymbol{v}_{1}^{(K)}\right\|, \cdots,\left\|\boldsymbol{v}_{M}^{(K)}\right\|\right).
y=(∥∥∥v1(K)∥∥∥,⋯,∥∥∥vM(K)∥∥∥).
即总共有
M
M
M 个类别, 损失函数记为
L
(
y
,
t
)
\mathcal{L}(\boldsymbol{y}, \boldsymbol{t})
L(y,t), 其中
t
\boldsymbol{t}
t 为目标类别. 通过链式法则, 可以得到以下偏导数
∂
L
∂
u
^
m
∣
i
=
∂
L
∂
v
m
(
K
)
∂
v
m
(
K
)
∂
s
m
(
K
)
c
i
m
(
K
)
+
∑
j
=
1
M
∂
L
∂
v
j
(
K
)
∂
v
j
(
K
)
∂
s
j
(
K
)
u
^
j
∣
i
∂
c
i
j
(
K
)
∂
u
^
m
∣
i
.
\frac{\partial \mathcal{L}}{\partial \hat{\boldsymbol{u}}_{m \mid i}}=\frac{\partial \mathcal{L}}{\partial \boldsymbol{v}_{m}^{(K)}} \frac{\partial \boldsymbol{v}_{m}^{(K)}}{\partial \boldsymbol{s}_{m}^{(K)}} c_{i m}^{(K)}+\sum_{j=1}^{M} \frac{\partial \mathcal{L}}{\partial \boldsymbol{v}_{j}^{(K)}} \frac{\partial \boldsymbol{v}_{j}^{(K)}}{\partial \boldsymbol{s}_{j}^{(K)}} \hat{\boldsymbol{u}}_{j \mid i} \frac{\partial c_{i j}^{(K)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}}.
∂u^m∣i∂L=∂vm(K)∂L∂sm(K)∂vm(K)cim(K)+j=1∑M∂vj(K)∂L∂sj(K)∂vj(K)u^j∣i∂u^m∣i∂cij(K).
可以发现, 上式中第二项是主要的计算负担, 对其中的
∂
c
i
j
(
K
)
∂
u
^
m
∣
i
\frac{\partial c_{i j}^{(K)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}}
∂u^m∣i∂cij(K) 展开可得到:
∂
c
i
j
(
K
)
∂
u
^
m
∣
i
=
c
i
j
(
K
)
(
1
−
c
i
j
(
K
)
)
∂
B
i
j
(
K
−
1
)
∂
u
^
m
∣
i
−
∑
k
=
1
&
k
≠
j
M
c
i
j
(
K
)
c
i
k
(
K
)
∂
B
i
k
(
K
−
1
)
∂
u
^
m
∣
i
.
\begin{aligned} \frac{\partial c_{i j}^{(K)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}}=c_{i j}^{(K)}\left(1-c_{i j}^{(K)}\right) & \frac{\partial B_{i j}^{(K-1)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}} \\ & - \sum_{k=1 \& k \neq j}^{M} c_{i j}^{(K)} c_{i k}^{(K)} \frac{\partial B_{i k}^{(K-1)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}}. \end{aligned}
∂u^m∣i∂cij(K)=cij(K)(1−cij(K))∂u^m∣i∂Bij(K−1)−k=1&k=j∑Mcij(K)cik(K)∂u^m∣i∂Bik(K−1).
进一步展开上式到第一次路由, 会发现只有一项梯度不为 0, 并且因为耦合系数
c
∈
(
0
,
1
)
c \in (0,1)
c∈(0,1), 所以经过多次迭代, 最终将有
∂
c
i
j
(
K
)
∂
u
^
m
∣
i
≈
0
\frac{\partial c_{i j}^{(K)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}} \approx 0
∂u^m∣i∂cij(K)≈0.
最后, 作者证明了以下结论(详见附录):
∂
L
∂
u
^
m
∣
i
≈
C
⋅
∂
L
∂
v
m
(
K
)
∂
v
m
(
K
)
∂
s
m
(
K
)
c
i
m
(
K
)
.
\frac{\partial \mathcal{L}}{\partial \hat{\boldsymbol{u}}_{m \mid i}} \approx C \cdot \frac{\partial \mathcal{L}}{\partial \boldsymbol{v}_{m}^{(K)}} \frac{\partial \boldsymbol{v}_{m}^{(K)}}{\partial \boldsymbol{s}_{m}^{(K)}} c_{i m}^{(K)}.
∂u^m∣i∂L≈C⋅∂vm(K)∂L∂sm(K)∂vm(K)cim(K).
其中
C
C
C 是一个常数, 并且可以被整合进优化过程中, 如前面所说的, 这意味着
∂
c
i
j
(
K
)
∂
u
^
m
∣
i
\frac{\partial c_{i j}^{(K)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}}
∂u^m∣i∂cij(K) 可以被忽略, 路由算法可以省略掉.
作者还从实验上表明了理论的结果.
上面是梯度反向传递时分析的结果, 下面作者从正向传递的角度考虑. 整个路由算法可以视为一个函数, 将初级胶囊映射为耦合系数, 即
u
^
→
C
(
K
^
)
=
{
c
i
j
(
K
)
}
\hat{\boldsymbol{u}} \rightarrow \boldsymbol{C}^{(\hat{K})}=\left\{c_{i j}^{(K)}\right\}
u^→C(K^)={cij(K)}. 不失一般性, 现在假设目标类别为第
M
M
M 类, 最优的耦合系数可以通过以下优化问题得到:
C
∗
=
max
{
c
i
j
}
f
(
u
^
)
=
max
{
c
i
j
}
(
∑
i
N
c
i
M
u
^
M
∣
i
g
(
∑
i
c
i
M
u
^
M
∣
i
)
−
∑
j
M
−
1
∑
i
N
c
i
j
u
^
j
∣
i
g
(
∑
i
c
i
j
u
^
j
∣
i
)
)
.
\begin{aligned} \boldsymbol{C}^{*}=\max _{\left\{c_{i j}\right\}} f(\hat{\boldsymbol{u}}) &=\max _{\left\{c_{i j}\right\}}\left(\sum_{i}^{N} c_{i M} \hat{\boldsymbol{u}}_{M \mid i} g\left(\sum_{i} c_{i M} \hat{\boldsymbol{u}}_{M \mid i}\right)\right.\\ &\left.-\sum_{j}^{M-1} \sum_{i}^{N} c_{i j} \hat{\boldsymbol{u}}_{j \mid i} g\left(\sum_{i} c_{i j} \hat{\boldsymbol{u}}_{j \mid i}\right)\right). \end{aligned}
C∗={cij}maxf(u^)={cij}max(i∑NciMu^M∣ig(i∑ciMu^M∣i)−j∑M−1i∑Nciju^j∣ig(i∑ciju^j∣i)).
即最大化通往目标类别胶囊的耦合系数, 最小化通往其它类别胶囊的耦合系数. 有许多针对改进路由算法的研究工作, 它们的不同点也仅仅在于用不同的方法来估计
C
∗
\boldsymbol{C}^{*}
C∗.
最优化的
s
j
∗
\boldsymbol{s}_{j}^{*}
sj∗ 不需要耦合系数也能够通过学习得到:
s
j
∗
=
∑
i
N
c
i
j
∗
u
^
j
∣
i
=
∑
i
N
c
i
j
∗
W
i
j
∗
u
i
=
∑
i
N
W
i
j
′
u
i
\boldsymbol{s}_{j}^{*}=\sum_{i}^{N} c_{i j}^{*} \hat{\boldsymbol{u}}_{j \mid i}=\sum_{i}^{N} c_{i j}^{*} \boldsymbol{W}_{i j}^{*} \boldsymbol{u}_{i}=\sum_{i}^{N} \boldsymbol{W}_{i j}^{\prime} \boldsymbol{u}_{i}
sj∗=i∑Ncij∗u^j∣i=i∑Ncij∗Wij∗ui=i∑NWij′ui
也就是说, 耦合系数可以通过变换矩阵
W
\boldsymbol{W}
W 来隐式地学习到.
接下来作者分析了胶囊网络对于仿射变换具有较差的健壮性.
u
^
j
∣
i
=
W
i
j
u
i
=
t
j
∣
i
(
u
i
)
=
t
j
∣
i
(
p
i
(
x
i
)
)
.
\hat{\boldsymbol{u}}_{j \mid i}=\boldsymbol{W}_{i j} \boldsymbol{u}_{i}=t_{j \mid i}\left(\boldsymbol{u}_{i}\right)=t_{j \mid i}\left(p_{i}\left(\boldsymbol{x}_{i}\right)\right).
u^j∣i=Wijui=tj∣i(ui)=tj∣i(pi(xi)).
x
i
\boldsymbol{x}_{i}
xi 是输入样本, 函数
p
p
p 代表卷积的过程, 输出为胶囊,
t
j
∣
i
t_{j \mid i}
tj∣i 是对胶囊的线性变换. 作者认为, 线性变换矩阵
W
\boldsymbol{W}
W 只能对存在于
x
\boldsymbol{x}
x 上的实体做出有意义的变换, 设
t
j
∣
i
(
⋅
)
t_{j \mid i}(\cdot)
tj∣i(⋅) 的输入域为
U
i
\mathbb{U}_{i}
Ui, 对于经过仿射变换的样本
x
′
\boldsymbol{x^{\prime}}
x′ ,
p
(
x
′
)
\boldsymbol{p(x^{\prime})}
p(x′) 不在
U
i
\mathbb{U}_{i}
Ui 中, 因而
W
\boldsymbol{W}
W 无法做出有意义的线性变换.
于是作者做出了一个非常简单但有效的解决方法, 那就是对所有的胶囊使同一个线性变换. 即一个共享的线性变换 W \boldsymbol{W} W. 这样一来就可以进行有意义的变换, 因为这一个矩阵学习了从所有低层次胶囊到高层次胶囊的变换.
补充
补充材料 (3) 式的推导
原文结果:
∂
c
i
j
(
K
)
∂
u
^
m
∣
i
=
c
i
j
(
K
)
(
1
−
c
i
j
(
K
)
)
∂
B
i
j
(
K
−
1
)
∂
u
^
m
∣
i
+
∑
k
=
1
&
k
≠
j
M
c
i
j
(
K
)
c
i
k
(
K
)
∂
B
i
j
(
K
−
1
)
∂
u
^
m
∣
i
\begin{aligned} \frac{\partial c_{i j}^{(K)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}}=c_{i j}^{(K)}\left(1-c_{i j}^{(K)}\right) & \frac{\partial B_{i j}^{(K-1)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}} \\ &+\sum_{k=1 \& k \neq j}^{M} c_{i j}^{(K)} c_{i k}^{(K)} \frac{\partial B_{i j}^{(K-1)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}} \end{aligned}
∂u^m∣i∂cij(K)=cij(K)(1−cij(K))∂u^m∣i∂Bij(K−1)+k=1&k=j∑Mcij(K)cik(K)∂u^m∣i∂Bij(K−1)
原文上式中有两处错误, 应改为
∂
c
i
j
(
K
)
∂
u
^
m
∣
i
=
c
i
j
(
K
)
(
1
−
c
i
j
(
K
)
)
∂
B
i
j
(
K
−
1
)
∂
u
^
m
∣
i
−
∑
k
=
1
&
k
≠
j
M
c
i
j
(
K
)
c
i
k
(
K
)
∂
B
i
k
(
K
−
1
)
∂
u
^
m
∣
i
\begin{aligned} \frac{\partial c_{i j}^{(K)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}}=c_{i j}^{(K)}\left(1-c_{i j}^{(K)}\right) & \frac{\partial B_{i j}^{(K-1)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}} \\ & - \sum_{k=1 \& k \neq j}^{M} c_{i j}^{(K)} c_{i k}^{(K)} \frac{\partial B_{i k}^{(K-1)}}{\partial \hat{\boldsymbol{u}}_{m \mid i}} \end{aligned}
∂u^m∣i∂cij(K)=cij(K)(1−cij(K))∂u^m∣i∂Bij(K−1)−k=1&k=j∑Mcij(K)cik(K)∂u^m∣i∂Bik(K−1)