您正在使用较旧版本的浏览器。为了获得最佳 MSN 中文网体验,请使用受支持的版本

AI前沿 | 计算机如何正确识别人脸?

Microsoft 徽标 Microsoft 2022/5/9 微软(亚洲)互联网工程院 · AI智汇学院

© 东方IC

编者按:计算机视觉软件到底能不能正确识别人脸呢?以前的CNN网络虽然能识别五官,却无法判断五官的相对位置,比如把眼睛和鼻子调换下位置,CNN网络就“傻掉了”,而胶囊网络弥补了这一缺陷。今天微软智汇学院就给我们介绍了胶囊网络。

想了解更多来自微软智汇学院的精彩内容,请戳这里~

胶囊网络(CapNet)

胶囊网络(CapsNet)于2011年在Geoffrey Hinton的一篇名为《Transforming Autoencoders》的论文中首次出现。

2017年底,Geoffrey Hinton等人又发表了一篇名为《Dynamic Routing between Capsules》的论文,其中介绍了胶囊架构。这是一种新的深度神经网络模型。目前这种模型主要应用在图像识别领域。

所谓“胶囊(capsules)”指的是人脑中的一种结构,它们能够很好的处理不同类型的视觉刺激并对诸如位置、形制、速度等信息进行编码。

在深度学习中,胶囊则是嵌入的神经元集合。一个胶囊网络是由胶囊而不是由神经元构成。

© 东方IC

胶囊网络的作用

那么为什么需要CapsNet,CapsNet对现有模型有哪些改进呢?

首先,在图像识别领域,目前是各种CNN网络的天下,不过CNN网络有其自身的局限性,这一点Hinton之前也提到过。CNN的不足主要体现在下面两方面 :

1.CNN中,对不同特征的相对位置并不关注。

2.池化操作虽然效果很好,增加了模型的鲁棒性,但同时丢失了模型的很多细节。

CapsNet详解

CapsNet是一种思路,Hinton也说了论文中的实验方式只是一种最直接的实现方式。其核心思路包括以下两点:

1. 与传统神经元不同,Capsule的输入和输出都是一个向量,我们可以将向量长度理解为传统神经元中的概率,向量的方向来表示其他信息(包括位置信息)。

2. 使用基于约定的动态路由(后面会有解释)来代替传统CNN中的Max-Pool(也可以理解为一种原始的路由机制)。

Capsule的结构

下面是一个capsule和传统神经元的对比图,右边部分我们已经很熟悉了。下面来简单介绍一下测三个公式。

1.第一个Eq.2 中, W是一组通过训练获得的参数。它和传统神经元类似,只是从一维向量变为二维。

2.第二个Eq.2中, C是通过动态路由计算得到,不需要训练,具体动态路由的算法后面会介绍。

3.Eq.1是一个非线性函数,分为两部分。右边部分负责将向量转换成一个近似的单位向量;左边部分是一个被称为Squashing的函数,使得输出的长度被压缩在0到1之间。前面我们提到过,这里输出的长度可以被理解为特征的概率。

动态路由

动态路由的思路就是将第I-1层变换后的输出(上图中的Uj|i)和第I层的输出(上图中的V)做点积,点积的结果代表两个向量的相似度。

我们约定,第I-1层输出到到第I层的权重于两层之间的相似度成正比,并且权重总和为1。下图是动态路由过程的伪代码, 其中的迭代次数r是一个超参数,Hinton的论文中建议将其设为3。

完整网络结构

了解了Capsule单元的结构之后,我们来看一下论文中给出的参考网络模型。参考网络实现了对MNIST手写数据集的图像识别,下图是模型的结构,可以看到这个胶囊网络模型只有三层,比传统模型的层数少了许多。

网络的第一层仍然是一个卷基层,第二层为主胶囊层,在主胶囊层中我们仍然使用了CNN中滑动窗口的概念。第三层为数字胶囊层,他的输出为1610的向量,其中每一个 161的向量对应着一个类的可能性。

原文使用了一个额外的图像重建结构来对模型进行训练,重建结构使用DiitCaps中活动的输出(可能性最大的)来重建出原始图像,通过这种方式强迫网络记住更多的图像特征。重建网络只是简单地使用了三个全连接层来实现,其结构如下图所示:


结语

胶囊网络中的胶囊单元给了我们构建深度神经网络时一个新的选型,通过动态路由机制网络也较好的解决了复杂网络难以训练的问题。

相信胶囊网络的推出只是一个开始,随着越来越多的人对这种网络的关注,更多的可能性将被不断地发掘出来。

--END--

想要了解更多前沿科技领域干货,欢迎点击👇:

科普 | 一文读懂大大大大大数据

概率统计学 | 坚持买彩票好多年,为何我还没中几千万

科普 | “一进制”到底是个什么鬼?!

© 微软智汇学院


image beaconimage beaconimage beacon