CapsNet胶囊网络原理和TensorFlow实现详解

  • 内容
  • 评论
  • 相关

胶囊网络(CapsNet)是一个非常新颖的创新型深度学习网络。该技术于 2017 年 10 月底在 Sara Sabour、Nicholas Frost 和 Geoffrey Hinton 发表的一篇名为“Dynamic Routing Between Capsule”的开创性论文中被提出。Hinton 是深度学习的先驱之一,因此,整个深度学习社区很高兴看到 capsule 带来的进展。

事实上,令人印象深刻的是 CapsNet 已经在 MNIST 分类中击败了最好的 CNN!那么 CNN 有什么问题呢?在 CNN 中,每一层都以渐进级别的粒度识别图像。正如在多个方法中描述的那样,第一层很可能会识别直线或简单的曲线和边,而后面的层将开始识别更复杂的形状,如矩形和更复杂的形式,如人脸。

当前用于 CNN 的一个关键操作是池化。池化旨在建立位置不变性,并且通常在每个 CNN 层之后使用以使任何问题在计算上易于处理。但是,池化引入了一个重要的问题,因为它迫使我们失去所有的位置数据。这是很不利的。想象一张脸:包含两只眼睛、一张嘴和一个鼻子,而重要的是这些部位之间有空间关系(嘴巴在鼻子下方,而鼻子通常在眼睛的下面)。

的确如此,Hinton 说:卷积神经网络中使用的池化操作是一个很大的错误,即使它运行得很好,也将是一场数据灾难。

从技术上讲,需要的不是位置不变性,而是等值性。等值是表明想要了解图像中的旋转或比例变化的一个特定术语,希望相应地调整网络。这样,图像中不同分量的空间定位就不会丢失。

那么胶囊网络有什么创新点呢?据作者说,大脑有被称为 capsule 的模块,每个 capsule 专门处理特定类型的信息。capsule 对于理解位置的概念、尺寸的概念、定向的概念、变形的概念、纹理等尤其有效。除此之外,作者推断大脑具有特别有效的机制,能将每条信息动态传输到 capsule。这被认为最适合用来处理特定类型的信息。

所以,CNN 和 CapsNet 之间的主要区别在于,CNN 不断添加用于创建深层网络的图层,而 CapsNet 将神经层嵌入另一个。一个 capsule 是一组神经元,它在网络中引入更多的结构,它产生一个矢量来表示图像中存在的一个实体。特别是,Hinton 使用活动矢量的长度来表示实体存在的概率和表示实例化参数的取向。当多个预测一致时,更高级别的 capsule 变得活跃。对于每个可能的父代,capsule 产生额外的预测矢量。

现在又有了一个创新:使用 capsule 的动态路由,不再使用原始的池化思想。较低级别的 capsule 更倾向于将其输出发送到较高级别的 capsule,而活动矢量与来自较低级别 capsule 的预测具有较高的标量乘积。具有最大标量预测矢量积的父代增加了 capsule 键。所有其他父代减少了它们的 capsule 键。

换句话说,这个想法是如果一个更高层次的 capsule 与更低层次的 capsule 达成了协议,那么它会要求发送更多的这种类型的信息。如果没有达成协议,它会要求发送更少的这种类型的信息。这种使用协议方法的动态路由优于当前的机制,如最大池化。根据 Hinton 所述,路由最终是解析图像的一种方式。确实,最大池化只关注了最大值,而动态路由通过低层和高层之间的协议有选择性地传递信息。

第三个区别是引入了一个新的非线性激活函数。CapsNet 并没有像在 CNN 中一样为每个图层添加一个压缩函数,而是将一个压缩函数添加到一个嵌套的图层集合中。非线性激活函数如下所示,它被称为压缩函数:



 

本文标题:CapsNet胶囊网络原理和TensorFlow实现详解

本文地址:https://www.hosteonscn.com/4308.html

评论

0条评论

发表评论

邮箱地址不会被公开。 必填项已用*标注