最全解读!从原理到代码,Hinton的胶囊网络实用指南

这里是,油管Artificial Intelligence Education专栏,原作者Siraj Raval授权

雷锋字幕组

编译。

原标题 Capsule Networks: An Improvement to Convolutional Networks

翻译 | 夏雪松  郑汉伟   字幕 |  凡江   整理 | Frank

去年10月,深度学习之父Hinton发表《胶囊间的动态路由》(Capsule Networks),最近谷歌正式开源了Hinton胶囊理论代码。

Geoffrey Hinton是深度学习方面的教父之一,在80年代他推广了反向传播算法。正是由于反向传播算法,深度学习效果显著。在第一次AI寒冬中(80年代),其他人不相信神经网络能够奏效,而Hinton却坚信神经网络的观点,这正是他如此伟大的原因。

Siraj会重点介绍卷积神经网络的飞速发展史以及胶囊网络的工作原理、TensorFlow代码。

目前最先进的算法:卷积神经网络

这是一张关于卷积神经网络(CNN)的图片,如果我们使用标准的多层感知器,也就是说——所有的层完全的连接到其他的每一个层,它会很快变得难以计算。因为图像的维度非常高,有很多很多像素。

(物体识别的发展历程)

AlexNet

卷积神经网络取得的第一个进步是AlexNet网络,它是在2012年提出的。这里有一些关键的改进:它提出了ReLu,也就是有助于防止消失的梯度问题;它也引入了dropout的概念,使得每层中神经元随机地打开和关闭,防止过拟合。如果你的数据过于相似,它不能够对相似但不同的图像进行分类,因为它过拟合了你的训练数据。

因此dropout是一种防止过拟合的正则化技术,通过随机地打开和关闭神经元,数据被迫寻找新的路径,因为它被迫寻找新的路径,网络能够更好地泛化;卷积网络也引入了数据增强的想法,AlexNet或者AlexNet的作者将经过不同角度旋转的图像送入AlexNet网络,而不是仅仅放入单一角度的,这使得它更好的适用于不同的角度,这是一个更深的网络,所以他们增加了更多的层,这提高了分类的准确性。

VGG Net

在这之后,就是VGG Net。其中最大的变化是,我们添加了更多的层。

GoogLeNet

此后是GoogLeNet。GoogLeNet卷积核的尺寸不同。我们在同一个输入中,把它连接在一起。在单独的层操作,而不是只经过一次卷积操作。我们先是乘法,接下来是求和操作。它先是乘一些东西,再乘一些东西,然后把所有这些乘法的输出连接在一起,进行前向传播。这使得它更好地学习在每一层中的特征表示。

ResNet

接下来是ResNet,这是在resin之后的创意。如果我们只是保持堆叠层,那么网络每次都会变得更好吗?答案是否定的。如果你增加更多的话,性能会发生下降。ResNet说没关系。每隔两层进行数组元素依次相加操作,它只是增加了这个操作,并且改进梯度传播,从而使得反向传播更加容易。进一步解决了梯度消失的问题。

DenseNet

这之后是DenseNet。DenseNet 提出将网络中每一层的所有块与其他层连接起来。这是一种更复杂的连接策略。网络被设计的越来越深。还有一些计算技巧正在被添加到这些卷积网络上,比如ReLu或dropout或批量标准化(Batch Normalization),从而提升了性能。另外,我们还在网络层之间使用越来越多的连接,但是Hinton说卷积神经网络存在问题。

卷积神经网络可以从看到的东西里面,学习最底层的特征。

以狗为例,在最底层学习耳朵的边和曲率,然后我们沿着层次向上到高层,当我们进入下一层时学到的每一个特征将会变得更加复杂——第一层是边缘特征,下一层学到的特征变成了形状,下一层它们变成更加复杂的形状,比如一个完整的耳朵,在最后一层,它们变成非常非常复杂的形状,比如狗的整个身体。

这与我们所知道的人类视觉皮层的工作方式非常相似。每当我们看到某些东西的时候,按层次顺序激活神经元。当我们试图去识别一些我们所看到的东西时,我们并不知道精确的复杂的细节层间的连接机制,但是我们知道在每个层之间都会有层次关系发生。

(同变性和不变性)

子采样或池化试图让神经活动在小变化上保持不变性,所以这意味着无论图像怎么旋转位置在哪,或者旋转某些图像,神经网络响应是相同的,也就是说数据流是相同的,但最好还是针对同变性,这意味着如果我们旋转一张图像,神经网络也要发生改变。

所以我们需要的是一个更鲁棒的网络去改变,由于图像位置的变换,我们需要能对从未见过的数据有更好的泛化能力的算法,建立在已训练的网络的基础上。

解读胶囊网络论文

本文所探讨的关于卷积网络的论文,内容主要讲的是一种针对深度神经网络的像素攻击,论文的作者发现,通过调整图像中一丁点像素,整个网络分类变得很糟糕。

例如,对狗的分类本可以进行完美预测,但只改变这一丁点像素,他们发现整个网络分类效果并不好。无意义的神经网络容易受到攻击,如果自动驾驶车辆这些巨大机器飞驰在马路上,它们使用计算视觉去检测路况,这些系统是不能够受到这些像素攻击的影响,它们必须非常稳健。

Hinton介绍胶囊网络的想法是——人类大脑必须在比池化更好的方式下实现平移不变性。Hinton假设大脑有一些模块,他称之为胶囊。

这些模块非常擅长处理不同类型的视觉刺激,以及在一个确定方式下进行编码。卷积神经网络指导数据如何通过池化操作传输到每个层。如果我们输入一张图像并对它应用卷积操作,然后对它进行非线性操作,接着根据图像的池化层的输出来拉取它,在一个确定方向上进入下一层。不过它会冲击基于池化的下一层中的某些单位,但池化是路由数据非常粗糙的方式。

有一个更好的路由数据的方式,胶囊网络背后基本想法是——这只是一个神经网络而不是仅仅添加另一个层,所以通常我们添加不同类型的层而不是在一个层上嵌套新层,也就是说我们在层的里面添加另一个层,所以这是个内部嵌套层。由此,内部嵌套层被称为一组神经元胶囊。

代码演示:https://github.com/llSourcell/capsule_networks

论文原文:https://arxiv.org/pdf/1710.09829.pdf

更多文章,关注雷锋网(公众号:雷锋网),添加雷锋字幕组微信号(leiphonefansub)为好友

备注「我要加入」,To be a  AI  Volunteer !雷锋网雷锋

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180301A15F9H00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券