胶囊网络(Capsule Networks)中的动态路由机制与向量输出原理
字数 2043 2025-11-21 00:23:04

胶囊网络(Capsule Networks)中的动态路由机制与向量输出原理

胶囊网络(Capsule Networks)是一种旨在解决传统卷积神经网络(CNN)在空间层次关系建模上不足的新型架构。其核心创新包括胶囊(Capsule) 的向量化输出和动态路由(Dynamic Routing) 机制。下面逐步解析其原理与实现过程。


1. 胶囊的基本概念

传统神经元的标量输出(如ReLU激活)仅能表示特征的强度,而胶囊是一个向量组,其输出向量的模长表示某个实体(如物体部分)存在的概率,方向编码该实体的空间属性(如姿态、纹理等)。例如,一个“猫耳”胶囊的向量方向可能编码耳朵的旋转角度。


2. 动态路由的目的

在多层胶囊中,低层胶囊(如“边缘”“角点”)需要将其输出传递给更合适的高层胶囊(如“眼睛”“鼻子”)。动态路由的作用是自适应地确定低层胶囊与高层胶囊间的连接权重,避免像池化那样丢弃空间信息。


3. 动态路由的步骤

假设低层胶囊 \(i\) 的输出向量为 \(\mathbf{u}_i\),高层胶囊 \(j\) 的输入为 \(\mathbf{s}_j\),动态路由通过以下步骤迭代更新权重:

步骤1:计算预测向量

对每个低层胶囊 \(i\) 和高层胶囊 \(j\),通过变换矩阵 \(\mathbf{W}_{ij}\)\(\mathbf{u}_i\) 映射到高层胶囊的空间:

\[\hat{\mathbf{u}}_{j|i} = \mathbf{W}_{ij} \mathbf{u}_i \]

\(\hat{\mathbf{u}}_{j|i}\) 表示胶囊 \(i\) 对胶囊 \(j\) 的预测。

步骤2:加权求和与压缩

高层胶囊 \(j\) 的输入 \(\mathbf{s}_j\) 是所有低层预测的加权和:

\[\mathbf{s}_j = \sum_i c_{ij} \hat{\mathbf{u}}_{j|i} \]

其中 \(c_{ij}\) 是耦合系数(coupling coefficients),通过路由算法迭代更新,且满足 \(\sum_j c_{ij} = 1\)

步骤3:非线性激活(压缩函数)

胶囊的输出向量 \(\mathbf{v}_j\) 需保持模长在 [0,1] 之间,使用压缩函数(squashing function)

\[\mathbf{v}_j = \frac{\|\mathbf{s}_j\|^2}{1 + \|\mathbf{s}_j\|^2} \frac{\mathbf{s}_j}{\|\mathbf{s}_j\|} \]

该函数保留方向,但将模长压缩到概率范围。

步骤4:迭代更新耦合系数

  1. 初始化对数 \(b_{ij} = 0\)(表示胶囊 \(i\)\(j\) 的关联强度)。
  2. 迭代更新(通常3次)
    • 计算耦合系数:\(c_{ij} = \frac{\exp(b_{ij})}{\sum_k \exp(b_{ik})}\)(Softmax)。
    • 计算高层输出 \(\mathbf{v}_j\)(如上文步骤2-3)。
    • 更新对数:\(b_{ij} \leftarrow b_{ij} + \hat{\mathbf{u}}_{j|i} \cdot \mathbf{v}_j\)(点积衡量预测与输出的一致性)。

4. 动态路由的直观解释

  • 点积反馈:如果低层胶囊的预测 \(\hat{\mathbf{u}}_{j|i}\) 与高层输出 \(\mathbf{v}_j\) 方向一致,点积增大,耦合系数 \(c_{ij}\) 随之提升,强化该连接。
  • 稀疏激活:最终只有少数高层胶囊接收显著权重,符合“部分-整体”的层次关系。

5. 与传统神经网络的区别

特性 传统神经元 胶囊网络
输出形式 标量(强度) 向量(强度+属性)
信息传递 固定连接(如全连接) 动态路由(自适应)
空间信息 池化可能导致丢失 通过向量方向保留

6. 优势与挑战

  • 优势
    • 对 affine 变换(如旋转、缩放)具有等变性(equivariance)。
    • 更擅长处理重叠物体或复杂空间关系。
  • 挑战
    • 动态路由迭代计算成本高。
    • 大规模数据集(如ImageNet)上表现不及CNN。

通过以上步骤,胶囊网络试图模拟视觉系统的层次推理过程,动态路由机制是其实现“共识迭代”的关键。

