CapsNet入门系列之三:囊间动态路由算法

2017 年 12 月 1 日 论智 weakish
作者:Max Pechyonkin

编译:weakish

编者按:深度学习开创者之一、反向传播等神经网络经典算法的发明人Geoffrey Hinton思考了胶囊网络数十年之久,然而直到上一个月才发表论文正式提出胶囊网络。主要原因就是一直没找到训练胶囊网络的合适算法。深度学习开发者,Medium知名博主Max Pechyonkin刚发表了胶囊网络入门系列的第三篇,简明扼要地介绍了Hinton新提出的囊间动态路由算法。

介绍

本文是胶囊网络(CapsNet)系列的第三篇。胶囊网络是一种基于胶囊的新型神经网络。我已经讨论过它背后的直觉,以及胶囊是什么和胶囊如何工作。在本文中,我将讨论创新的囊间动态路由算法,胶囊网络是用这个算法训练的。

Hinton等人早期报告中描述胶囊和囊间路由的示意图

第二篇提到,低层胶囊i需要决定如何将其输出向量发送给高层胶囊j。低层胶囊改变标量权重cij,输出向量乘以该权重后,发送给高层胶囊,作为高层胶囊的输入。通过这一方式,低层胶囊做出决策。就符号表示而言,cij表示与低层胶囊i的输出向量相乘,乘积传递到高层胶囊j作为输入的权重。

关于权重cij,我们需要知道:

  1. 权重均为非负标量。

  2. 对每个低层胶囊i而言,所有权重cij的总和等于1。

  3. 对每个低层胶囊i而言,权重的数量等于高层胶囊的数量。

  4. 这些权重的数值由迭代动态路由算法确定。

前两点使我们得以用概率术语解释权重。回顾一下第二篇的内容,胶囊经训练后检测出特征,该特征的存在概率用胶囊输出向量的长度来表示。特征的参数状态则用输出向量的方向表示。所以,从某种意义上说,对于每个低层胶囊i而言,其权重cij定义了传给每个高层胶囊j的输出的概率分布。

第二篇中的胶囊内部机制的概览

囊间动态路由

那么,动态路由过程中究竟发生了什么呢?让我们看看原论文对这一算法的描述。不过,在我们逐步深入算法之前,我希望你对算法背后的主要直觉能有个印象:

低层胶囊将其输出发送给对此表示“同意”的高层胶囊。这是动态路由算法的精髓。

了解算法背后的主要直觉后,让我们逐行看看原论文对这一算法的描述。

让我们先来看第一行和最后一行,也就是说,这个算法的输入和输出分别是什么。第一行指明了算法的输入:低层l中的所有胶囊及其输出û,以及路由迭代计数r。最后一行指明了算法的输出,一个高层胶囊vj。本质上,这段算法告诉我们如何计算网络的前向传导。

第2行的bij是一个临时变量,它的值会在迭代过程中更新,当整个算法运行完毕后,它的值将被保存到cij。在训练开始时,bij的值被初始化为零。

第3行表明第4-7行的步骤会被重复r次(路由迭代次数)。

第4行计算向量ci的值,也就是低层胶囊i的所有权重。这一计算将应用到所有低层胶囊上。为什么要用softmax呢?Softmax将确保所有权重cij均为非负数,且其总和等于一。本质上,softmax强制实施了我在上文描述的系数cij的概率性质。

由于所有bij的值初始化为零(第2行),第一次迭代后,所有系数cij的值会相等。例如,如果我们有3个低层胶囊和2个高层胶囊,那么所有cij将等于0.5。算法初始化时期,所有cij均相等,这意味着不确定性达到最大值:低层胶囊不知道它们的输出最适合哪个高层胶囊。当然,随着这一进程的重复,这些均匀分布将发生改变。

计算了所有低层胶囊的所有的权重cij之后,我们来看第5行,那里将涉及高层胶囊。这一步我们将计算经前一步确定的路由系数cij加权后的输入向量的线性组合。从直觉上说,这意味着缩小输入向量并将它们相加,得到输出向量sj。这一步骤将应用到所有高层胶囊上。

接着,在第6行中,来自前一步的向量将穿过squash非线性函数,这确保了向量的方向被保留下来,而长度被限制在1以下。该步骤生成传给所有高层胶囊的输出向量vj。

