胶囊网络(Capsule Network)的动态路由机制与特征编码原理
字数 1938 2025-11-02 10:11:21
胶囊网络(Capsule Network)的动态路由机制与特征编码原理
题目描述
胶囊网络是一种旨在克服传统卷积神经网络(CNN)局限性(如对空间层次关系建模不足)的新型深度学习架构。其核心创新在于用“胶囊”替代神经元,每个胶囊是一组神经元,共同学习检测特定实体(如物体部分)的存在性及其实例化参数(如姿态、纹理)。关键挑战在于:如何让高层胶囊只激活与输入特征一致的底层胶囊?动态路由机制通过迭代协议解决了此问题,确保部分-整体关系得到显式建模。本题将深入解析动态路由的原理、计算步骤及其如何实现鲁棒的特征编码。
解题过程
1. 胶囊的基本概念
- 胶囊 vs 神经元:传统神经元输出标量(激活值),胶囊输出向量。向量的模长表示实体存在的概率,方向编码实例化参数(如旋转、缩放)。
- 层级结构:底层胶囊(如“边缘胶囊”)检测局部特征,高层胶囊(如“物体胶囊”)整合底层信息,形成整体表示。
2. 动态路由的动机
- CNN的缺陷:池化操作丢弃空间信息,无法明确建模部分与整体的关系(如“眼睛”和“鼻子”的相对位置)。
- 路由目标:底层胶囊的输出应被正确分配给能解释其存在的高层胶囊。例如,“猫脸胶囊”应优先接收来自“猫眼胶囊”“猫鼻胶囊”的输入,而非“狗耳胶囊”。
3. 动态路由的步骤
假设底层胶囊 \(i\) 的输出向量为 \(\mathbf{u}_i\),高层胶囊 \(j\) 的输入为 \(\mathbf{s}_j\),路由过程如下:
步骤1:变换底层输出
- 通过权重矩阵 \(\mathbf{W}_{ij}\) 将 \(\mathbf{u}_i\) 变换为“预测向量” \(\hat{\mathbf{u}}_{j|i} = \mathbf{W}_{ij} \mathbf{u}_i\),表示胶囊 \(i\) 对胶囊 \(j\) 的预测。权重 \(\mathbf{W}_{ij}\) 在训练中学习,用于对齐不同胶囊的坐标系。
步骤2:加权求和与耦合系数
- 高层胶囊 \(j\) 的输入 \(\mathbf{s}_j\) 是所有底层预测的加权和:
\[ \mathbf{s}_j = \sum_i c_{ij} \hat{\mathbf{u}}_{j|i} \]
- 耦合系数 \(c_{ij}\) 表示胶囊 \(i\) 与胶囊 \(j\) 的关联强度,满足 \(\sum_j c_{ij} = 1\)。初始时 \(c_{ij}\) 未知,通过动态路由迭代更新。
步骤3:迭代更新耦合系数
- 初始化:设置初始对数 \(b_{ij} = 0\),通过 softmax 计算 \(c_{ij} = \frac{\exp(b_{ij})}{\sum_k \exp(b_{ik})}\)。
- 迭代更新(通常进行 3 轮):
- 计算高层胶囊输出 \(\mathbf{v}_j = \frac{\|\mathbf{s}_j\|^2}{1 + \|\mathbf{s}_j\|^2} \frac{\mathbf{s}_j}{\|\mathbf{s}_j\|}\)(使用 squashing 函数压缩向量模长至 [0,1))。
- 协议更新:若 \(\hat{\mathbf{u}}_{j|i}\) 与 \(\mathbf{v}_j\) 方向一致(点积大),则增加关联性:
\[ b_{ij} \leftarrow b_{ij} + \hat{\mathbf{u}}_{j|i} \cdot \mathbf{v}_j \]
- 重新计算 \(c_{ij}\) 并更新 \(\mathbf{s}_j\)。
- 终止条件:迭代后,\(c_{ij}\) 收敛,高层胶囊仅接收与其一致的输入。
4. 特征编码原理
- 向量模长作为概率:squashing 函数确保 \(\|\mathbf{v}_j\|\) 表示实体 \(j\) 存在的概率。
- 姿态编码:向量方向编码实例参数,例如若 \(\mathbf{v}_j\) 旋转 20°,对应物体姿态变化 20°。
- 等变性:输入变化(如物体平移)会导致胶囊输出方向变化,但模长(存在性)不变,实现等变性而非不变性。
5. 优势与局限性
- 优势:显式建模部分-整体关系,对仿射变换更鲁棒,减少训练数据需求。
- 局限性:计算成本高,动态路由需迭代;对复杂场景的扩展性仍在探索中。
通过动态路由,胶囊网络实现了基于共识的特征聚合,避免了 CNN 的“盲目”池化,为空间层次推理提供了新范式。