机器学习之Transforming Auto-encoders

来源:互联网 发布:obs点歌软件 编辑:程序博客网 时间:2024/05/21 17:26


   本文不是原论文的直接翻译,只是翻译了核心部分,Instruction 和Discussion没有翻译

摘要:

   当前已经实现的从图像中识别出物体的方法表现的非常糟糕,这些方法的智能程度很难说已经达到了让人们满意的地步。一些比较好的计算机视觉系统使用梯度导向的直方图作为“视觉单词”,并且通过使用简单的空间范式来构造这些元素的分布模型。这些方法能够在不知道图像中物体的具体位置的情况下准确识别出它们,利用这种能力,人类可以探测出大脑的损伤部分。最好的人工神经网络使用手动编码,共享权重的策略来减少自由参数的个数,并且它们通过抽样同一核心的转化副本的局部活动池实现了局部不变性。这种处理由于视点的变化而引起的图像的变化的方法比起没有方法要好的多得多,但是显然它还是不能胜任类似于面部识别之类的任务,像面部识别,他就要求必须要了解面部高层部分的之间的准确空间关系,比如说鼻子是在嘴巴的上方而不是在嘴巴下方的这种空间位置关系。在经过对回旋神经网络几个阶段的抽样后,高层对象的位置表现出极大的不确定性。这个现象通常被认为是一个比较理想的属性,因为它很好的解释了在超出一些有限范围后,高层对象所表现出来的位置具有不变性,但是这种方法也是不可能准确地计算出物体的空间关系的。

  这篇论文说明了回旋神经网络在他们想要获取什么的问题上被错误地引导了。人们不在致力于使用单一标量的输出结果来概括重复特点探测器的局部池的视点不变性,取而代之的是人工神经网络应当使用局部容器。这些局部容器实现了对输入的一些十分复杂的内部计算,并且把这些计算结果封装成了一个具有高度信息化输出的向量。基于可见条件有限域或者变形,每一个容器都可以识别出一个隐式定义的可见视觉实体,同时输出实体出现在它的有限域之中的概率和一个“实例化参数”的集合,这些实例化参数的集合可能会包含视觉实体的位置,明亮程度和变换等信息,这些都与每个实体隐式定义的便准版本有关。当容器(capsule)正确工作的情况下,视觉实体出现的概率是局部不变的。当实体从可能的外观流行移动过后,概率确实不发生变化。实例化参数,不管怎样,是“等变的”。当可见条件改变,同时视觉实体移动到表观流行,实例化参数也改变相应的量值,因为他们代表着实体表观流形的内在坐标。

输出显式实例化参数的Capsules的主要优势之一是它提供了一个通过部分识别出总体的简单方法。如果一个capsule能够学会输出一个向量中的视觉实体的位置,而这个位置是与计算机图形学中的位置的自然描述是线性相关的,这里有一个简单的高可选性的实验来测试是否AB两个活动的capsules代表的视觉实体之间有足够强的空间关系来激活更高层,或者是更高级别的capsule C。假设capsule A 的输出位置用矩阵TA表示,TA表示的是把标准视觉实体A转化成为capsule A建立的事实实体的一个坐标转化矩阵。如果我们给矩阵TA乘以一个“部分-整体”的坐标转化矩阵TACTAC是一个描述规范视觉实体A与规范视觉实体C之间相关关系的矩阵,通过给矩阵TA乘以一个“部分-整体”的坐标转化矩阵TAc,我们就可以得出TC矩阵的一个预测版本。 TA*TAC=TC1  相似的,我们可以用TBTBC来获得对TC矩阵的另外一个预测TC2TB*TBC=TC2。如果说TC1TC2这两个矩阵能够完美的匹配,也就是说这两个矩阵是等价的,那么由capsule A capsule B建立起的实例就拥有激活capsuleC的正确的空间关系。对TC矩阵的预测结果的平均水平进行分析后,作者发现用C表示的视觉实体能够被转化为多大是与规范视觉实体C有着紧密的关系的。举个例子,如果用大A表示mouth,用大B表示nose,那么大A和大B他们各自都可以得到一个对face的位置的预测。如果这两个预测结果相一致(agree),那么也就说明mouthnose一定是有着正确的空间关系,这样才能构成整个脸部。这种实现形状识别的方法的一个比较有趣的特点是它把“部分-整体”关系是视点不变性的这样的一个知识用权重矩阵描述,而对于当前观察的物体以及物体的局部的实例化参数的视点等变性的知识是用神经活动来描述的。

