胶囊神经网络

2017年,错误反向传播方法的创始人之一Jeffrey Hinton发表了一篇描述囊状神经网络的文章,并提出了一种在囊之间进行动态路由的算法以教授所提出的体系结构。

经典的卷积神经网络有缺点。 卷积神经网络数据的内部表示没有考虑简单对象与复杂对象之间的空间层次。 因此,如果在图像中随机显示卷积神经网络的眼睛,鼻子和嘴唇,则表明存在面部。 物体的旋转会影响识别的质量,而人脑可以轻松解决此问题。


对于卷积神经网络,两张图像相似[2]


从各种CNN角度训练物体识别将需要成千上万个示例。


胶囊网络从另一个角度将物体的识别误差降低了45%。

处方胶囊


胶囊封装有关功能状态的信息,该信息以矢量形式存在。 胶囊将检测到物体的概率编码为输出矢量的长度。 将检测到的功能的状态编码为矢量指向的方向(“实例创建参数”)。 因此,当检测到的功能在图像中移动或图像状态改变时,概率保持不变(矢量的长度不变),但方向会改变。

想象一下,胶囊检测到图像中的人脸并输出长度为0.99的3D矢量。 然后,在图像中移动面部。 该向量将在其空间中旋转,表示一个变化的状态,但由于胶囊确信它已检测到面部,因此其长度将保持固定。



胶囊和神经元之间的差异[2]

人工神经元可以用三个步骤来描述:

1.输入标量的标量加权
2.加权输入标量之和
3.非线性标量变换。

除了输入的仿射变换的新阶段之外,封套还具有上述3个步骤的向量形式:

1.输入向量的矩阵乘法
2.输入向量的标量加权
3.加权输入向量之和
4.矢量非线性。

CapsNet中引入的另一项创新是新的非线性激活函数,该函数采用向量,然后“给出”其长度不超过1,但不会改变方向。



等式的右侧(蓝色矩形)缩放输入向量,以便该向量具有块长度,而左侧(红色矩形)执行附加缩放。

胶囊设计基于人工神经元的构建,但将其扩展为矢量形式以提供更强大的代表功能。 还引入了矩阵权重,以对不同层的特征之间的层次关系进行编码。 相对于输入数据的变化和检测体征的概率的不变性,可以实现神经活动的等价性。

胶囊之间的动态路由





动态路由算法[1]。

第一行说,此过程采用较低级别的胶囊及其输出u_hat以及路由迭代次数r。 最后一行说该算法将产生更高级别的胶囊v_j的输出。

第二行包含一个新系数b_ij,我们之前从未见过。 该系数是一个临时值,将被迭代更新,并且在过程完成后,其值将存储在c_ij中。 在训练开始时,b_ij的值初始化为零。

第3行说步骤4-7将重复r次。
第4行中的步骤计算向量c_i的值,该值是下一个胶囊i的所有路由权重。

在为较低水平的胶囊计算权重c_ij之后,转到第5行,在此我们查看较高水平的胶囊。 此步骤使用在上一步中定义的路由系数c_ij计算加权的输入矢量的线性组合。

然后,在第6行中,最后一步的矢量经过非线性变换,以保证矢量的方向,但其长度不应超过1。此步骤将为胶囊的所有更高级别创建输出矢量v_j [2]。
基本思想是,将输入和输出之间的相似性作为胶囊的输入和输出之间的标量乘积进行度量,然后路由系数发生变化。 最佳实践是使用三个路由迭代。

结论


胶囊神经网络是一种有前途的神经网络架构,可通过改变角度和层次结构来改善图像识别。 使用胶囊之间的动态路由来训练胶囊神经网络。 与CNN相比,胶囊网络从不同角度将物体的识别误差降低了45%。

友情链接
[1]带有EM路由的矩阵胶囊。 杰弗里·欣顿(Geoffrey Hinton),萨拉·萨伯(Sara Sabour),尼古拉斯·弗罗斯特(Nicholas Frosst)。 2017。
[2]了解Hinton的胶囊网络。 马克斯·佩奇金

Source: https://habr.com/ru/post/zh-CN417223/


All Articles