2017年,Sabour、Frosst、Hinton正式提出了胶囊网络,胶囊网络在MNIST数据集上取得了比CNN(卷积神经网络)更好的表现。那么,当胶囊网络作为其他更复杂的网络架构的组件,替换原本的CNN组件时,是否同样能有更好的表现呢?美国科学信息研究所(ISI)的研究人员最近尝试用胶囊网络替换CNN作为GAN(生成对抗网络)的判别网络,在MNIST数据集上取得了比卷积GAN更好的表现。
GAN(对抗生成网络)通常由两部分组成:
生成网络(generator) 尝试将从先验分布抽取的样本转换为维度更高、更复杂的数据分布的样本
判别网络(discriminator) 判定给定的样本是真实样本还是来自生成网络分布的样本
GAN的训练过程即为训练两部分进行对抗的过程。
GAN在建模基于真实数据的高度复杂的分布(特别是图像)方面表现出色,然而,传统的基于前馈多层感知器的GAN的训练极不稳定,同时很容易碰到模型崩塌的问题。
有鉴于此,Radford等在2016年提出了DCGAN(Deep Convolutional GAN,深度卷积生成对抗网络),基于CNN(GAN)构建GAN。DCGAN提出后,很快成为GAN的主流变体。
Sabour、Frosst、Hinton在2017年发表的Dynamic routing between capsules(囊间动态路由)一文正式提出了胶囊网络(Capsule Network,简写为CapsNet),一个超越CNN的新架构。
另一方面,Im等在2016年(晚于DCGAN),提出了GRAN(Generative Recurrent Adversarial Networks,生成循环对抗网络),使用RNN(Recurrent Neural Networks,循环神经网络)替代CNN作为GAN的生成网络。Odena等则在2017年提议让GAN中的判别网络同时作为分类生成图像的分类器。
受这些工作的启发,美国科学信息研究所(ISI)的研究人员Ayush Jaiswal、Wael AbdAlmageed、Premkumar Natarajan在2017年2月中旬提出了CapsuleGAN模型,使用胶囊网络作为GAN的判别网络。
CapsuleGAN的架构很简单,就是用胶囊网络替换了GAN的判别网络。其中有三点值得一提。
判别网络最后一层由单一胶囊组成
首先,一般的胶囊网络用于分类,因此最后一个胶囊层由n(n对应于类别数目)个胶囊组成。而CapsuleGAN的胶囊网络用于判别输入的真假,因此CapsuleGAN的胶囊网络最后一层由单一胶囊组成,胶囊输出向量的长度表示判别网络的输入是真实图像还是生成图像的概率。
压低胶囊网络参数
其次,一般而言,胶囊网络的参数数量巨大,这是因为:
每个胶囊输出的是向量(而不是标量)。
每个胶囊具有对应上一层的所有胶囊的额外参数,这样基于合意的囊间路由算法才能工作。
然而,CapsuleGAN中的胶囊网络的参数数量却被压低了。其原因为:
正如其他GAN架构一样,判别网络很容易就能取得比生成网络好很多的表现(就像在艺术品行业中,识别赝品要比伪造赝品容易),因此,往往需要削弱判别网络,以免生成网络彻底被判别网络击垮,失去了成长起来的机会。事实上,DCGAN之类的流行架构中,充当判别网络的卷积网络也往往是相对较浅的神经网络,卷积核中尺寸相对较大的过滤器的数量也比较少。
当前的动态路由算法实现运行起来比较慢。
新目标函数
最后,研究人员在训练CapsuleGAN模型时使用了囊间动态路由论文中提到的边缘损失函数LM,而不是传统的二元交叉熵损失函数,因为边缘损失函数在训练时的表现较好。
相应地,研究人员提出了新的目标函数:
研究人员在MNIST数据集(28x28的灰阶手写数字图像)对CapsuleGAN的表现作了定性和定量的评估。
图像质量
从上图我们可以看到,GAN和CapsuleGAN生成的图像质量差不多。不过,看起来GAN生成的数字类别没有CapsuleGAN生成的那么多样化。
生成对抗指标
Im等在2016年提出了生成对抗指标(generative adversarial metric,GAM)。GAM的基本思路是让生成网络和竞争模型的判别网络对抗,也就是说,给定两个GAN模型M1 = (G1, D1)和M2 = (G2, D2),让G1与D2对抗,同时让G2与D1对抗。为了比较两个模型的表现,我们需要比较两者在识别真实样本和生成样本上的表现,分别用rtest和rsamples表示。
注意,上式中的A
表示计算的是精确度(accuracy)而不是错误率,这是为了避免数值问题。
因此,CapsuleGAN需要满足以下两个条件,才算击败了GAN:
rtest ~= 1,也就是说,CapsuleGAN和GAN的判别网络在识别真实样本上的表现差不多。否则,如果两者在识别真实样本上的表现差异很多,那骗过识别真实样本能力较低的竞争模型的判别网络,并不能说明该模型的生成网络能力很强。
rsamples < 1,也就是说,相比CapsuleGAN识别GAN生成的样本,GAN更容易被CapsuleGAN生成的样本所迷惑。
在研究人员的试验中,rsamples = 0.79,rtest = 1。因此,就指标而言,CapsuleGAN的表现比基于卷积的GAN要好。
半监督分类
研究人员评估了卷积GAN和CapsuleGAN在半监督MNIST数字分类问题上的表现。在试验中,研究人员同时使用GAN和CapsuleGAN随机生成了50000张图像。研究人员将生成图像作为未标签样本,同时加上了n张真实标注的样本,其中n ∈ {100, 1000, 10000}。下表显示了评估结果:
从上表可以看到,在n的各个测试值下,CapsuleGAN的表现均优于GAN。
研究人员此次在MNIST数据集上试验了CapsuleGAN的表现,以后计划进一步在更复杂的数据集(例如CIFAR-109)上试验CapsuleGAN的表现。
如前所述,CapsuleGAN的目标函数之所以使用了边缘损失函数而不是传统的二元交叉熵损失函数,是因为研究人员发现实际训练中边缘损失函数的效果更好。以后研究人员计划进行一些理论分析,从理论上说明在GAN的目标函数中使用边缘损失函数的影响。
CapsuleGAN用胶囊网络替换了作为判别网络的卷积网络。那么,作为生成网络的卷积网络是否也可以用胶囊网络来替换呢?研究人员计划以后在BiGAN之类的GAN变体中,尝试同时使用胶囊网络作为生成网络。
论文地址:[arXiv:1802.06167](https://arxiv.org/abs/1802.06167)