图7:实验室颜色空间中的颜色通道的边缘统计数据。左:每种方法的直方图以蓝色显示,ImageNet的测试数据集直方图以黑色显示。右图:颜色通道的直方图相交。 由于模型为每个灰度输入的可能着色声明了一个概率分布,我们可以对该分布进行多次取样,以获取同一输入的不同着色。下图用结构相似度(SSIM) 很好地展示了分布的多样性:
图8:为证明我们的模型可生成不同的样本,我们用多尺度SSIM对比了同一输入的两种输出。上图显示了ImageNet测试数据集的SSIM距离直方图。图中在多个SSIM间距上分别显示了每对图像。SSIM值为1表示两张图像完全相同。 该模型离远未完美。ImageNet尽管庞大,但不能代表所有的图像。而该模型在处理非ImageNet图像时并不理想。我们发现,真实的黑白照片(不同于彩色转化为灰度的黑白照)会得出不同的统计数据,并能出现很多彩色照片中所没有的物体。比如,Model T汽车的彩色照片不多,ImageNet图像集中可能一张都没有。采用更大的数据集和更好的数据扩增,也许能简化这些问题。 想了解图像质量的话,可以来看看这些图: 处于我们模型处理中间阶段的一小组非常难处理的图像 - 用于我们模型的ImageNet随机测试数据集图像 - 作为对比,下面是用其他算法来处理同一ImageNet测试数据集的结果: 给图像着色! - 彩色图像着色 - 自动着色的学习表示 - 最后,完整的细节都在我们的论文中:PixColor: Pixel Recursive Colorization - https://arxiv.org/abs/1705.07208 失败与未报告的实验 这一年期间,我曾短暂着迷过许多业余的小项目,尽管它们都失败了……接下来我会简单来描述其中的几个: 大数的素因数分解 素因数分解一向都是个大难题。但即便是如今,我们仍在不断发现有关素数分解的新问题。如果为深度神经网络提供足够的实例,它能不能找出一些新东西?Mohammad和我尝试过两种方法。他修改了Google机器翻译的seq2seq神经模型,该模型把一个半素大数的整数序列作为输入,并将其素因素预测为输出。我则使用一个较为简单的模型,它将定长整数作为输入,并用几个全连接层来预测输入的分类:素数或合数。这两种方法都只学到了最为明显的规律(如果尾数为0,那它就不是素数!),我们只能抛弃这个想法。 Adversarial Dreaming 受Michael Gygli的项目启发,我想探究一下鉴别器能否充当它自己的生成器。为此,我构建出一个简单的二元分类卷积神经网络来判断输入的真假。为了生成图像,你需要给出噪点并让它使用梯度来更新输入(有时被称为deep dreaming),令该网络把“真实”类别最大化。该模型通过交替生成“假”实例来进行训练,而后跟典型的GAN鉴别器一样,通过升级权重来区分真假实例。 我的想法是,鉴于更少的架构决策,该网络相比一般的GAN可能更容易训练。事实上,它用MNIST确实可以工作。下图中每一栏都在展示:不同的噪音图像被逐渐推向红色MNIST数值的情形。
但我没法让它在CIFAR-10数据集上工作,并且它的实际意义也极为有限。这遗憾了,我相信 "Adversarial Dreaming" 会是一个很酷的论文题目。 使用PixelCNN来训练生成器 PixelCNN生成样本的时间过长,这让我很沮丧。于是,我就想试试能不能用一个预训练的PixelCNN训练出前馈式图像对图像卷积神经网络(8x8至32x32尺寸的LSUN卧室图片集)。我所设置的训练方法是:在前馈式网络的输出上进行自动回归。在PixelCNN下更新权重以便将概率最大化。它用这样的线条生成了非常奇怪的图像:
对异步随机梯度下降算法的修改探索 如前文所述,很多模型都不适用于异步随机梯度下降算法。最近,一篇名为DCASGD论文提出了一种解决过时梯度问题的可能方法:在机器开始步进去应用它们权重的前,在权空间(weight space)使用差分向量。这种方法可大大减少每一个人的训练时间。不幸的是,我没能在TensorFlow上重复他们的结果,也无法实现我所想出的几个类似想法。这里可能有Bug。(如果想获取我的实现方法,请通过内部渠道联系我) 想法和总结 (责任编辑:本港台直播) |