Adan 2019-06-05
在机器学习研究中,MNIST 手写数字图像数据集已经作为基准使用了二十余年。该数据集虽然经典,但也存在测试集过小等问题。近日,来自 Facebook 和纽约大学的研究者重建并扩展了该数据集,在测试集中新增了 50000 个样本。MNIST 作者之一的 Yann LeCun 在推特中表示,「如果多次使用原版的 MNIST 测试集,你的模型可能在测试集上已经过拟合了。是时候在新增的样本上试一下了。」
原版 MNIST 数据集不太够用
MNIST [LeCun et al., 1994, Bottou et al., 1994] 是一个由 Yann Lecun 等人创建的手写数字图像数据集,是研究者研究机器学习、模式识别等任务的高质量数据库。它包含训练集和测试集,训练集包含 60000 个样本,测试集包含 10000 个样本。
MNIST 数据集抽取自 NIST 数据库。NIST 手写字符集第一个分区的发布要早一年,其训练集是由 2000 名人口普查局雇员手写的,而测试集更加有挑战性,是由 500 名在校生手写的。
LeCun、Cortes 和 Burges 的其中一个目的是创建一个分布相似的训练集和测试集。据他们描述,这个过程产生了两个 60000 个样本的集合。然后通过下采样将测试集样本数降低到 10000 个,可能是因为用当时的电脑处理这样一个数据集会非常慢。剩余的 50000 个样本从此就丢失了。
20 多年来,MNIST 数据集都被认为是标准的机器学习基准。在过去的十年来,许多研究者都表达过这个数据集已经被过度使用的观点。尤其是其测试集过小,只有 10000 样本,这引起了很多担忧。数以百计的论文都依据这同一个测试集,得到的性能越来越高。那么模型是否已经在测试集上过拟合?我们还能否相信在该数据集上取得的新结论?机器学习数据集到底能用多久?
为了解决原版 MNIST 测试集过小等问题,来自 Facebook 和研究者决定重建该数据集。
MNIST 数据集的重建
研究者追踪了每个 MNIST 数字的 NIST 起源,及其丰富的元数据,例如书写者标识、分区标识等。他们重建了含有 60000 个样本的 MNIST 完整测试集。由于多出的 50000 个样本从未被发布过,研究者可以利用这些样本探究 25 年来的 MNIST 实验在已发布的测试集上的影响。
研究结果明确地验证了 Recht 等 [2018, 2019] 观察到的趋势:尽管误分类率略有下降,但分类器排序和模型选择仍然是大体可靠的。研究者认为这种现象是由于在相同数字上比较分类器所带来的配对效益。
这项工作的初衷是为了重建 MNIST 预处理算法,进而为每一个 MNIST 数字找到其在 NIST 中的最初手写者。重建工作最开始是基于已有的信息,进而通过迭代更新已经有了很可观的进展。
重建用于创建 MNIST 数据集的算法是一项非常具有挑战性的工作。图 1 展示了 Bottou 等 [1994] 描述 MNIST 预处理的两个段落。尽管这是第一篇提到 MNIST 的文章,但数据集的创建实际上先于这项基准工作数月。奇怪的是,这两段描述中给出的 hsf4 分区数字个数有误,他们指出,最初的 NIST 测试集包含 58527 个数字,但真实数字应该是 58646。
图 1:Bottou 等 [1994] 描述 MNIST 预处理的两个段落。NIST 数据库的 hsf4 分区是最初的测试集,实际上包含 58646 个数字
这两个段落针对如何选择 60000 个数字组成 MNIST 训练集,提供了一个相对准确的方法。使用这种方法产生的数据集相比于实际的 MNIST 训练集多一个零,少一个 8。尽管两者并不匹配,但是这些类别分布太接近了,以致于 hsf4 分区中确实少了 119 个数字。
图像处理步骤的描述就不那么精确了。128x128 的二元 NIST 图像是如何剪裁的?有没有哪种启发式方式用于降低图像中的噪点?这些矩形框是如何在方形图像中居中的?这些方形图像又是如何重采样到 20x20 灰度图的?在最后的定心步骤中,重心的坐标是如何近似的?
一个迭代的过程
研究者最初的重建算法由现有的描述以及在 lush 最初代码库中发现的一部分重采样算法启发而来:不同于采用双线性或双三次插值,代码准确得计算输入和输出图像像素的重叠区域。
尽管第一版重建数据集——dubbed QMNISTv1,在机器学习实验中的表现和 MNIST 非常相似,其中的数字图像不一定能和实际的 MNIST 数字相匹配。
实际上,由于许多数据的形状相似,我们必须依赖更细微的细节,如抗锯齿像素图案。不过,还是有可能找出一些匹配项。例如,我们发现 QMNIST 训练集中最轻的零与 MNIST 训练集中最轻的零匹配。我们能够通过微调初始中心点和重采样算法来重现它们的抗锯齿模式,从而得到 QMNISTv2。
图 2:对比显示 MNIST 和 QMNIST 训练集中的前 16 位数字。第一张图的放大版说明了抗锯齿像素的正确重建。
评估重建质量
尽管 QMNIST 重建比我们想象的更接近 MNIST 图像,但仍然不是很完美。
表 2:MNIST 和 QMNIST 图像在无翻译或±1 像素翻译的情况下最佳对齐的训练样本计数。
表 2 表明,约 0.25% 的 QMNIST 训练集图像相对于其 MNIST 对应图像偏移了一个像素。当最后一个居中步骤(见图 1)中计算的重心非常接近像素边界时,就会发生这种情况。由于图像重建不完善,重建后的重心有时会落在像素边界的另一侧,对齐代码会将图像移动一个完整的像素。
表 1:匹配 MNIST 和 QMNIST 训练数字图像之间抖动距离的四分位数,像素范围为 0 到 255。L_2 距离为 255 表示一个像素差。L_∞距离表示图像像素之间的最大绝对差。
考虑到这些偶尔的单像素移动,表 1 给出了 MNIST 和 QMNIST 图像之间的 L_2 距离和 L_∞距离的四分位数。L_2 距离为 255 表示一个像素差。L_∞距离表示图像像素之间的最大差异,表示为 0 到 255 范围内的整数。
泛化实验
由于 MNIST 的测试错误率通常很低,因此研究者首先仔细讨论了置信区间的计算以及重复实验背景下误差比较的统计意义。然后,我们给出了几种方法的 MNIST 结果:k-最近邻点(knn)、支持向量机(svm)、多层感知器(mlp)以及表三的卷积网络,目的是复制 Le Cun 等人 [1998] 给出的性能水平。
研究者发布了两种训练集(MNIST 训练集与 MNIST 训练集的重建版 QMNIST 数据集)和三种测试集(10000 个样本的官方 MNIST 数据集、官方 MNIST 数据集的重建版本 QMNIST10 以及丢失的 50000 个测试样本的重建版本 QMNIST50)的结果。
他们分别使用 TMTM、TMTQ10、TMTQ50 来代表在 MNIST 训练集上训练后在三种测试集上的结果。相似得,他们使用 TQTM、 TQTQ10 和 TQTQ50 来代表在 QMNIST 上训练后在三种测试集上的结果。上述任何结果都不包含数据增强或预处理步骤,如去抖、噪声消除、模糊、抖动、弹性变形等。
图 5:使用 MNIST(左图)或 QMNIST(右图)训练集的不同 k 值的 knn 误差率。红圈:在 MNIST 上测试。蓝色三角形:在 QMNIST 上进行测试。绿星:在 50000 个新的 QMNIST 测试样本上进行测试。
图 6:在 MNIST 训练集上训练后,使用与图 5 相同的颜色和符号,各种不同的正则化参数 c(左图)和 rbf 内核参数 g(右图)下的 SVM 错误率。
图 7:左图:使用与图 5 相同的颜色和符号对 MNIST 进行训练后 MLP 各隐藏层的错误率。右图:比较所有 MLP 实验的 MNIST 和 QMNIST50 测试误差的散点图。
图 8:比较本研究过程中在 MNIST 上训练的所有模型在 MNIST 和 QMNIST50 测试集上的性能散点图。