胶囊网络(Capsule Networks)的动态路由机制与向量输出原理
胶囊网络(Capsule Networks)是一种旨在解决传统卷积神经网络(CNN)在空间层次关系建模上不足的新型架构。其核心创新包括胶囊(Capsule) 的向量输出形式与动态路由(Dynamic Routing) 机制,下面逐步展开讲解。
1. 胶囊与向量输出的基本概念
传统CNN的局限性:
- CNN的神经元输出为标量,通过激活函数表示特征是否存在,但无法明确表征特征的姿态(如位置、方向、缩放等)。
- 池化操作会丢失空间信息(例如,检测到“眼睛”和“嘴巴”但无法确认它们的相对位置)。
胶囊的改进:
- 胶囊是一组神经元的集合,其输出是一个向量(而非标量)。
- 向量的模长表示某个实体(如物体部分)存在的概率,向量的方向编码该实体的姿态参数(如旋转、平移)。
- 例如,检测“人脸”的胶囊可能接收来自“眼睛”“鼻子”“嘴巴”胶囊的向量,并通过动态路由确认这些部分的空间一致性。
2. 动态路由机制的原理
动态路由是胶囊之间的自下而上的信息传递方式,用于决定低层胶囊的输出应传递到哪个高层胶囊。其核心思想是:通过迭代协议一致(Agreement)来更新权重,使高层胶囊更可能接收空间一致的低层特征。
步骤分解:
- 线性变换(Linear Transformation):
设低层胶囊输出向量为 \(\mathbf{u}_i\)(例如“眼睛”胶囊),通过权重矩阵 \(\mathbf{W}_{ij}\) 将其映射到高层胶囊 \(j\) 的空间:
\[ \hat{\mathbf{u}}_{j|i} = \mathbf{W}_{ij} \mathbf{u}_i \]
这一步相当于对低层特征进行视角变换,使其与高层胶囊的视角对齐。
- 加权求和与挤压函数(Weighted Sum and Squashing):
高层胶囊的输入是所有低层胶囊预测向量的加权和:
\[ \mathbf{s}_j = \sum_i c_{ij} \hat{\mathbf{u}}_{j|i} \]
其中 \(c_{ij}\) 是耦合系数(Coupling Coefficients),通过动态路由迭代更新。
- 使用挤压函数(Squashing Function) 将输出向量的模长压缩到 [0,1) 区间,同时保持方向不变:
\[ \mathbf{v}_j = \frac{\|\mathbf{s}_j\|^2}{1 + \|\mathbf{s}_j\|^2} \frac{\mathbf{s}_j}{\|\mathbf{s}_j\|} \]
- 更新耦合系数(动态路由的核心):
- 初始化:所有 \(c_{ij}\) 初始为相等值(如 \(c_{ij} = 0\))。
- 迭代更新(通常进行 3-5 次):
- 计算高层胶囊输出 \(\mathbf{v}_j\) 与低层预测向量 \(\hat{\mathbf{u}}_{j|i}\) 的点积(衡量一致性):
\[ b_{ij} \leftarrow b_{ij} + \mathbf{v}_j \cdot \hat{\mathbf{u}}_{j|i} \]
- 通过 Softmax 更新耦合系数,使一致性高的低层胶囊获得更高权重:
\[ c_{ij} = \frac{\exp(b_{ij})}{\sum_k \exp(b_{ik})} \]
- 最终,高层胶囊的输出 \(\mathbf{v}_j\) 会聚焦于空间一致的低层特征。
3. 动态路由的意义与优势
- 部分-整体关系建模:通过向量输出与路由机制,胶囊网络能明确建模对象各部分之间的几何关系(如“眼睛在鼻子左侧”)。
- 等变性(Equivariance):当输入图像中的物体发生变换(如平移),胶囊输出的向量方向会相应变化,但模长(存在概率)保持不变。
- 减少需要的数据量:理论上对空间变换更鲁棒,但实际训练仍面临计算复杂度高的挑战。
4. 实例说明
假设低层胶囊检测到“眼睛”向量 \(\mathbf{u}_1\) 和“嘴巴”向量 \(\mathbf{u}_2\),高层胶囊需要判断是否形成“人脸”:
- 通过 \(\mathbf{W}_{ij}\) 将 \(\mathbf{u}_1, \mathbf{u}_2\) 映射到人脸空间,得到 \(\hat{\mathbf{u}}_{j|1}, \hat{\mathbf{u}}_{j|2}\)。
- 若两个向量的方向一致(例如眼睛在嘴巴上方且距离合理),点积 \(\mathbf{v}_j \cdot \hat{\mathbf{u}}_{j|i}\) 较大,路由权重 \(c_{ij}\) 增加,高层胶囊激活。
- 若方向不一致(如眼睛和嘴巴颠倒),则权重降低,高层胶囊不激活。
5. 局限性
- 计算成本高:动态路由的迭代过程比 CNN 的前向传播慢。
- 难以扩展至大型数据集:目前主流应用仍限于小规模数据集(如 MNIST、SmallNORB)。
通过以上步骤,动态路由机制实现了胶囊间基于一致性的自组织信息流动,为建模层次化空间关系提供了新思路。