为了让这样的一个部分-整体的层次结构更加抽象化,以便计算机能够比较容易的实现它,在层次结构中实现了最低层部分的“capsules”需要从像素强度中抽象出显示的位置参数。这篇论文表明如果神经网络可以直接,非视觉的利用这些转换,那么capsules能够非常容易的从转化过的图像对中学习。举个例子,在人类中,如果把目光在注视点之间快速短暂的扫视,就会使眼膜图像能够清晰的转化,并且视觉皮层就可以非可视的获得眼球移动的信息。

 2. Capsules的第一级学习

 一旦像素的强度已经被转为一系列活动的输出,那么每一个第一级capsule就会生成它的视觉实体的位置的显式描述,可见通过使用活动的,更低级的capsules预测位置的一些协议,我们能够识别出体积更大更复杂的视觉实体。但是这个第一级 capsules从何而来呢?一个人工神经网络怎样才能学会把用像素强度表示的语言转化成描述位置参数的语言呢?这些问题已经被这篇论文解决了并且作者提出并证明了一个简单到让人惊讶的答案,作者称之为“Transforming auto-encoder”。作者使用简单的 2-D图像和仅仅使用xy位置来表示capsules的位置输出,作者打算以后将这一方法推广到更复杂的其他维度。

  看一下图1所示的前馈神经网络。该图所示的网络是一个确定性的网络,一旦它已经学习过了,它就会把输入图像和预期的移动x和△y作为输入,然后输出移动过后的图像。该网络由一批独立的capsules组成,这些capsules仅仅会在当它们需要协同合作产生预期的移动的图像时才会在最后一层有交互。每一个capsule都有它自己的逻辑“识别单元”,这些识别单元作为一个隐藏层来计算出XYP三个参数。XYP这三个参数将会由capsule发送到视觉系统的更高层。P表示的是capsules的视觉实体出现在输入图像中的可能性。Capsules除了有“识别单元”外还有它自己的“生成单元”,生成单元用来计算capsules对转化的图像的影响。生成单元的输入的是X+XY+Y,并且capsule的生成单元产生的对输出图像的贡献还要乘以视觉实体出现在输入图像中的概率P,因此那些无效的,没有移动的capsules对结果不产生影响。

            

  为了能够让自动编码转化器产生正确的输出图像,由每一个活动的capsules所计算出来的X值和Y值都必须保持和capsules的视觉实体的实际的X值和Y值相一致,这一条件是至关重要和必不可少的,我们不必首先知道视觉实体或者它的坐标框架的边缘部分。

  为了简单的说明作者提出的转换自动编码器的生产效率,作者的训练了一个有30capsules的网络,每一个capsule中都由10个识别单元和20个产生单元组成。每一个capsule能够看见一个MNIST位图像的全部。输入和输出图像都被随机的在XY方向上移动-2-1,0+1+2个像素,并且把XY方向上的移动量△X和△Y作为转化自动编码器的附加的输入。图2表明当输入图像移动后,capsules也确实输出了按相同方式移动后的XY值。图2也表明capsules通过高度局部化的不因投影而变化的区域来学习生成单元。识别单元的接收域更加嘈杂并且它的局部化也不是很明显。

 

       

2.1更复杂的2-D转化

  如果每一个capsule被分配了9个实值的输出结果,这9个值放在3X3的矩阵A中,一个转化自动编码器经过训练后能够预测一个全2-D的放射变换,包括转换,旋转,缩放和剪切。A的已知转换矩阵T被应用于capsule A的输出,以此来得到矩阵TA。当预测目标输出图像时TA矩阵中的元素作为生成单元的输入。

2.23-D视点中模型的变化。

     

  使用矩阵相乘来建造视点影响模型的一个主要的潜在优势是当它处理3-D视点时会非常的容易。作者使用计算机图形学来生成不同类型的汽车的不同视点的立体图像,如图4所示。转化自动编码器由900capsules组成,每一个capsules都有两级的纠正线性识别单元。这些capsules拥有11X11像素接收域,该接收域被安排在96X96图像上的一个30X30的网格中,相邻的capsule之间间隔3个像素。没有共享权重。每一个capsule从它的有64个识别单元的一级产生出一个3X3的矩阵和它隐式定义的特点出现的概率,其中这个3X3的矩阵代表了被用来探测的特点的3-D定位。,然后它乘以一个源到目标图像的实际转化矩阵,接着在把结果输入到capsule的那个拥有128生成纠正线性单元的一级中去。生成单元的活动乘以capsule的特征出现的概率的结果被用来增加以capsule的可接受域的中心为中心的重构图像的22x22补丁的像素强度。由于每一个输出的数据都是由成对的立体图像组成的,所以每一个capsule必须查看立体对中的每一个成员的11X11补丁,与此同时也要对每一个成员的图像重构一个22X22大小的补丁。

0 0
原创粉丝点击