学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

全文共2705字,预计学习时长8分钟

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

来源:Pexels

 

作为一个“脸盲晚期患者”,小芯面对韩国女团一堆大姐姐时,时常感到无力。左看右看,上看下看,长得都一样?

不知道,大家是不是也常常有这样的体验?

 

但不管“脸盲症”有多严重,面对韩国女团,我们大脑还是能清晰的分辨出——这是一张“人脸”。

 

一张漂亮的“美女脸”。

 

但机器就不一定了。

 

在以前,AI技术还不成熟阶段,机器人脸识别常常出错,闹出一系列笑话。

 

好在现在得以改进,各种解决方案和技术蹭蹭蹭地冒出来,比如说,我们今天要介绍的“胶囊神经网络”。

 

下面以这个面孔为例。

 

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

一张普通的脸

 

 

如果将嘴移到额头,将眼睛移到下巴会怎么样?可能很难描述,但这仍然是一张脸。

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

一张变形的脸

 

 

通过分辨人脸的不同特征,卷积神经网络 (CNN) 可以很好地对图像(如上图)进行分类。

 

卷积神经网络通过检查数千个样本图像,并从错误中不断学习,最终做到这一点。最开始处的卷积层有助于检测基本特征(例如边缘)和卷积神经网络中更深的层次有助于检测更加细节化的特征(例如眼睛,嘴等)。

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

卷积神经网络框架布局

 

 

但是,你可能想知道,网络是如何仅利用这些数据就有效实现这这一点呢?

 

最大池化层

 

卷积层之间都有一个最大池化层。这些层从每个卷积层获取最活跃的神经元,并将它们传递到下一个卷积层。这意味着较少的活跃神经元会遭到遗弃。数据在网络中传输时,空间信息会丢失,致使这些神经元丢失。

 

具有讽刺意味的是,最大池化层的功能太强大了。神经元丢失,准确性就会下降,但是这种做法的效果却很好。

 

“在卷积神经网络中使用合并操作是一个很大的错误,它虽运作得很好,但这是一场灾难”,杰弗里·欣顿 (Geoffery Hinton)说道。

 

这也呈现出另一个问题:每个隐藏层中会发生什么,这些层之间如何相互传递信息?

 

需要另一种方法来帮助实现卷积神经网络的功能,同时可以改进体系结构以实现更可靠的分类。而且,这也正是胶囊神经网络发挥作用的地方。

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

 

胶囊神经网络如何工作?

 

与标准神经网络中的神经元相比,胶囊网络使用胶囊。胶囊压缩了输出矢量图的所有重要信息。与输出标量的神经元相比,胶囊有能力跟踪特征方向。因此,如果开始更改特征的位置,则矢量值将保持不变,但方向指向的位置将发生变化。

 

优点

 

1. 处理较小的数据集时,效果非常好(例如MNIST)

2. 更易于解释鲁棒图像

3. 保留所有信息(pose、texture、location等)

 

缺点

 

1. 处理较大的数据集时,效果较差(例如CIFAR10)

2. 路由协议算法需要更多计算时间

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

 

结构:

 

胶囊网络(CapsNet)包含一个编码器和一个解码器。编码器和解码器一共包含6层。

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

编码器结构

 

 

前三层是编码器,负责获取输入图像并将其转换为16维向量。CapsNet 创建编码器的有这三层:

 

1. 卷积神经网络

2. PrimaryCaps 网络

3. DigitCaps 网络

 

第一层负责提取图像的基本特征(例如:找到组成数字4的笔画)。

 

第二层 (PrimaryCaps) 负责收集这些基本特征的信息,在它们之间找到更详细的模式(即每个笔画之间的空间关系)。该层中胶囊的数量取决于数据集,但对于 MNIST 数据集,有32个胶囊可维持相关度最高的信息。

 

就像第二层一样,第三层 (DigitCaps层) 中的胶囊数量也有所不同。特别是对于 MNIST 数据集,只有10个胶囊;每个数字对应一个胶囊。

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

MNIST 手写数字

 

 

要确定从 PrimaryCaps 中的哪个胶囊进入 DigitCaps,较低级胶囊 (PrimaryCaps) 的权重必须与较高级胶囊 (DigitCaps) 的权重一致。(稍后将进一步讨论。)

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

解码器结构

 

 

在编码器的末端,有16维矢量,会传递给解码器。解码器具有三个完全连接的层。解码器的主要工作是获取16维矢量,并尝试使用该数据从头开始重建图像。这的确令人惊奇,因为它可以根据本身的知识生成预测,从而提高网络的鲁棒性。

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

解码器结构故障

 

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

 

组成部分:

 

考虑到这一点,胶囊神经网络中有四个主要计算过程。

 

1. 矩阵乘法

2. 标量加权

3. 动态路由算法

4. 向量至向量非线性

 

矩阵乘法

 

要在信息第一层传递到第二层之间执行权重矩阵乘法,从而对理解空间关系的信息进行编码。该编码信息体现了对正确标签进行分类的可能性。

 

标量加权

 

还记得前文说过低级胶囊的权重必须与高级胶囊保持一致吗?在这一阶段,较低级的胶囊调整其权重以匹配较高级胶囊的权重。

 

你可能想知道:较高级的胶囊接收大量输入,那么该如何选择合适的低级别胶囊?

 

好吧,更高级的胶囊会显示权重的分布,接受最大的分布/集群并继续传递。

 

它们如何沟通?

 

动态路由算法

 

使用动态路由算法,可以让各层相互通信。该算法聚焦“通过协议路由”的思想,这是之前谈到的使胶囊的权重/内容一致。动态路由算法能够更好地在网络各层之间传递数据,从理论上讲,这将提高时间和空间的复杂度。在实践中,使用三个路由迭代,因为过度迭代会导致过度拟合和性能降低。

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

内容较低级的胶囊与较高级的胶囊一致

 

 

向量至向量非线性

 

执行动态路由算法,将胶囊传递到正确的位置并重建图像,最后一步是压缩信息。需要以某种方式将所有信息压缩为可重复使用的信息。

 

该过程就是使用挤压函数。

 

挤压函数采用最终矢量的大小,并将长度压缩到小于1,同时仍保持矢量的方向。这是挤压函数的数学表达式:

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

 

 

公式的左侧(红色框)执行了前面讨论的缩放比例。并且,右侧(绿色框)为压缩后的矢量分配了单位长度。

 

快速回顾:该向量输出 (v_j) 表示该给定特征被胶囊识别的概率。

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

 

损失函数:

 

就像传统网络一样,网络会从错误中吸取教训。可以通过下面这样的损失函数来表示这个错误:

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

CapsNet 损失函数的细分[来源]

 

 

如果网络以 0.9 或更高的概率预测正确的类别,则此损失函数将返回 0。否则,如果置信度小于 0.9,则损失函数将返回 0 到 1 之间的数字。

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

 

收获

 

· 与最大池化层相比,胶囊网络可保留图像中的大部分信息

· 动态路由算法允许网络中的各层通过协议路由相互通信

· 胶囊网络仍处于早期开发阶段

· 胶囊网络缺乏在大型数据集中运行的性能

 

你学习到了吗?

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

 

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

 

留言 点赞 关注

我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体 “读芯术”

学习胶囊神经网络,成为自动驾驶汽车未来的掌控者吧

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)