雷锋网 AI 科技评论按:UBER AI Lab 最新研究发现卷积神经网络在处理坐标变换问题上存在惊人的「无能」缺陷,并提出了一种简单的 CoordConv 策略修复了这一缺陷。雷锋网 AI 科技评论把 UBER AI Lab 的这篇文章全文翻译如下。
Uber 在许多领域中都需要应用到卷积神经网络,从设计自动驾驶车辆到路牌自动检测,从地图构建到最大化 Uber 市场中的空间调度效率。同时这些领域的研究又都涉及到坐标变换问题。
在深度学习领域,卷积操作所产生的影响是独一无二的。当前机器视觉研究中几乎所有最佳结果都采用了同一种策略,那就是使用卷积层的堆叠作为基本构建块。由于这种架构非常普遍,我们也就理所当然地认为它应该能够胜任一些简单的任务,例如在一幅小图像中绘制一个像素点。然而真实结果却令人大跌眼镜。
事实证明,卷积操作往往无法胜任那些看似简单的任务。在论文《An Intriguing Failing of Convolutional Neural Networks and the CoordConv Solution》中,我们揭示并分析了卷积神经网络(CNNs)在两种不同类型(笛卡尔坐标空间(Cartesian space)和独热像素空间)之间进行空间表示转换往往是无能为力的。这点非常令人惊讶,因为这个任务是如此地简单。但是同时它也很重要,因为这样的坐标变换似乎也是许多其它常见任务所必须的,例如图像中的目标检测、训练图像生成模型和训练强化学习(RL)智能体。事实证明,这些任务可能长期以来一直受到卷积操作「缺陷」的影响。而我们所提出的解决方案是一个名为 CoordConv 的层,通过实验我们在多个领域中证明了该方案的有效性。下面我们来一起看看是怎么回事。
让我们来设想一个简单的监督渲染(Supervised Rendering)任务,这个任务的要求是,给定一个 (i, j) 坐标作为网络的输入,然后要求网络输出一张 64*64 的图像,并且图像中绘有一个以 (i, j) 坐标为中心的正方形,如下图1 (a) 所示。那么你会使用什么样的网络来解决这个任务?
其中一种策略是,我们可以采用当前生成图像的主流方法来实现这项任务,即通过堆叠反卷积(转置卷积)层来生成图像以及绘制正方形。为了验证这个想法,我们创建一个由 64*64 大小的画布(图像)组成的数据集,这些画布上随机地绘制了 9*9 的正方形格子,如下图1 (b) 所示。通过枚举所有可能的情况(保证正方形完整的前提下),我们总共得到了 3136 个样本。然后为了评估模型的泛化能力,我们定义两种训练/测试集分割方法:均匀分割法,这种方法将所有可能的正方形中心位置按 8:2 的比例随机地分成了训练集与测试集;另一种是象限分割法,这种方法将画布划分成了四个象限,其中正方形中心位于前三个象限的画布被分配进训练集,而正方形中心位于第四象限的画布被分配进测试集。这两种分割法所产生的数据集分布如下图1 (c) 所示。
图1 (a) 该监督渲染任务要求网络在给定的 (i, j) 坐标上绘制正方形。(b) 数据集的样例展示。(c) 均匀分割与象限分割法所生成训练测试集分布的可视化。
我们假设卷积神经网络可以轻松地解决这个任务,因为这个任务非常简单(我们的论文 https://arxiv.org/abs/1807.03247 展示了整个数据集的生成只需要两行 Python 代码),同时由于这个数据集非常小,模型很容易就过度参数化。但事实证明,卷积神经网络的表现十分糟糕。即使是具有多达 1M 个参数且训练时间超过 90 分钟的模型(图2b),也无法在均匀分割的测试集上获得超过 0.83 的 IOU 性能,而在象限分割的测试集上则无法超过 0.36 的 IOU(图2a)。
图2 (a) 展示了这项监督渲染任务在均匀分割和象限分割两种策略下的训练与测试数据集 IOU,它们的 IOU 都小于 1.0;(b) 为了训练一个较好的模型需要花费 90 分钟才能达到 0.8 的 IOU。
那么为什么通过卷积神经网络来处理监督渲染任务效果会这么差呢?这点值得我们进行深入挖掘。毕竟,如果采用直接监督训练的渲染任务都如此困难,那么当我们采用无监督学习来实现渲染时,这只会变得更加困难。例如,在相同的数据集上训练生成对抗网络(GAN),并由一个训练过的判别器来提供损失。
让我们来缩小任务的范围,以便于能够发现问题所在。我们现在的任务是要求网络绘制一个简单的像素(而不是 9*9 的正方形)。因为我们很容易就会想到,如果模型可以解决这个单像素任务,那么通过堆叠更深的反卷积网络就可以很容易地将这个像素扩展成一个更大的正方形,这也是我们通过实验验证过的直觉。因此,我们想到了这个基于监督的坐标分类任务(图3a),其中数据集由成对的 (i, j) 坐标和图像(对应的像素点被激活)组成,如下图 3b。
图3 (a) 基于监督的坐标分类网络要求网络在给定的坐标 (i, j) 上绘制一个像素点;(b) 数据集样例;(c) 训练集与数据集可视化
我们再次尝试了许多具有不同超参数的网络,然后观察到即便有些网络可以记住训练集,但是却没有一个网络的测试精度可以超过 86%(图4a),而且还需要花费超过一个小时的训练时间。
图4 (a) 展示了在均匀分割和象限分割上训练坐标分类任务的训练精度与测试精度,虽然有些模型记住了训练集,但是在均匀分割的测试集上都没有超过 86%,这意味着卷积操作即便在单像素任务上也无法很好地泛化;(b) 为了实现 86% 的测试精度需要花费一个小时训练时间。
我们本来设想卷积能够完美解决这个问题,但事实并非如此。为什么会这样呢?为了弄清楚网络到底在干什么,我们训练了一个最好的网络并检查其预测结果。我们让网络绘制一张图像,该图像中只有一个像素点被激活(在独热表示中值为 1)。为了查看正在发生的事情,让我们放大目标像素周围的小区域。在图5中,目标像素使用红色进行高亮,我们展示了模型的 softmax 预测结果和 logits。第一个像素(第一行)来自于训练集,所以与预期一样,模型正确绘制了图像,尽管目标像素之外还有些误判。下一个像素(中间行)来自于测试集,此时模型虽然预测正确了,但是目标像素和周围像素的概率值差别更小了。再看第三行的右边图像,这次模型则完全预测错误了。这个结果十分令人惊讶,因为采用 8:2 的均匀分割中,几乎所有的测试像素都被训练像素包裹了。
图5 对几个相邻像素的预测。网络在训练集上的准确率是完美的,但是在测试集上只有 86%,更令人惊讶的是,大多数测试集像素几乎都被训练集像素包裹着。此外,从可视化结果来看,网络在训练集上的结果也不是那么完美,因为目标像素周围还存在一些误判。
那么为什么对于卷积神经网络而言,要在图像中高亮出指定坐标对应的像素这么困难呢?是因为要将信息从更小的空间扩展到更大的空间比较困难吗?那么换个方向是否会变得简单一些呢?如果我们训练卷积神经网络将图像压缩成一个标量坐标(更类似于普通的图像分类)会怎样?
事实证明,卷积神经网络在这种监督回归任务上的效果依然糟糕。在图10中,最左边的点云显示了正确的像素坐标,中间的点云显示了模型的预测结果。通过对某些细节进行着色,我们可以发现该模型在测试集上表现明显不佳,并且即便是在训练集上也是差强人意。
简而言之,重点并不是研究方向。
这个看似简单的坐标变换任务会从两个方向上导致卷积「失败」:从笛卡尔坐标系空间到独热像素空间,反之亦然。即使是在监督训练的情况下,仅仅是绘制一个像素,甚至训练样例就围绕在测试样例周围时,卷积仍然无法学习到笛卡尔空间和像素空间之间转换的平滑函数。此外,实验中表现最好的卷积模型非常大,且需要大量时间进行训练。
事实证明这里有个简单的解决方案。卷积操作是等变的,这意味着当每个滤波器被作用于输入以生成输出时,它并不知道每个滤波器的位置。我们可以通过让滤波器掌握自己的位置来协助卷积操作。我们的做法是向输入的通道层添加两个新层来实现的——一个具有 i 坐标,一个具有 j 坐标。我们称之为 CoordConv,如下图6所示。
图6 卷积层与 CoordConv 层的对比。CoordConv 层将填充有坐标信息的附加通道作为输入,坐标信息包含了 i 和 j。
我们提出的 CoordConv 层是标准卷积层的简单扩展,其中卷积操作依赖于坐标信息。但是允许卷积滤波器获知坐标信息将会破坏平移不变性(Translation equivariance),所以这看起来似乎是个坏主意。因为平移不变性正是卷积操作最显著的特征之一。
我们认为卷积由于三个重要因素而取得了成功:它使用了相对较少的学习参数;利用 GPUs 进行加速;学习的函数具有平移不变性。
CoordConv 层保留了前两个属性——相对较少的参数和高效的计算。而平移不变性的保留程度则是通过训练学习。如果来自坐标的权重为 0,则 CoordConv 的行为就类似于标准的卷积。另一方面,如果平移依赖(Translation dependence)对于下游任务是有帮助的,那么它也能够学习到。但是正如我们所看到的,最终的证据隐藏于卷积之中。
CoordConv 与一系列现有的理念相关,例如局部连接层(Locally connected layers)、复合模式生成网络(Compositional pattern producing networks)和语言建模中使用的位置嵌入(Position embeddings)。(阅读我们的论文以了解更多与此有关的介绍)
首先,让我们重新审视之前的任务,看看 CoordConv 的表现如何。
如图7和图8所示,CoordConv 模型在监督坐标分类和监督渲染任务中均取得了完美的训练和测试精度。此外,CoordConv 模型的参数也减少了 10~100 倍,并且训练达到完美性能的时间仅仅需要几秒钟,而不像卷积神经网络那样需要一个多小时。
图7 CoordConv 在监督坐标分类任务上快速达到了训练和测试的完美性能
图8 许多 CoordConv 模型在监督渲染任务中快速取得了完美的训练和测试性能
为了更细致地进行探讨,下图9显示了在绘制相邻像素时,普通反卷积与 CoordConv 的对比。
图9 如前所述,反卷积在监督坐标分类任务上表现的马马虎虎,但是 CoordConv 却在训练集和测试集上都取得了 100% 的正确率。并且解决方案明显更简单了。
在使用卷积绘制像素时,我们观察到了伪像和过拟合。而在使用 CoordConv 时,我们在测试以及训练集上都达到了完美的性能表现。在监督回归任务中结果也是如此。虽然卷积不擅于处理回归坐标,但是 CoordConv 却能很好地建模该函数,如下图10所示。
图10 卷积在监督回归任务中表现的非常差,但是 CoordConv 的表现却很好。
到目前为止,我们已经展示了卷积操作在处理非常简单的任务时也会「失败」,而我们通过提出 CoordConv 层来解决了这个问题。当然我们还想知道:这个问题仅仅是这项坐标转换任务所特有的,还是说我们发现了一个核心问题,而这个核心问题长期以来一直隐藏在其它任务中,阻碍了这些任务的表现?为了回答这一疑惑,我们在针对各种任务的网络中插入了 CoordConv 层。以下是我们发现的总结摘要,更多的详情请参阅文论。
物体检测
因为物体检测模型在笛卡尔空间中观察像素空间然后输出一系列定界框(Bounding boxes),所以它们看起来很适合 CoordConv。而我们的直觉也得到了证实:在检测画布上散布的 MNIST 数字的简单问题上,我们发现在使用 CoordConv 时,Faster-RCNN 网络的 IOU 提高了约 24%。
图像分类
在所有视觉任务中,我们认为图像分类任务能够从 CoordConv 层上获得的性能增益是最少的,因为分类任务更多地是与图像内容有关,而不是图像中目标的位置。实际上,当我们在 ResNet-50 的底部添加 CoordConv 层并在 ImageNet 上训练时,我们发现性能只有微弱的提升。
生成模型
在诸如生成对抗神经网络(GANs)和变分自动编码器(VAEs)这样的生成模型中,像素是隐式绘制的,这意味着在一个理想的世界中模型也许能编码像位置坐标这样的高层次概念。直观地说,CoordConv 可能对此有帮助。我们通过使用 Sort-of-SLEVR(这是一个包含各种形状的简单数据集)来训练生成对抗神经网络和变分自动编码器,并可视化了中间的插值过程。
这是一个生成彩色图形的简单任务。下图11所示的插值视频展示了 CoordConv 如何改善了生成模型的性能,其中左边是普通生成对抗神经网络,右边是 CoordConv 生成对抗神经网络。
通过使用生成模型,我们在隐式空间(Latent space)中的点之间使用插值方法来研究 CoordConv 所产生的影响。这也是用于评估生成模型泛化能力的常用方法。
图11 普通卷积 GAN(左图)和 CoordConv GAN(右图)在隐式空间中的插值动画。在普通 GAN 中,我们观察到了与画布相关联的视觉伪像,以及淡入和淡出的现象。而 CoordConv GAN 中的对象则是连贯的,其运动也更加平滑。
对于左侧的普通 GAN,其动画整体看着还不错。但是当我们仔细观察时,我们却注意到并非所有物体都在移动,其中的视觉伪像与画布关联在了一块,并且画面中物体的某些部位也会时隐时现。当我们将 CoorConv 层加入生成器和判别器时,生成结果变得更加平滑了。我们可以看到此时物体保持了整体的连贯性并且运动也非常流畅。
在训练 VAEs 的时候我们注意到了相似的模式。通过卷积,我们观察到图像中的部分物体时隐时现,但是使用 CoordConv 之后,物体的运动变得更加平滑。
图12 使用普通卷积 VAE(左图)和 CoordConv VAE(右图)在隐式空间中进行插值。在普通的 VAE 中物体存在时隐时现的问题,而 CoordConv VAE 的运动则更加流畅。
当使用较大的 GAN 绘制大规模场景理解(Large-scale Scene Understanding, LSUN)的卧室场景时,基于卷积的 GAN 再次出现对象物体时隐时现的问题。而使用 CoordConv 层的 GAN 则呈现出了平滑的几何变换,包括平移和形变。
图13 在隐式空间中的第三次插值,这次采用了 LSUN 卧室数据集进行训练,左图是普通卷积 GAN 而右图是 CoordConv GAN。普通卷积中物体呈现出了时隐时现的问题。而使用 CoordConv 层的 GAN 则表现出了平滑的几何变换,包括平移和形变
强化学习是一个有趣的领域,CoordConv 也许能够发挥作用。我们训练了一些智能体来玩雅达利游戏,例如《吃豆人小姐》。我们认为,如果卷积滤波器可以同时识别吃豆人小姐并提取她在迷宫中的位置,那么这有可能帮助算法学到更好的策略。
我们尝试过将 CoordConv 添加到自己构建的 Ape-X 平台上,但是 CoordConv 并没有立即提高性能。我们还尝试了 A2C,这是一种流行的策略梯度方法,这时候 CoordConv 开始发挥作用。这可能反映了学习显式策略和学习 Q 函数之间的差异。我们测试了 9 场比赛,相比于标准卷积,其中有 6 场的结果是采用了 CoordConv 的 A2C 训练速度更快,或者取得了更高的最终结果。正如预期的那样,我们注意到《吃豆人小姐》的分数获得了提高。有两场比赛,CoordConv 与标准卷积表现相似,而有一场比赛CoordConv 表现则比标准卷积稍微差一些。总的来说,这些结果表明 CoordConv 可能在强化学习中是有用的。
图14 使用 A2C 训练雅达利游戏的结果。在 9 场比赛中,(a) 有 6 场比赛 CoordConv 的表现超过了标准卷积;(b) 有 2 场比赛,两者表现一样;(c) 有 1 场比赛,CoordConv 表现稍微差了一些
在本文中,Uber AI Lab 的研究人员们通过实验表明了卷积神经网络对坐标转换任务建模的「无能」,并通过 CoordConv 层的形式引入了一种简单的修复策略。他们的结果表明,使用 CoordConv 层可以提高部分应用的性能。他们未来的工作将进一步评估 CoordConv 在大规模数据集中的优势,探索其在检测、语言任务、视频预测、空间变换网络等模型中的效果。
不过另一方面,也有一些其他的研究者在看过 Uber AI Lab 的这项研究之后认为他们的做法是“人工特征的借尸还魂”,为部分任务增加了有益的特征之后当然可以提高模型的表现,但这种做法是与表示学习、深度学习所倡导的“模型自己学习特征”的思想背道而驰的。你怎么认为呢?欢迎大家留言讨论。
论文地址:https://arxiv.org/abs/1807.03247
Via Uber AI Labs,雷锋网 AI 科技评论编译