胶囊网络(Capsule Networks)的动态路由机制与向量输出原理
字数 2191 2025-11-11 01:56:12

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

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


1. 胶囊与向量输出的基本概念

传统CNN的局限性

  • CNN的神经元输出为标量,通过激活函数表示特征是否存在,但无法明确表征特征的姿态(如位置、方向、缩放等)。
  • 池化操作会丢失空间信息(例如,检测到“眼睛”和“嘴巴”但无法确认它们的相对位置)。

胶囊的改进

  • 胶囊是一组神经元的集合,其输出是一个向量(而非标量)。
  • 向量的模长表示某个实体(如物体部分)存在的概率,向量的方向编码该实体的姿态参数(如旋转、平移)。
  • 例如,检测“人脸”的胶囊可能接收来自“眼睛”“鼻子”“嘴巴”胶囊的向量,并通过动态路由确认这些部分的空间一致性。

2. 动态路由机制的原理

动态路由是胶囊之间的自下而上的信息传递方式,用于决定低层胶囊的输出应传递到哪个高层胶囊。其核心思想是:通过迭代协议一致(Agreement)来更新权重,使高层胶囊更可能接收空间一致的低层特征。

步骤分解

  1. 线性变换(Linear Transformation)
    设低层胶囊输出向量为 \(\mathbf{u}_i\)(例如“眼睛”胶囊),通过权重矩阵 \(\mathbf{W}_{ij}\) 将其映射到高层胶囊 \(j\) 的空间:

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

这一步相当于对低层特征进行视角变换,使其与高层胶囊的视角对齐。

  1. 加权求和与挤压函数(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\|} \]

  1. 更新耦合系数(动态路由的核心)
    • 初始化:所有 \(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\),高层胶囊需要判断是否形成“人脸”:

  1. 通过 \(\mathbf{W}_{ij}\)\(\mathbf{u}_1, \mathbf{u}_2\) 映射到人脸空间,得到 \(\hat{\mathbf{u}}_{j|1}, \hat{\mathbf{u}}_{j|2}\)
  2. 若两个向量的方向一致(例如眼睛在嘴巴上方且距离合理),点积 \(\mathbf{v}_j \cdot \hat{\mathbf{u}}_{j|i}\) 较大,路由权重 \(c_{ij}\) 增加,高层胶囊激活。
  3. 若方向不一致(如眼睛和嘴巴颠倒),则权重降低,高层胶囊不激活。

5. 局限性

  • 计算成本高:动态路由的迭代过程比 CNN 的前向传播慢。
  • 难以扩展至大型数据集:目前主流应用仍限于小规模数据集(如 MNIST、SmallNORB)。

通过以上步骤,动态路由机制实现了胶囊间基于一致性的自组织信息流动,为建模层次化空间关系提供了新思路。

胶囊网络(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)。 通过以上步骤,动态路由机制实现了胶囊间基于一致性的自组织信息流动,为建模层次化空间关系提供了新思路。