Capsule Architecture as a Discri
论文:CAPSULE ARCHITECTURE AS A DISCRIMINATOR IN GENERATIVE ADVERSARIAL NETWORKS -- 胶囊结构作为GAN中的鉴别器--硕士论文
)
代码:https://github.com/gusgad/capsule-GAN
ABSTRACT
现代卷积网络擅长于检测场景中的物体,但很难识别物体之间的相对位置。这暴露了模型的某些限制,比如失去了特性之间的空间关系。最近解决这一问题的办法是依靠“胶囊”- -一个logistic unit,代表物体的存在以及该实体与姿态之间的关系。与此同时,本文重点研究将胶囊架构融入到生成对抗网络的鉴别器中,代替传统的卷积,能够得到更好分类损失和更快的收敛。我们描述了胶囊的结构,与原论文的主要区别,并对结果进行了定性和定量的评价。最后,我们提出了可能的改进和想法值得研究。
简而言之,CNNs可以检测图像中是否存在特征,并通过向前输入这些特征的知识来预测物体是否存在。然而,CNNs的问题在于,它们只能检测特征的存在 。一张扭曲的人脸图像,如果包含一个错位的眼睛、鼻子和耳朵,仍然会被认为是一张脸,因为它包含了所有必要的特征。CNN擅长检测特征,然而,在探索特征之间的空间联系方面却不太可行,比如视点、大小或方向。CNN的这一缺点意味着--我们没有数据的内部表示,我们的主要学习是源于数据本身。例如,如果我们希望能够识别众多视角的汽车,我们就需要在训练集中有这些不同视角的汽车图像,因为我们没有将之前的几何关系知识编码到网络中。
关于cnn需要理解的一件重要的事情是,在整个训练过程中,高级别的特征倾向于将低级别的特征合并为一个加权和:在传递到激活非线性之前,前一层神经元的激活量乘以下一层神经元的权值并相加。这个策略在组成更高级别特征的更简单的特征之间不包含姿态连接。CNN处理这个问题的方法是利用Max Pooling或具有更大步幅的卷积层,减少了流经网络的信息的空间大小,因此增加了更高层次的 "视野",从而使它们能够在输入图像的更大区域内检测高阶特征。
除了减少特征向量的大小,Max Pooling背后还有一些其他的想法。通过只考虑最大值,我们基本上只对某个特征是否存在于某个窗口感兴趣,但我们一般不会真正关心具体位置。如果我们有一个卷积滤波器,它可以检测边缘,一个边缘会给这个滤波器带来很高的响应,而Max Pooling只在边缘存在的情况下保留信息,并扔掉 "不必要 "的信息,这些信息还包括某些特征的位置和空间关系。
采用Max Pooling的方法对卷积网络产生了巨大的影响,并且效果惊人,在众多领域完成了超人的表现,然而它却在这一过程中丢失了宝贵的信息。Hinton自己也表示,Max Pooling效果如此之好是一个重大的疏忽:"卷积神经网络中使用的池化操作是一个很大的错误,它的效果如此之好是一场灾难。" 此外Max Pooling按照Hinton的说法,是一种没有经过改良的方式,最大限度地重定向信息,还有其他的重定向方式,比直接的Max Pooling更复杂。
如果我们想到计算机图形学,Capsules可以通过组合几个矩阵来模拟数据的内部层次表示,来模拟对象的某些部分的关系。从生物学的角度来看,每当我们用大脑识别一个物体时,我们就会发挥出某种逆向图形的解决方案;从眼睛接收到的视觉信息中,它们会解构出周围世界的层次表征,并试图将其与大脑中已经学习到的模式和关系收起来进行匹配。这就是识别的方式。而关键的观点是,物体在大脑中的表征并不取决于视角。它只需要在NN中让内向的表征发生。
GANs成功地生成了图像,并对输入数据的属性分布进行了建模,还能应用于不同的任务,从风格转换到图像翻译,受此激励,我们将Capsule架构整合到GAN的判别器中,因此改变了整体的直觉,以更稳健的方式捕捉检测到的特征的等价性。在下面的章节中,我们使用MNIST和CIFAR-10数据集来训练和评估我们的模型。
INCORPORATING A CAPSULE NETWORK IN GENERATIVE ADVERSARIAL NETWORKS
生成对抗网络(GAN)是在两个神经网络-生成模型G和判别模型D之间建立最小最大对抗博弈的框架。GAN学会从高维分布中合成新样本,方法是将从鉴别器网络获得的潜在空间中提取的样本通过生成型网络进行传递。
为了充分利用GAN的强大功能,我们使用DCGAN架构将其与胶囊层结合在一起,胶囊层适合与卷积网络一起工作,而不是像简单GAN中那样只与完全连接的层一起工作。
在本文中,我们实际上将DCGAN的鉴别器部分替换为胶囊网络,并在下一节中对其进行详细描述。
METHODOLOGY
通常,GANs通常用于为其他基于图像的应用,如样式转移、假造但类似的数据生成、图像到图像的翻译等,对图像数据和/或相关属性的分布进行建模。所有这些应用都使用GAN架构的一些修改版本。因此,我们的生成器和判别器已经传统地按照DCGAN准则被建模为深度CNNs。由於CapsNets比CNN更強的直覺性和更優越的性能,我們設計了CapsuleGAN框架,在GAN判別器中加入了capsule-layer而不是卷积层,從根本上執行兩類分類任務。
该模型主要由一个DCGAN和一个内置的胶囊架构的判别器组成,它拥有一个分类函数,用于确定给定图像的真假标签,还有一个生成器部分保持不变。
DISCRIMINATOR STRUCTURE
正如我们前面提到的,鉴别器仅包含从原始论文中借用的Capsule网络,并对它进行了一些小的附加修改。本节介绍了所有更改。
该模型我们分别从MNIST和CIFAR-10数据集提供一个28x28像素的单色通道和后来的32x32像素的3色通道图像作为输入。一个简单的卷积层具有256个滤波器,9个像素的内核大小和跨步值为1作为第一层。这层将像素强度转换为局部特征检测器的活动,然后作为PrimaryCaps的输入。在很多现代论文中,这第一层往往具有很大的滤波器尺寸。原因是它允许我们从现在开始立即增加所有连续层的感受野。根据最初的动态路由论文,这层从图像中提取低级信息,我们将其传递给Capsule网络。然而,与论文不同的是,我们在第一卷积层的基础上叠加了额外的Leaky ReLU激活和批量归一化。在初始卷积中引入额外的激活函数的原因是为了让判别器尽可能的表现良好,而像Leaky ReLU这样的激活函数不仅会引入一个非线性,而且会通过允许一个小的负斜率来照顾消失梯度。
Capsule 的主要架构从这里开始,因为它首先定义了PrimaryCaps 层。PrimaryCaps是由一组卷积、reshape和squashing函数构成的。PrimaryCaps的最底层是一个卷积,它的滤镜数量与上一层相同,即256个,这实际上表示一个由32个特征图组成的8D向量。接下来应用reshape函数,因为它将把所有输出神经元分割成8D向量。在这个阶段初级胶囊有激活的集合,它表示数字的方向,而强度的矢量,它表示数字的存在。最后,一个squashing函数和一个batchnorm(不存在于原来的论文)被应用到PrimaryCaps。Batchnorm显示,通过将每个单元的输入归一化,使其均值和单位方差为零,从而稳定学习。这有助于解决由于初始化不良而产生的训练问题,并帮助更深层模型的梯度流动。然而,直接将 batchnorm 应用于内部 Primary 和 Digit 层,会导致样本振荡和模型不稳定。通过不将 batchnorm 应用于 Capsules 的内部,而是像上面的案例一样应用于输出,可以避免这种情况。
DigitCaps是架构的第二部分,也是最重要的部分,因为它在最后的步骤上实现了我们在第4章提到的 "协议路由 "算法。与PrimaryCaps相比,DigitCaps的修改和功能与原论文有些不同。主要的区别是,我们用另一个Leaky ReLU激活代替了每次路由迭代结束时的压制函数,否则会带来生成图像的伪影。这种特殊的解决方案从计算的角度来看是一样的,但尽管如此,这种实现可能会以某种方式导致较弱的等价性。
为了将值从PrimaryCaps传递到DigitCaps,我们将它们扁平化。原因是,我们使用Keras Dense层作为值/权重持有者,它只能接收扁平化的神经元。这是与原论文最不一样的部分--DigitCaps不是矢量化的,而是以扁平化神经元的集合来表示。然而,所有的数学运算都和在矢量上完成的方式一样。
扁平化的神经元会被传递到一个Keras Dense层中,作为预测向量。预测向量本身由160个神经元组成,表示为10个胶囊和16个向量的相乘。我们还将Keras Dense层参数如内核初始化器设置为何开明初始化器,偏置初始化器设置为零。接下来,预测向量被传递到一个3个长度的循环中,其中C耦合系数,它是上一层偏置权重上的 (这将确保下面一层中的所有胶囊的总和为1)和 .每个乘法之后都会有LeakyReLU激活。最后一层决定图像在判别器中的真实性得分,是一个Keras Dense层,它的值为单个神经元和Sigmod。
GENERATOR STRUCTURE
DCGAN的生成器体系结构主要包括反卷积层。 GAN的第一层采用均匀的噪声分布Z作为输入,由于它只是矩阵乘法,因此可以称为完全连接,但是结果被重塑为二维张量并用作卷积堆栈的起点。在我们的例子中,噪声Z的特定长度为100
位于输入噪声之上的第二层是完全连接的8192神经元层。它没有相关的激活功能,而是充当表示层,以后我们可以从中传递信息。所有后续层都是组卷积,批处理规范,ReLU激活和2D上采样。 2D上采样双线性重复行和列,以增加图像大小
显然,我们的任务是使Generator的输出与Discriminator的输入大小相对应。为此,发生器架构必须能够将噪声从8192调整为28x28或32x32像素。最后,我们将tanh激活添加到最终的32x32x3卷积中,以产生可行的鉴别结果。