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 = { m 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} ={ m 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