胶囊网络(Capsule Networks)中的动态路由机制与向量输出原理
字数 1275 2025-11-26 22:31:03
胶囊网络(Capsule Networks)中的动态路由机制与向量输出原理
描述
胶囊网络是一种旨在克服传统卷积神经网络在空间层次关系建模上局限性的新型神经网络结构。其核心创新在于用"胶囊"替代神经元,每个胶囊输出一个向量(而非标量),其中向量的方向表示实体特征,模长表示实体存在的概率。动态路由机制是胶囊网络的关键组成部分,用于在胶囊层之间传递信息并达成共识,确保高级胶囊只激活与低级胶囊特征一致的组合。
知识点详解
1. 胶囊的基本概念
- 传统神经元输出标量,表示特征激活强度
- 胶囊输出向量:
- 向量方向:编码实例化参数(如姿态、纹理、变形等)
- 向量模长:表示实体存在的概率(范围[0,1])
- 优势:明确分离"存在性"和"属性",保留空间层次信息
2. 动态路由机制原理
动态路由是胶囊网络中层间通信协议,通过迭代过程使高级胶囊捕获低级胶囊的一致性模式。
步骤1:底层胶囊输出预处理
- 设底层胶囊输出向量为\(u_i\)(i=1,...,n)
- 对每个高级胶囊j,计算预测向量:
\(\hat{u}_{j|i} = W_{ij}u_i\)
其中\(W_{ij}\)是可学习的变换矩阵,将底层胶囊i的空间视图转换到高级胶囊j的视角
步骤2:加权求和与耦合系数
- 高级胶囊j的输入向量\(s_j\)由所有底层胶囊的预测加权求和:
\(s_j = \sum_i c_{ij}\hat{u}_{j|i}\) - 耦合系数\(c_{ij}\)通过动态路由的softmax计算:
\(c_{ij} = \frac{\exp(b_{ij})}{\sum_k \exp(b_{ik})}\)
初始\(b_{ij}=0\),在路由迭代中更新
步骤3:非线性激活与压缩函数
- 使用squashing函数确保输出向量模长在[0,1]:
\(v_j = \frac{\|s_j\|^2}{1+\|s_j\|^2}\frac{s_j}{\|s_j\|}\) - 该函数保留方向,压缩模长到单位区间
步骤4:路由迭代更新
- 通过测量\(v_j\)与\(\hat{u}_{j|i}\)的一致性更新耦合系数:
\(b_{ij} \leftarrow b_{ij} + \hat{u}_{j|i} \cdot v_j\) - 内积越大说明一致性越高,增加该路径的权重
- 通常迭代3-5次即可收敛
3. 向量输出的优势
- 等变性:输入变化导致输出向量相应变化(如物体旋转)
- 部分-整体关系建模:通过矩阵\(W_{ij}\)显式建模空间变换
- 抗仿射变换:胶囊学习的是变换不变性特征
4. 路由过程示例
假设识别"人脸"任务:
- 底层胶囊检测"眼睛"、"鼻子"、"嘴"
- 动态路由确保只有当这些器官以合理空间关系出现时,"人脸"胶囊才激活
- 如果"眼睛"出现在下巴位置,相应预测向量与其他人脸部件不一致,路由权重降低
总结
动态路由机制通过迭代协商过程,实现了胶囊网络对空间层次关系的显式建模。向量输出编码了丰富的实例化参数,使模型具备更强的几何理解能力和等变特性,为计算机视觉任务提供了新的解决思路。