📜  胶囊神经网络 |机器学习

📅  最后修改于: 2022-05-13 01:58:07.103000             🧑  作者: Mango

胶囊神经网络 |机器学习

胶囊神经网络 (Capsnets)是一种 ANN(人工神经网络),其主要目标是更好地复制生物神经网络以实现更好的分割和识别。这里的胶囊这个词代表胶囊网络层中的嵌套层。 Capsules 确定对象中特征的参数。在识别人脸的过程中,胶囊不仅会确定是否存在面部特征,还会考虑组织面部特征的各个参数。这意味着只有当胶囊检测到的特征以正确的顺序出现时,系统才会检测到人脸。

胶囊的工作是进行图像逆向渲染,即根据训练集中给定的对象样本,通过对对象进行分析,得到对象的角度、尺度、位置等实例化参数。

胶囊的工作

  1. 第一个胶囊进行输入向量与权重矩阵的矩阵乘法,这实际上告诉我们一些低级特征与高级特征的空间关系。
  2. 然后胶囊决定它们的父胶囊。父胶囊的选择是通过使用动态路由来完成的。
  3. 在做出关于它们的父胶囊的决定后,它们继续计算所有向量的总和,这些向量最终在 0 和 1 之间压缩,同时保持它们的方向。压缩是通过使用余弦距离作为一致性度量和坐标系的范数作为存在概率来完成的。

什么是动态路由?

在动态路由过程中,较低的胶囊将它们的数据发送到最合适的胶囊。这个接收较低级别胶囊输出的胶囊称为父胶囊。父胶囊通过遵循协议和分配机制进行路由,即基于点积、期望最大化和使用混合模型。选择具有最大点积的胶囊作为父胶囊。这个点积发生在由较低胶囊层计算的预测向量和权重矩阵之间。

甚至可以通过以下示例来解释动态路由:



假设,如果我们向系统提供图像以便它能够识别它并说明它是什么?
图片是房子的四种不同视角的图片,CNN可以很容易地识别出培训期间教过的房子的正视图,但是从顶视图识别房子的图片会很麻烦,所以这里胶囊开始发挥作用。
胶囊很容易检测屋顶和墙壁,但不是任何屋顶都可以是房屋,因此,它们分析图像中的恒定部分,即房屋胶囊相对于屋顶和墙壁的坐标系。预测由屋顶和墙壁共同完成,以确定对象是否为房屋。然后将这些预测发送到中级胶囊。如果屋顶和墙壁的预测相互匹配,则对象被称为房屋,这个过程称为通过协议路由

Capsule 网络的一般架构 -

编码器——它接受图像输入并将图像显示为一个向量,其中包含渲染图像所需的所有实例化参数。编码器进一步封装了:

  1. 卷积层——它检测图像中的基本特征。
  2. PrimaryCaps 层——它们根据卷积层检测到的基本特征产生组合。
  3. DigitCaps 层——这是包含所有实例化参数的最高级别胶囊层。

解码器——它的工作是将来自 DigitCap 的 16 维向量解码为图像。它重新创建输出图像而不会丢失像素。它们迫使胶囊学习对重建图像有用的特征。解码器还具有三个全连接(密集)层。

CNN 和 Capsnets –

引入 Capsnets 背后的主要思想是减少训练集的大小,在 CNN(卷积神经网络)的情况下通常非常大。 CNN 也是一种神经网络,但在该网络中,输出取决于训练集的数量。在 CNN 的情况下,训练和测试集的大小可以从 60M 到 10M。CNN 的一个主要缺点是它们无法适应视点。

如果特定图像被反转,CNN 可能无法识别该图片。 Capsnet 在这里利用了这样一个事实,即视点变化在像素级别具有非线性影响,在对象级别具有线性影响。 Capsnets 能够适应视点变化,因为它们学习对象之间的线性流形并将其作为权重矩阵构成。
这里,线性流形是指欧几里德空间中各种对象向量之间的线性关系,具有 n 维。

CNN 使用最大池系统,而胶囊保持前一层特征的加权总和,更适合检测重叠特征。 Capsnets 提供的这些功能对于识别笔迹中的重叠数字非常有帮助。 CNN 使用过多的分层系统来识别对象,这会减慢识别过程,然而,Capsnets 不相信有太多的层,而是在一层中使用层的嵌套。

Capsnet 目前仅针对 MNIST(通常用于训练各种图像处理系统的大型手写数字数据库)进行测试,并且它们在 Imagenet 中发现的更复杂的数据上挣扎。此外,胶囊需要更长的训练时间。尽管有这些缺点,但它们在未来可能还有很长的路要走。