胶囊网络(Capsule Networks)中的动态路由机制与向量输出原理 胶囊网络(Capsule Networks)是一种旨在解决传统卷积神经网络(CNN)在空间层次关系建模上不足的新型架构。其核心创新包括 胶囊(Capsule) 的向量化输出和 动态路由(Dynamic Routing) 机制。下面逐步解析其原理与实现过程。 1. 胶囊的基本概念 传统神经元的标量输出(如ReLU激活)仅能表示特征的强度,而 胶囊 是一个向量组,其输出向量的模长表示某个实体(如物体部分)存在的概率,方向编码该实体的空间属性(如姿态、纹理等)。例如,一个“猫耳”胶囊的向量方向可能编码耳朵的旋转角度。 2. 动态路由的目的 在多层胶囊中,低层胶囊(如“边缘”“角点”)需要将其输出传递给更合适的高层胶囊(如“眼睛”“鼻子”)。动态路由的作用是 自适应地确定低层胶囊与高层胶囊间的连接权重 ,避免像池化那样丢弃空间信息。 3. 动态路由的步骤 假设低层胶囊 \( i \) 的输出向量为 \( \mathbf{u}_ i \),高层胶囊 \( j \) 的输入为 \( \mathbf{s}_ j \),动态路由通过以下步骤迭代更新权重: 步骤1:计算预测向量 对每个低层胶囊 \( i \) 和高层胶囊 \( j \),通过变换矩阵 \( \mathbf{W} {ij} \) 将 \( \mathbf{u} i \) 映射到高层胶囊的空间: \[ \hat{\mathbf{u}} {j|i} = \mathbf{W} {ij} \mathbf{u} i \] \( \hat{\mathbf{u}} {j|i} \) 表示胶囊 \( i \) 对胶囊 \( j \) 的预测。 步骤2:加权求和与压缩 高层胶囊 \( j \) 的输入 \( \mathbf{s} j \) 是所有低层预测的加权和: \[ \mathbf{s} j = \sum_ i c {ij} \hat{\mathbf{u}} {j|i} \] 其中 \( c_ {ij} \) 是耦合系数(coupling coefficients),通过路由算法迭代更新,且满足 \( \sum_ j c_ {ij} = 1 \)。 步骤3:非线性激活(压缩函数) 胶囊的输出向量 \( \mathbf{v}_ j \) 需保持模长在 [ 0,1] 之间,使用 压缩函数(squashing function) : \[ \mathbf{v}_ j = \frac{\|\mathbf{s}_ j\|^2}{1 + \|\mathbf{s}_ j\|^2} \frac{\mathbf{s}_ j}{\|\mathbf{s}_ j\|} \] 该函数保留方向,但将模长压缩到概率范围。 步骤4:迭代更新耦合系数 初始化对数 \( b_ {ij} = 0 \)(表示胶囊 \( i \) 与 \( j \) 的关联强度)。 迭代更新(通常3次) : 计算耦合系数:\( c_ {ij} = \frac{\exp(b_ {ij})}{\sum_ k \exp(b_ {ik})} \)(Softmax)。 计算高层输出 \( \mathbf{v}_ j \)(如上文步骤2-3)。 更新对数:\( b_ {ij} \leftarrow b_ {ij} + \hat{\mathbf{u}}_ {j|i} \cdot \mathbf{v}_ j \)(点积衡量预测与输出的一致性)。 4. 动态路由的直观解释 点积反馈 :如果低层胶囊的预测 \( \hat{\mathbf{u}}_ {j|i} \) 与高层输出 \( \mathbf{v} j \) 方向一致,点积增大,耦合系数 \( c {ij} \) 随之提升,强化该连接。 稀疏激活 :最终只有少数高层胶囊接收显著权重,符合“部分-整体”的层次关系。 5. 与传统神经网络的区别 | 特性 | 传统神经元 | 胶囊网络 | |--------------|---------------------|---------------------| | 输出形式 | 标量(强度) | 向量(强度+属性) | | 信息传递 | 固定连接(如全连接)| 动态路由(自适应) | | 空间信息 | 池化可能导致丢失 | 通过向量方向保留 | 6. 优势与挑战 优势 : 对 affine 变换(如旋转、缩放)具有等变性(equivariance)。 更擅长处理重叠物体或复杂空间关系。 挑战 : 动态路由迭代计算成本高。 大规模数据集(如ImageNet)上表现不及CNN。 通过以上步骤,胶囊网络试图模拟视觉系统的层次推理过程,动态路由机制是其实现“共识迭代”的关键。