<论文>什么是胶囊神经网络?

一、摘要

本文介绍2017年的论文《Dynamic Routing Between Capsules》,论文介绍了胶囊之间的动态路由机制,至此胶囊神经网络才算是完整地被提出来(此前几年Hinton老爷子有给出过概念,但是没有给出官方的实现)。

译文:

胶囊是一组神经元,其活动向量表示特定类型实体(如物体或物体部分)的实例化参数。我们使用活动向量的长度来表示实体存在的概率,并使用其方向来表示实例化参数。一个层级的活跃胶囊通过变换矩阵对更高层级胶囊的实例化参数进行预测。当多个预测一致时,更高层级的胶囊变得活跃。我们展示了一种经过判别性训练的多层胶囊系统在MNIST数据集上达到了最先进的性能,并且在识别高度重叠的数字方面明显优于卷积神经网络。为了实现这些结果,我们使用了一种迭代的通过一致性路由的机制:低层级胶囊倾向于将其输出发送到那些活动向量与来自低层级胶囊的预测有较大标量积的高层级胶囊。

二、核心创新点

胶囊网络最初被Hinton老爷子提出来是用于解决CNN的缺陷的。我们拿一张网上广为流传的示例图来解释胶囊网络相对于CNN的改进之处。对于下面这张图,CNN则会认为它是一张人脸的图像,而胶囊网络则可以辨别出来这不是正常的人脸。

要学习胶囊网络,我们还需要简要了解下基本概念。胶囊(Capsule)是胶囊神经网络中的基本单元 ,它由一组神经元组成,用于表示特定类型的实体及其属性。每个胶囊不仅输出实体存在的概率,还可以表示实体的姿态参数(如位置、方向、大小等)。对比常规的神经网络,常规神经网络的基本单元是神经元,其输出是一个标量值,而胶囊的输出是一个向量,这使得胶囊能够捕捉更丰富的特征信息。通过引入胶囊和动态路由机制,胶囊网络改进了卷积神经网络在特征表示和特征关系捕捉方面的局限性,从而能够更好地处理物体的变形和旋转。

1、胶囊的输入输出和动态路由机制

对于胶囊的输入和输出,作者使用胶囊的输出向量长度来表示当前胶囊所代表的实体存在于当前输入中的概率。看起来很绕,通俗来说就是如果一个胶囊对应的特征在输入中有出现,那么它对应的输出向量长度就应该比没出现的胶囊输出向量要长。因此,作者使用了一个非线性的squash函数,这个函数确保短向量的长度被压缩到接近0,二长向量的长度则压缩到略小于1的取值。这个思路通过使用判别式学习来实现:

其中,是胶囊j的输出向量,而是其总输入。对于第一层胶囊之外的其余胶囊,总输入就是所有来自下一层的胶囊的预测向量加权和,这个预测向量则是使用一个权重矩阵与下一层胶囊的输出相乘得到。

其中,是耦合系数,由动态路由迭代确定。胶囊i与上一层中的所有胶囊之间的耦合系数总和为1。并且,耦合系数由"routing softmax"函数来决定,该函数的初始logits(记为)则由胶囊i和胶囊j之间的对数先验耦合概率来确定。

对于动态路由机制,作者也给出了对应的算法流程。

2、损失函数

论文使用实例化向量的长度来表示胶囊实体存在的概率,当且仅当图像中存在数字类k时(论文案例是图像数字识别任务),作者希望数字类k的top-level胶囊具有较长的实例化向量。为了允许多个数字的情况,作者为每个digit胶囊使用单独的边界损失(margin loss)

其中,当数字类别k存在时,等于1,另外是0.9,则是0.1。对于不存在的数字类别,λ则可以防止初始学习过程缩小所有digit胶囊的活动向量长度,λ取值设定为0.5。

相关推荐
天***889637 分钟前
在线教育小程序定制开发,知识付费系统AI问答网课录播APP
人工智能·小程序
qq7422349842 小时前
VitePress静态网站从零搭建到GitHub Pages部署一站式指南和DeepWiki:AI 驱动的下一代代码知识平台
人工智能·python·vue·github·vitepress·wiki
式5162 小时前
线性代数(五)向量空间与子空间
人工智能·线性代数·机器学习
式5162 小时前
线性代数(七)主变量与特解
线性代数·算法
yiersansiwu123d8 小时前
AI伦理治理:在创新与规范之间寻找平衡之道
人工智能
业精于勤的牙8 小时前
浅谈:算法中的斐波那契数(二)
算法·职场和发展
程途拾光1588 小时前
AI 生成内容的伦理边界:深度伪造与信息真实性的保卫战
人工智能
趣味科技v8 小时前
亚马逊云科技储瑞松:AI智能体正在重塑未来工作模式
人工智能·科技
GEO AI搜索优化助手8 小时前
GEO生态重构:生成式引擎优化如何重塑信息传播链
人工智能·搜索引擎·生成式引擎优化·ai优化·geo搜索优化
爱笑的眼睛118 小时前
GraphQL:从数据查询到应用架构的范式演进
java·人工智能·python·ai