前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入了解Hinton的Capsule神经网络,第二部分:如何运作

深入了解Hinton的Capsule神经网络,第二部分:如何运作

作者头像
AiTechYun
发布2018-03-05 17:02:18
8200
发布2018-03-05 17:02:18
举报
文章被收录于专栏:ATYUN订阅号ATYUN订阅号

在这个系列的第一部分,我谈到了架构的直观介绍和动机。在这部分,我将描述Capsule是如何在内部运作的。

第一部分:http://www.atyun.com/10006_深入了解Hinton的Capsule神经网络,第一部分:直观地介绍.html

Capsule是如何工作的? 让我们将Capsule与人造神经元进行比较。下表总结了Capsule和神经元之间的区别:

Capsule和神经元之间的重要区别

一个神经元接收来自其他神经元的输入标量,然后将它们的标量的权重和总和相乘。然后,这个总和被传递给许多可能的非线性激活函数中的一个,主要根据函数接受输入和输出一个标量。这个标量是神经元的输出,它将作为其他神经元的输入。这个过程的总结可以在上面的表格和下图中右边的内容上看到。从本质上说,人工神经元可以用3个步骤来描述:

1.输入标量的标量权重 2.加权输入标量的和 3.标量到标量非线性

左:Capsule;右:人工神经元

另一方面,Capsule除了上面三个步骤的向量形式,还有新的步骤和输入的仿射变换:

1.输入向量的矩阵乘法 2.输入向量的标量权重 3.加权输入向量的总和 4.向量到向量非线性

现在让我们更好地看一下Capsule内部的4个计算步骤。

1.输入向量的矩阵乘法 Capsule接收到的输入载体(图中的u1、u2和u3)来自于下面这一层的另外3个Capsule。这些向量的长度编码了较低的Capsule检测到它们对应的对象和向量方向的概率,并对检测到的对象的内部状态进行编码。让我们假设较低层次的Capsule分别检测眼睛、嘴巴和鼻子,而稍好些的Capsule检测到的是面部。

然后,这些向量乘以相应的权重矩阵W,它编码了重要的空间和其他低层次特征(眼睛、嘴和鼻子)和高层次特征(面部)之间的关系。例如,矩阵W2j可以对鼻子和面部的关系进行编码:面部以鼻子为中心,其大小是鼻子的10倍,而在空间上的方向与鼻子的方向一致,因为它们都在同一个平面上。对于矩阵W1j和W3j,也可以得出类似的结果。在这些矩阵相乘之后,我们得到的是更高层次特征的预测位置。换句话说,根据检测到的眼睛的位置,u1hat代表了人脸的位置,根据检测到的嘴巴的位置,u2hat代表了人脸的位置,根据鼻子的检测位置,u3hat代表了人脸的位置。

这时你可能会认为:如果这3个低层次特征的预测指向面部的同一个位置和状态,那么它一定是一张脸。

2.输入向量的标量权重 乍一看,这个步骤似乎非常熟悉,因为人工神经元会在添加它们之前,对输入进行加权。在神经元的情况下,这些权重是在反向传播过程中得到的,但Capsule是通过“动态路由选择(dynamic routing)”来确定的,这是一种确定每个Capsule的输出位置的新方法。

低层次的的Capsule将把它的输入发送到与它的输入“一致”的更高层次的Capsule。这是动态路由选择算法的本质

在上面的图片中,我们有一个低层次的Capsule,它需要“决定”它将向哪个更高层次的Capsule发送它的输出。它将通过调整权重C来决定这个Capsule的输出,然后再把它送到左侧或右侧更高层次的capsule J和capsule K中。

现在,更高层次的capsule已经从其他低层次的capsule中获得了许多输入载体。所有这些输入都用红色点和蓝色点表示。当这些点聚集在一起时,这就意味着较低层次的capsule的预测是相互接近的。这就是为什么,为了举个例子,在两个capsule J和capsule K中都有一个红色的点。

那么,我们的低层次的capsule应该把它的输出送到哪里呢? 是capsule J还是capsule K? 这个问题的答案是动态路由算法的本质。低层次capsule的输出,当乘以相应的矩阵W,远离在capsule J中“correct”预测的红色集群capsule J.另一方面,如果将非常接近在右侧的capsule K 中的“true”预测的红色集群.低层次capsule有一个测量机制,高层次capsule更好地适应其结果和将自动调整其权重,这样重量C对应的capsule K会变高,对应的capsule J会变低。

3.加权输入向量的总和 这一步骤类似于常规的人工神经元,并表示输入的组合。我不认为这一步有什么特别之处(除了它是向量和标量之和)。因此,我们可以进入下一个步骤。

4.“挤压(squash)”:新式的向量到向量非线性 CapsNet引入的另一个创新是新的非线性激活函数,该函数取一个向量,然后将其挤压到长度不超过1,但不会改变它的方向。

在不改变方向的情况下,挤压非线性scale输入向量

等式的右边(蓝色矩形)缩放具有单位长度的输入向量su,,左侧(红色矩形)执行额外的缩放。记住,输出向量的长度可以被解释为被capsule探测到的一个给定特征的概率。

下图是对一维向量应用的挤压函数(squashing function),它是一个标量。我把它包含在这个函数的非线性形状中。只有在一维情况下才有意义;在实际应用中,它会取向量和输出一个向量,这是很难想象的。

结论 我们看到,capsule的设计是建立在人工神经元的设计之上的,但将其扩展到向量形式,以获得更强大的表征能力。它还引入了矩阵权重来对不同层次的特性之间的重要层次关系进行编码。结果得出:神经元活动与在特征检测的输入和不变性方面的变化是一致的。

capsule的内部工作原理

请注意,这里没有偏差,因为它已经包含在可以容纳它和其他更复杂的转换和关系W矩阵中。本系列的第二部份结束,今后的文章将讨论Capsules算法的动态路由选择,以及该网络结构的详细介绍。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ATYUN订阅号 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档