您的位置:首页 > 其它

理解CapsuleNetwork2

2017-12-01 21:43 15 查看
what is a Capsule?

第一篇论文引入capsule的观点- “Transforming AutoEncoders”,其中一部分对于capsule的理解很重要:

“不去在神经元的活动中力求视角不变性,使用单个标量输出来概括一个局部合伙的复制特征检测器,人造神经网络应该使用局部“capsule”来完成复杂的内部计算,并封装这些计算的结果到一个小的高度信息化的输出向量中。每个胶囊学习识别一个暗含地定义的视觉实体在一个受限领域的视觉条件下和变形和它输出概率其实体使用其受限位置和一系列实例化参数集来呈现,可能包含精确姿势,灯光和视觉实体的变形相关于暗含定义的典型版本。当胶囊适当地工作时,可视化实体被呈现的概率是局部不变的-当实体在流形中移动时不会发生改变。实例化参数,是相等的-作为查看条件改变和在流形移动的实体。”

大概的意思:人工神经元输出是一个标量。CNN使用卷积层对于每个核,复制同样的核权重在完整的输入量中,然后输出2D矩阵,其每个数是关于输入量的一部分的核卷积输出。我们可以看到2D矩阵作为复制的特征检测器的输出。所有核的2d矩阵堆积来产生卷积层输出。

然后试图去完成视觉不变形。通过最大池化,连续地看上述的2D矩阵区域并选出每个区域的最大值。结果,我们得到我们想要的-活动不变形。不变形意味着通过改变输入一部分,输出仍然一致。并且活动只是一个神经元的输出信息。换句话,当输入图像我们转化我们想要检测的物体一点点,网络活动(神经元输出)不会改变因为max pooling。

其实max pooling会损失有价值信息并且也不会编码相关特征空间关系。我们应该使用胶囊,因为它们能封装所有重要信息关于特征的状态以向量的形式(不同于神经元输出的标量)

颊囊编码特征检测的概率作为它们输出向量的长度。检测特征的状态被编码成方向在向量中指的(“实例化参数”)。所以当检测特征移动或者状态改变了,概率仍然保持一致(向量长度不变),但是它的方向改变了。

想象一个胶囊检测人脸并输出3D向量长度为0.99,我们开始移动人脸,向量将会在其空间中旋转,表示检测脸部的改变状态,但是其长度固定,因为胶囊仍然确保它检测的人脸。这就是所谓的活动等式:神经元活动将会变化当物体在可能表现的流形中移动。通过检测的概率为常数,也就是不变形。

2 胶囊如何工作:

比较胶囊和人工神经元。



一个神经元从其他神经元接受输入标量,然后乘上标量权重求和。这个和被输入到一个非线性激活函数,以输入的标量输出一个标量。

另一方面:胶囊网络以向量形式完成上述过程,并增加一个新的步骤,affine transform of input:

1. 输入向量的矩阵乘法

2. 输入向量的标量加权

3. 加权的输入向量求和

4. 向量到向量的非线性激活

1输入向量的矩阵乘法



上图中输入向量(u1, u2, u3)来自在下面层中其他3个胶囊,这些向量的长度编码概率,低阶胶囊检测他们对应的物体和向量方向编码检测物体的内在状态。我们假设低阶胶囊检测眼睛,嘴巴和鼻子,我们的胶囊检测脸。

这些向量用对应的权重矩阵W相乘,其编码重用的空间和其他关系在低阶特征(眼,嘴鼻)和一个高阶特征(脸)。例如,矩阵W2j编码鼻子和脸之间的关系:脸是以鼻子为中心,脸是鼻子的10倍大,脸的方向对应鼻子的方向,因为共处一个平面。W1j和W3j也类似。乘上这些矩阵,我们得到高阶特征的预测位置。换句话说u1^表示根据检测眼睛的位置脸应该在的地方,u2^表示根据嘴所在位置所推算出脸的位置,u3^表示根据鼻子检测的位置推断的脸的位置。

若这三个低阶特征位置都指向同一个位置和状态,那么脸肯定在此。

2 输入向量的标量权重

此步骤类似人工神经元上加权它的输入。在神经元上,这些权重在反向传播时学习,但在胶囊例子中,他们使用动态选择ronting确定,这是一种新的方式来确定每个胶囊的输入走向,


上述图片中,一个低阶胶囊需要决定哪一个高阶胶囊去把结果发给它。通过调整权重C来做出决定,将乘上这个胶囊的输出,在发送之前,左边或者右边高阶胶囊J或K

现在,高阶胶囊已经节后需要输入向量从低阶胶囊。所有这些输入用红和蓝点表示。这些
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: