首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Capsule介绍(一)-cnn和capsule的基本概念介绍

1、深度学习与CNN介绍

1.1深度学习介绍

深度学习是指多层神经网络上运用各种机器学习算法解决图像,文本等各种问题的算法集合。深度学习从大类上可以归入神经网络,不过在具体实现上有许多变化。深度学习的核心是特征学习,旨在通过分层网络获取分层次的特征信息,从而解决以往需要人工设计特征的重要难题。深度学习是一个框架,包含多个重要算法:

Convolutional Neural Networks(CNN)卷积神经网络

AutoEncoder自动编码器

Sparse Coding稀疏编码

Restricted Boltzmann Machine(RBM)限制波尔兹曼机

Deep Belief Networks(DBN)深信度网络

Recurrent neural Network(RNN)多层反馈循环神经网络神经网络

对于不同问题(图像,语音,文本),需要选用不同网络模型才能达到更好效果。此外,最近几年增强学习(Reinforcement Learning)与深度学习的结合也创造了许多了不起的成果,AlphaGo就是其中之一。

1.2CNN介绍

卷积神经网络(Convolutional Neural Networks, CNN)是多层感知机(MLP)的变种。由生物学家休博尔和维瑟尔在早期关于猫视觉皮层的研究发展而来。视觉皮层的细胞存在一个复杂的构造。这些细胞对视觉输入空间的子区域非常敏感,我们称之为感受野,以这种方式平铺覆盖到整个视野区域。这些细胞可以分为两种基本类型,简单细胞和复杂细胞。简单细胞最大程度响应来自感受野范围内的边缘刺激模式。复杂细胞有更大的接受域,它对来自确切位置的刺激具有局部不变性。

卷积神经网络是一种多层神经网络,擅长处理图像特别是大图像的相关机器学习问题。卷积网络通过一系列方法,成功将数据量庞大的图像识别问题不断降维,最终使其能够被训练。CNN最早由Yann LeCun提出并应用在手写字体识别上(MINST)。LeCun提出的网络称为LeNet,其网络结构如下:

这是一个最典型的卷积网络,由卷积层、池化层、全连接层组成。其中卷积层与池化层配合,组成多个卷积组,逐层提取特征,最终通过若干个全连接层完成分类。卷积层完成的操作,可以认为是受局部感受野概念的启发,而池化层,主要是为了降低数据维度。综合起来说,CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

CNN最大的特点就是稀疏连接、权值共享以降低网络参数的数量级,那为什么要降低参数量级?如果我们使用传统神经网络方式,对一张图片进行分类,那么,我们把图片的每个像素都连接到隐藏层节点上,那么对于一张1000x1000像素的图片,如果我们有1M隐藏层单元,那么一共有10^12个参数,这显然是不能接受的。(如左图所示)

但是在CNN里,可以大大减少参数个数,也就是说,我们用10x10这样大小的过滤器就能表示边缘等底层特征图像上不同小片段,以及不同图像上的小片段的特征是类似的,也就是说,我们能用同样的一组分类器来描述各种各样不同的图像如右图所示,我们用100个10x10的小过滤器,就能够描述整幅图片上的底层特征。

因此,CNN具有一些传统技术所没有的优点:良好的容错能力、并行处理能力和自学习能力,可处理环境信息复杂,背景知识不清楚,推理规则不明确情况下的问题,允许样品有较大的缺损、畸变,运行速度快,自适应性能好,具有较高的分辨率。它是通过结构重组和减少权值将特征抽取功能融合进多层感知器,省略识别前复杂的图像特征抽取过程。CNN的泛化能力要显著优于其它方法,已被应用于模式分类,物体检测和物体识别等方面。

2、CNN的不足和胶囊网络的提出

2.1CNN的不足

CNN的优点很多,但在实际的应用中也暴露出一些不足:

(1)图像迁移后的一致性识别能力低,这里的图像迁移是指CNN对于左右的平移,旋转和加上边框等难以察觉出一致性,这就造成了CNN所需的训练集很大,数据增强技术虽然有用,但提升有限;

(2)CNN的问题是其神经元之间都是平等的,没有内部的组织结构,这导致无法保证在不同位置,不同角度下对同一个物品做出相同的识别,也无法提取不同卷积核得出的子结构之间的相互关系。

上图会被CNN看成是一张脸,这是因为CNN识别脸的时候,是识别脸的几个组成部分,下图中的确有两个眼睛,有鼻子,有嘴,虽然其位置不对,这对于CNN来说就够了,CNN是不会注意子结构之间关系的。

2.2胶囊网络的提出

为解决上述问题,hiton提出capsule网络,那么胶囊网络究竟是什么?

在计算机图形学中,表达一个场景都是从抽象的表示开始。如上图所示位置x=20和y=30的矩形旋转16°,位置x=24,y=25的三角形旋转65°,即每个对象类型都有不同的实例化参数,然后你调用一些渲染函数得到一幅图像。下图是上图抽象表示的一个逆向过程,从一个图像开始,试着找出它包含的对象以及它们的实例化参数,这即是胶囊网络的工作任务。一个胶囊网络基本上是一个试图执行反向图形解析的神经网络,它由许多胶囊组成,一个胶囊是一个函数,它试图在给特定位置的目标预测它的存在性以及实例化参数,因此,capsule可以看做是一些神经元的集合,这些神经元都是某一类别实体的激活的向量。向量的长度表示实体存在概率,向量的方向表示所代表向量的实例化参数。

下面以几个简单的例子来说明胶囊网络的工作方式:假设我们训练一个识别数字2的网络,我们首先做的是在每一层训练一些胶囊(即一组相对独立的神经元),每一个胶囊只负责图形中的一个子结构,例如图中的三个胶囊,分别识别横线,竖线和锐角,每个胶囊给出图形中每个位置出现自己负责识别的特征的概率(intensity),之后再通过一个编码器,综合每一个胶囊给出的在各个位置的强度信息,最终得到经过重构后的图像。

以识别数字7为例,下图中的第一行是传统的神经元,会给出对应图形是不是7的概率,但这个神经网络却无法识别第三行的数字。一个包含两个神经元的胶囊可以一个识别图形的翻转情况,一个识别具体的形状。不管图形是第二行那样竖直站立的,还是像第三行那样歪倒的,胶囊网络都可以正确的识别。

3、小结

(1)CNN具有良好的容错、并行处理和自学习能力,可处理环境信息复杂,背景知识不清楚,推理规则不明确情况下的问题,允许样品有较大的缺损、畸变,运行速度快,自适应性能好,但图像迁移后的一致性识别能力低,不会注意子结构之间的关系。

(2)胶囊网络神经元的输出从一个标量变成了一组向量,这如同让网络流动起来了。每一个识别子结构的胶囊,使原始图形中隐藏的信息在bits数变小的情况下实现了高度的保真。

(3)CNN和胶囊神经网络并不是互斥的,网络的底层也可以是卷积式的,毕竟胶囊网络善于的是在已抽象信息中用更少的比特做到高保真的重述。

参考资料:

https://jhui.github.io/2017/11/03/Dynamic-Routing-Between-Capsules/

https://www.cnblogs.com/alexcai/p/5506806.html

http://www.sohu.com/a/220730417_314987

https://arxiv.org/abs/1710.09829

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

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券