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

在这个系列的第一部分,我谈到了架构的直观介绍和动机。在这部分,我将描述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算法的动态路由选择,以及该网络结构的详细介绍。

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2017-11-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏ATYUN订阅号

【教程】OpenCV—Node.js教程系列:用Tensorflow和Caffe“做游戏”

? 今天我们来看看OpenCV的深度神经网络模块。如果你想要释放神经网络的awesomeness来识别和分类图像中的物体,但完全不知道深度学习如何工作,也不知...

5318
来自专栏大数据挖掘DT机器学习

机器学习模型的特性

机器学习模型中有许多种不同方法可以用来解决分类和回归问题。对同一个问题来说,这些不同模型都可以被当成解决问题的黑箱来看待。然而,每种模型都源自于不同的...

35211
来自专栏大数据挖掘DT机器学习

反向传播神经网络极简入门

我一直在找一份简明的神经网络入门,然而在中文圈里并没有找到。直到我看到了这份162行的Python实现,以及对应的油管视频之后,我才觉得这就是我需要的极简入门资...

41415
来自专栏机器学习算法原理与实践

word2vec原理(一) CBOW与Skip-Gram模型基础

    word2vec是google在2013年推出的一个NLP工具,它的特点是将所有的词向量化,这样词与词之间就可以定量的去度量他们之间的关系,挖掘词之间的...

1882
来自专栏专知

【干货】对抗自编码器PyTorch手把手实战系列——PyTorch实现自编码器

即使是非计算机行业, 大家也知道很多有名的神经网络结构, 比如CNN在处理图像上非常厉害, RNN能够建模序列数据. 然而CNN, RNN之类的神经网络结构本身...

6587
来自专栏机器学习养成记

缺失值处理(r语言,mice包)

对缺失值的处理是数据预处理中的重要环节,造成数据缺失的原因有:数据丢失、存储故障和调查中拒绝透露相关信息。这里我们使用VIM包中的sleep数据集为样本,介绍缺...

7187
来自专栏求索之路

cs231n之SVM算法和SoftMax算法

1.环境搭建以及前置条件 1.前置环境: 1.mac 2.pycharm 3.python3 4.Anaconda 2.环境搭建: 1.官网下载并安装Ana...

3376
来自专栏杨熹的专栏

word2vec 模型思想和代码实现

CS224d-Day 3: word2vec 有两个模型,CBOW 和 Skip-Gram,今天先讲 Skip-Gram 的算法和实现。 课件: https:...

4575
来自专栏菩提树下的杨过

机器学习笔记(5):多类逻辑回归-手动添加隐藏层

了解神经网络原理的同学们应该都知道,隐藏层越多,最终预测结果的准确度越高,但是计算量也越大,在上一篇的基础上,我们手动添加一个隐藏层,代码如下(主要参考自多层感...

2326
来自专栏人工智能LeadAI

线性回归与最小二乘法 | 机器学习笔记

这篇笔记会将几本的线性回归概念和最小二乘法。 在机器学习中,一个重要而且常见的问题就是学习和预测特征变量(自变量)与响应的响应变量(应变量)之间的函数关系 ...

3547

扫码关注云+社区

领取腾讯云代金券