总结一下到目前为止算法做了什么:步骤4-6是在计算高层胶囊的输出。第7行更新了权重,也是路由算法的本质所在。在这一步中,我们查看了每个高层胶囊j,然后检查每个输入并根据公式更新相应的权重bij。公式表明,胶囊j的当前输出和从低层胶囊i处接收的输入的点积,加上旧权重,等于新权重。点积检测胶囊的输入和输出之间的相似性。另外,如前文所述,低层胶囊将其输出发送给具有类似输出的高层胶囊。点积刻画了这一相似性。这一步骤之后,算法跳转到第3步重新开始这一流程,并重复r次。

重复r次后,我们计算出了所有高层胶囊的输出,并确立路由权重。之后正向传导就可以推进到更高层的网络。

点积运算接收两个向量,并输出一个标量。对于给定长度但方向不同的两个向量而言,点积有几种情况:a最大正值; b 正值;c 零;d 负值;e 绝对值最大的负值

权重更新的直观例子

上图中,两个高层胶囊的输出用紫色向量v1和v2表示。橙色向量表示接收自某个低层胶囊的输入,其他黑色向量表示接收自其他低层胶囊的输入。

我们看到,左边的紫色输出v1和橙色输入û1|1指向相反的方向。换句话说,它们并不相似。这意味着它们的点积将是一个负数,并减少路由系数c11。右边的紫色输出v2和橙色输入û2|1指向相同的方向。它们是相似的。因此,路由系数c12会增加。在所有高层胶囊及其所有输入上重复应用该过程,得到一个路由系数的集合,达成了来自低层胶囊的输出与高层胶囊的输出的最佳匹配。

进行多少次路由迭代?

论文在MNIST和CIFAR上检验了一定范围内的数值,得到了两个结论:

  1. 更多的迭代往往会导致过拟合

  2. 实践中建议使用3次迭代

结语

本文解释了基于合意的动态路由算法,该算法用于训练CapsNet。最关键的想法是,通过胶囊的输入和输出的点积测量输入和输出的相似性,然后相应地更新路由系数。实践中的最佳做法是使用3次迭代。

在下一篇文章中,我将带你领略CapsNet的架构,将迄今为止我们所掌握的谜题线索集中起来。

原文地址:https://medium.com/ai%C2%B3-theory-practice-business/understanding-hintons-capsule-networks-part-iii-dynamic-routing-between-capsules-349f6d30418

相关阅读:

CapsNet入门系列之一:胶囊网络背后的直觉

CapsNet入门系列之二:胶囊如何工作

登录查看更多
12

相关内容

Capsule Networks,胶囊网络,57页ppt,布法罗大学
专知会员服务
65+阅读 · 2020年2月29日
专知会员服务
25+阅读 · 2020年2月15日
【开源书】PyTorch深度学习起步,零基础入门(附pdf下载)
专知会员服务
107+阅读 · 2019年10月26日
胶囊网络:将CNN推下神坛的“天命之子”
计算机视觉life
5+阅读 · 2019年6月28日
【教程】可视化CapsNet,详解Hinton等人提出的胶囊概念与原理
GAN生成式对抗网络
8+阅读 · 2018年4月11日
CapsNet入门系列之四:胶囊网络架构
论智
12+阅读 · 2018年2月23日
放弃深度学习 ,Hinton提出Capsule计划
德先生
3+阅读 · 2018年1月2日
CapsNet入门系列之二:胶囊如何工作
论智
11+阅读 · 2017年11月22日
CapsNet入门系列之一:胶囊网络背后的直觉
论智
8+阅读 · 2017年11月20日
重磅!Geoffrey Hinton提出capsule 概念,推翻反向传播!
人工智能学家
7+阅读 · 2017年9月17日
Text classification using capsules
Arxiv
5+阅读 · 2018年8月12日
Recurrent Fusion Network for Image Captioning
Arxiv
3+阅读 · 2018年7月31日
Arxiv
11+阅读 · 2018年5月13日
Arxiv
6+阅读 · 2018年4月3日
Arxiv
4+阅读 · 2018年3月14日
Arxiv
10+阅读 · 2018年2月17日
VIP会员
相关资讯
相关论文
Top
微信扫码咨询专知VIP会员