雷锋网按:本文为雷锋字幕组编译的技术博客,原标题Capsule Neural Networks: The Next Neural Networks? Part 1: CNNs and their problems.,作者为Tomer Eldor。
翻译 | 陈晓璇 刘宁 魏洪贵 整理 | 凡江
“普通的”卷积神经网络是当前机器学习领域最热的一个概念, 但是它也有一些问题,例如不能识别空间关系,比如说图片或其他数据里不同部分之间的相对位置关系。Hinton最近提出的胶囊神经网络也许能帮助我们解决包括这一问题和其他问题。
这篇文章是胶囊神经网络系列教程的一部分。作为第一篇文章,将介绍常规(卷积)神经网络以及它的一些问题。
神经网络可能是当下机器学习领域最热的部分。 近几年,神经网络得到众多开发者不断的改善,也更方便使用。但是,这些改进通常都是一些简单的修改, 例如增加一些层,或者简单的改进激活函数,但是并没有引进全新的架构或思路。Geoffery Hinton 是包括神经网络在内的很多广泛使用的深度学习算法的创始人之一,考虑到他有着神经科学和人工智能的双重背景,取得这些成就也就不会太让人意外。
2017年10月底, Geoffrey Hinton, Sara Sabour, 和 Nicholas Frosst 在Google Brain发表了题为“Dynamic Routing Between Capsules(胶囊间的动态路由)”的论文,给神经网络领域带来了一些新的东西。这很令人兴奋,因为这样大的创新已经很久没人做到了,围绕它很可能有更多的研究点被激发出来。
基点:卷积神经网络
卷积神经网络 (CNNs) 是一种很灵活的机器学习模型,它的设计灵感来源于人脑的处理问题的方式。
神经网络通过整合多层“神经元”来将原始数据处理成特定的模式或对象。
卷积神经网络的一个主要构建块是“卷积层”(名字的由来)。它有什么作用? 它将前一层的原始数据作为输入,找到其中蕴含的模式信息,传到下一层来更好地理解更大的图片。
如果你刚接触神经网络,想要理解它,我建议你:
1. 看看 3Blue1Brown 的视频,很生动形象。
2. 有关文字和视频方面更细节的教程,可以查看beginner’s blogpost
3. 如果你有能力处理更细节的数学问题,你可以看看斯坦福CS231的课程。
如果你以上几点都没有做到,可以通过读下面的简介后再继续。
CNNs的灵感来源
我们从头说起。 神经网络将原始数据作为输入。假设有一只手绘的小狗,你第一眼看到它时,大脑会自动将它识别为一只狗。但是对计算机来说,这张图片仅仅是一个关于有很多数字的数组。数组中的数值代表不同颜色通道的像素强度。如果是只有黑白的图片,我们只需要用一个表示像素灰度值的数组来表示图片即可。
用于网络识别的示例。来源: The Sun, image: lovable dog rescue
我们的目标是什么? 是让网络在视觉层面搞清图片里有什么(这个数字序列代表着什么)。一种方式是自下而上的方式: 让网络从聚焦一小部分像素开始,理解它们代表什么(例如一些线段和曲线:像这张图片中狗的耳朵的曲线,瞳孔的圆弧), 然后将这些线组合起来,来描述更大的对象(例如耳朵,鼻子,嘴,眼睛),同样的去学习这些部分组成的更大的对象 (例如,脸,腿,尾巴),最终使网络对狗做出整体的理解。
网络是通过层之间数据的从头到尾的传递实现这一功能的。
如果你不了解这个过程,可以看看我的关于CNNs结构的总结: 理解卷积神经网络
万一你没读过,而且不了解这些,下面是从我那些总结里提炼出来更简短的总结。
关于卷积神经网络的理解
-
卷积层;第一层卷积层将图片映射到较低纬度的空间— 归纳出一组像素点(例如5×5的像素块)的信息—它是垂直的还是水平的线?是什么形状的曲线? 这个过程首先是对应元素相乘,然后将这些乘积相加为一个数,即得到filter输出。
-
这就引出了神经元或者说卷积核的概念。每个卷积核都会对特定的模式(竖直线?水平线?等等)做出反应。 从第一层的像素传到神经元时,会激活和它的结构相匹配的神经元,依据就是这个像素块和卷积核的相似程度。
-
激活函数(通常用 “ReLU”)层— 每个卷积层后,都要添加一个非线性层 (又叫激活函数层), 从而给系统引入非线性,使得系统能学习到数据间的非线性关系。ReLU 是一个很简单的激活函数:它把负输入置零0,正输入保持原值。
-
池化层;这层被用来减少冗余信息, 总结我们关于一个区域已知的信息,并进一步精炼这些信息。例如,“MaxPooling”方法就是选取一组数的最大值 — —例如,电脑会认为 “在这个5×5的像素块中, 影响最大的是255这个像素点. ”尽管不能确定这个值是哪个像素点,但是确切位置并没有那么重要,知道它大概位置就好了。 ( 注意:这个方法并不好。会造成信息的丢失。胶囊网络就没采用这个操作,这是一个重要的进步。)
-
Dropout 层;这一层通过随机的将一些激活了的神经元置零来实现“dropout”。这么做会使网络更加健壮(有点类似于你吃了不干净的东西,却帮助强化了你的免疫系统 这么做之后网络对一些小的改变也能免疫了) 还会减小过拟合。 只有训练时会使用Dropout。
-
最后的全连接层;对于分类问题,我们希望最后一层不同的神经元代表不同类别。这一层关注前一层的输出,(即高阶特征的激活图)并确定出哪些特征与某个类相关。
-
SoftMax 层;有时加上这一层来表示每一类的输出,并把这个输出传递给损失函数。 Softmax 代表了不同类输出的概率分布。
通常,有更多的提供非线性和保留维度(就像在边缘周围填充0)的网络层,它们能够帮助改善神经网络的鲁棒性以及防止过度拟合。但是接下来有一些基本概念你需要理解。
现在,重要的一点是,这些层只能是有序列的联结在一起。这和胶囊神经网络的结构相反。
神经网络结构,来自谷歌的文章,是Szegedy,Toshev&Erhan提出的神经网络
卷积神经网络有什么问题?
如果您对此感兴趣,请观看Hinton的课,里面讲解的就是这个问题。下面是胶囊神经网络能够改善这些问题的几个要点:
Hinton说,胶囊神经网络拥有很少层级的分支结构(网络由以神经元组成的层组成,就是这样),并且这使我们需要将每一层的神经元分组到“胶囊”里面,这种“胶囊”就像小模块,在小模块里面会进行大量的计算,然后输出一个汇总结果。
问题一:“池化”使信息丢失
CNN运用“池化”或与之等效的方法来“总结”小区域中发生的情况,并理解图像中越来越大的块。这是一个让CNN网络运作良好的解决方案之一,但与此同时它会丢失宝贵的信息。
胶囊神经网络会计算一个小特征和大特征的姿态关系(跨越边界和旋转)。
这些信息的丢失会造成空间信息的丢失。
问题2:CNN没有考虑图像的每一部分之间的空间关系。也就是说,它们也对于物体的方向过于敏感了
二次抽样(和池化)使图片失去了精确的空间关系,例如鼻子和嘴巴。身份特性的识别需要精确的空间关系。——Hinton,2012,在演讲中
CNN不会考虑底层对象之间的空间关系。通过这些平层中的神经元将它们看到的物体照亮,它们识别到了那个物体呈现出的形态。但是它们会传递到其他激活和合并图层,并传递到下一层神经元(过滤器),而不会意识到我们在该单层中识别的这些对象之间的关系。
他们只是说明他们的存在。
所以一个(简单的)神经网络能够将巴勃罗和毕加索归类为小狗,“小狗 – 斗牛梗混合”也能同样的被很好的识别。
普通的(卷积)神经网络能够将这两只可爱的狗视为同类型的狗脸,因为它并不介关心组成狗脸的元素在空间中相对于彼此的位置。毕加索(左边的狗)将幸运的不会被模型分错,但我们真的想要有一个模型可以认识到,这不是一个常见的柯基犬 – 斗牛犬混合狗的例子。图片来源:爱犬救援
神经网络会将这两只小狗是被为典型“小狗 – 斗牛梗混合”,因为他们的图像特征都符合面部卷积层的情况,例如:
if: (2 eyes & pitbullmix_snout
+ pitbullmix_wet_nose & mouth)
then: pitbullmix_face
不正确地激活pitbullmix_face的神经元,而不是像下面这样的东西:
if: 2 eyes
& BELOW: pitbullmix_snout
& pitbullmix_wet_nose
& BELOW: mouth
then: pitbullmix_face
相反地,胶囊神经网络反映方向信息和内容,并连接神经元与胶囊以推断空间关系并保留姿势信息。
缺少将胶囊分组的呈现、姿态计算和胶囊之间的重叠检查,会导致下一个问题。
问题3:CNN不能将对几何关系的理解传递到新的视点上
为了正确给图像分类,这使他们对原始图像更加敏感。
CNN擅长解决那些与他们训练的模型相似的问题,它可以把图像或者目标物体分类的非常好。
但当物件有一些旋转角度时,尤其是3D的情况,CNN则识别不出来。
一种解决方案是人为地创建倾斜展示的图像或图像组,并将它们添加到“训练”集中。 但是,这样仍然缺乏一个更为稳健的结构。
对不变视点的空间关系姿态进行编码
所以,我们应该怎样编码3D物体之间的空间关系呢?
Hinton从一个已经被解决的问题领域——3D 计算机图形学中取得灵感。
在3D图形中,姿态矩阵是表示对象之间关系的特殊技术。 姿势本质上是代表平移加旋转的矩阵。 现在我们得到了它。 我们可以使用子对象之间的姿态关系保留空间关系信息; 测量物体之间的相对旋转和平移作为4D姿态矩阵。
这对于理解胶囊之间的动态路径选择很重要。
现在我们知道了神经网络的基础以及空间识别的问题,我们可以继续了解最近发展出的解决方式:胶囊神经网络。这将是我们下一篇的主题。请继续收看!
更多文章,关注雷锋网 雷锋网(公众号:雷锋网)雷锋网
添加雷锋字幕组微信号(leiphonefansub)为好友
备注「我要加入」,To be an AI Volunteer !
。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/129555.html