笔记-capsule网络
title: Dynamic Routing Between Capsules, NIPS 2017
author: Geoffrey E. Hinton
url: https://arxiv.org/abs/1710.09829
符号说明
-
capsule节点 \(j\) 的输入向量 \(s_j\), 输出向量 \(v_j\).
\[v_j = {\rm squash}(s_j) := \frac{\|s_j\|^2}{1+\|s_j\|^2} \frac{s_j}{\|s_j\|} \]这里希望 \(\|v_j\|\)表示capsule节点\(j\)表示的实体存在的概率值。
容易推导 \(\|v_j\| \leq 0.5 \|s_j\|\), 因此 squash是压缩算子, 且 \(\|v_j\| < 1\).
-
除网络第一层外, \(s_j\) 的计算公式,如下:
\[s_j = \sum_i c_{ij} \hat u_{j|i}, \quad \hat u_{j|i} = W_{ij} u_i \]这里 \(C\)是coupling系数矩阵,是参数。 \(W_{ij}\) 是权重矩阵。\(\hat u_{j|i}\) 是capsule节点 \(i\) 对\(j\)的预测。
-
coupling系数的计算公式,如下:
\[c_{ij} ={\rm softmax}(b_{i}) = \frac{\exp(b_{ij})} { \sum_k \exp(b_{ik})} \]这里\(b_{ij}\)也是参数, \(b_{i}\)是B矩阵的i行, logits \(b_{ij}\) 理解为capsule节点\(i\)关联\(j\)的一个先验概率。
-
参数更新, 目标是希望 capsule节点 \(j\)的输出\(v_j\) 与 capsule节点 \(i\) 对\(j\)的预测 \(\hat u_{j|i}\) 有一致性。做法是
\[b_{ij} \leftarrow b_{ij} + v_j^T \hat u_{j|i} \] -
根据上面的公式, 得到Routing algorithm 算法,处理了参数\(C,B\)。 剩下 \(W\),以及后面卷积核参数,通过定义损失函数,在tensorflow更新(BP优化)

-
Routing 算法 类似聚类算法的迭代过程.
-
这里squash 算子的作用有待讨论
参考
- https://kexue.fm/archives/4819
- MATRIX CAPSULES WITH EM ROUTING
--- 她说, 她是仙,她不是神

浙公网安备 33010602011771号