10月26日,深度学习元老Hinton的NIPS2017 Capsule论文《Dynamic Routing Between Capsules》终于在arxiv上发表。Hinton 之前就一直介绍Capsule的理念,之前专知也有文章介绍。
【深度】浅析Geoffrey Hinton最近提出的Capsule计划
今天我们简读下这篇重量级论文讲了些什么
论文地址:https://arxiv.org/pdf/1710.09829.pdf
摘要:Capsule 是一组神经元,其活动向量(activity vector)表示特定实体类型的实例化参数,如对象或对象部分。我们使用活动向量的长度表征实体存在的概率,向量方向表示实例化参数。同一水平的活跃 capsule 通过变换矩阵对更高级别的 capsule 的实例化参数进行预测。当多个预测相同时,更高级别的 capsule 变得活跃。我们展示了判别式训练的多层 capsule 系统在 MNIST 数据集上达到了最好的性能效果,比识别高度重叠数字的卷积网络的性能优越很多。为了达到这些结果,我们使用迭代的路由协议机制:较低级别的 capsule 偏向于将输出发送至高级别的 capsule,有了来自低级别 capsule 的预测,高级别 capsule 的活动向量具备较大的标量积。
具体看,作者在论文中介绍,一个活动的胶囊内的神经元活动表示了图像中出现的特定实体的各种属性。这些属性可以包括许多不同类型的实例化参数,例如姿态(位置,大小,方向),变形,速度,反照率,色相,纹理等。一个非常特殊的属性是图像中某个类别的实例的存在。表示存在的一个简明的方法是使用一个单独的逻辑回归单元,它的输出数值大小就是实体存在的概率。在本文中,我们探索一个有趣的替代方法,即使用实例化参数向量的总长度来表示实体的存在并强制向量的方向来表示实体的属性。我们确保胶囊的矢量的输出不超过1。本文采用了如下的一种计算公式:采用一个非线性函数对向量进行“压缩”,短向量被压缩到几乎为零,长向量也被压缩到1以下长度。判别学习中充分利用这个非线性函数。
其中vj是胶囊j的输出向量,sj是它的全部输入。胶囊的输出是一个向量,这一设定使得用强大的动态路由机制来确保胶囊的输出被发送到上述层中的适当的父节点成为可能。
路由计算的伪码如下图
采用如下损失函数
其中Tc=1当且仅当图片中有属于类别C的数字,m+=0.9,m-=0.1,λ = 0.5。
CapsNet 结构
论文采用以下CapsNet
Capsule 用在MNIST上的效果
使用 28×28 MNIST的图片集进行训练,训练前这些图片在每个方向不留白地平移了2个像素。除此之外,没有进行其他的数据增改或者转换。在MNIST数据库中,6万张图片用于训练,另外1万张用于测试。
测试中作者使用的是单一模型,没有进行“综合”或者明显的数据扩增方法。作者们通过3层神经网络实现了较低的错误率(0.25%),这一错误率以往只有更深的网络才能达到。表中展现的是不同设置的CasNet在NMIST数据库上的测试错误率,表明了路由以及正则器重构的重要性。其基线是一个标准的三层神经网络(CNN)。
文章最后说,现在现在卷积神经网络已经成为物体识别的主流方法,但在本文中,通过一个简单的胶囊系统已经在分割数字图像上获得了优异的表现效果,这表明了胶囊是一个值得探索的方向。
详细请读者查看原汁原味的英文吧!
特别提示:
请关注专知公众号,后台回复“MLDL” 就可以获取 机器学习&深度学习知识资料大全集的pdf下载链接