胶囊网络是一种神经网络架构,旨在更好地对数据中的分层关系和空间信息进行建模,尤其是在计算机视觉任务中。与传统的卷积神经网络 (CNN) 依赖于标量输出(例如,激活值)和丢弃位置细节的池化层不同,胶囊网络使用胶囊——输出向量的神经元组。这些向量编码了对象存在的可能性(通过向量的长度)及其属性,例如方向或比例(通过向量的方向)。这种方法旨在解决 CNN 中的局限性,例如在处理重叠特征或对象视点变化时遇到的困难。
核心思想围绕动态路由,这是一种机制,允许一层中的胶囊将其输出发送到最适合表示特定实体的高级胶囊。例如,在图像识别中,较低级别的胶囊可能检测到边缘,而较高级别的胶囊可以将这些边缘组合成圆形或正方形等形状。动态路由确保相关特征被赋予更高的权重,从而减少了与 CNN 中的最大池化相比的信息丢失。一个实际的例子是将原始胶囊网络 (CapsNet) 应用于 MNIST 数字分类。该模型使用两个卷积层,后跟一个主胶囊层(输出向量)和一个数字胶囊层,其中每个胶囊对应于一个数字类。路由算法迭代地调整较低级别胶囊如何贡献给较高级别胶囊,从而改善姿势估计和部分-整体关系。
在需要空间感知的情况下,例如检测具有变形或新方向的对象时,胶囊网络具有优势。例如,MNIST 中旋转或倾斜的数字仍然可以被准确识别,因为胶囊直接编码方向。然而,由于动态路由过程,它们在计算上是密集型的,并且与 CNN 相比,采用率有限。探索胶囊网络的开发人员可能会在 TensorFlow 或 PyTorch 等框架中实现自定义层,尽管 Keras 等库本身并不原生支持胶囊。虽然对于医学成像等任务(其中精确的空间关系很重要)很有希望,但它们的实际使用仍然是小众的,通常需要专门的架构和调整。尽管如此,它们代表了一种在深度学习中保持空间层次结构的不同方法。