老生常谈:什么样的(机器学习)结果才有推广(泛化)价值
摘要: 老生常谈,到底什么样的机器学习模型才能取缔“众生”
人工智能是研究一种可以直接处理重要应用的方法,比如试图改进语音识别或医学成像的生产系统。但是,大多数研究,即使是在计算机视觉等应用领域,都是在高度简化的真实世界的代理上完成的。目标识别基准的进展:从像MNIST,NORB和Caltech101这样的数据集开始到现在像ImageNet和Pascal VOC这样复杂而富有挑战性的产品,它们本身并没有什么价值,但只是因为它产生的见解有助于我们设计更好的实际应用系统。
所以我们会很自然地问:哪些研究结果会推广到新的应用中?
一种可能不会推广的研究结果是:“算法A比算法B更好”,因为不同的应用领域有自己的要求。即使是像对象识别这样的单一任务,不同的数据集也具有不同的属性,这些属性会影响不同方法的执行效果,我们从一系列基准中了解了一些不同方法的综合表现,例如,随机森林是一个非常好的通用目标分类器,并且合奏效果比单个分类器好得多。这些基准对于确定公司应该聘请的有才能的人员也很有帮助。但是当谈到改进我们的算法时,我认为通过比较不同方法的最终性能很难学到很多东西。
作者认为,对于新情况而言,这种结果是不同方法之间权衡的本质。考虑一下我们对神经网络和深度学习的了解。与对比分歧相比,持续的对比分歧给出了更准确的样本,代价是更高的方差更新。在计算曲率时,无Hessian优化比随机梯度下降更好,但实现起来要困难得多,而且每次迭代的成本都要高得多。Dropout是为了减少过度拟合,但是要以梯度变化较大为代价。
这些方法都不比其替代方案更好。数据集在大小、复杂度、辅助信息源以及影响算法之间权衡的标注噪声等因素存在很大差异。对于较大的数据集,规则化可能不太受关注,并且计算时间更关键。计算资源也有所不同,例如,GPU已经转移了平衡以支持密集矩阵乘法。所有这些因素都可能在基准和实际情况之间发生变化,因此所有算法选择的argmax也可能会发生变化。(这就是为什么Netflix 从未使用获奖算法的原因。)但是权衡本身的性质似乎保持得很好。
了解权衡并不能为机器学习提供一个标准的方法论,但它确实给出了设计算法的策略。研究人员一般都在研究几个问题或数据集,并且我们知道哪些算法在这个数据集上运行良好以及哪些因素对这些数据集很重要。以这些为参考点,我们可以考虑新问题如何不同(它是否更大?噪声更大?),并告诉我们在哪个方向上进行调整。从这个起点出发,我们可以运行诊断程序,告诉我们哪些问题会影响性能,以及我们的方法忽略哪些有用的信息来源,这将影响我们选择哪些算法。
这是公司花费这么多钱雇用顶级机器学习研究人员的原因之一。有关机器学习的知识还很多,但知识依然依赖于上下文。(对于我们的研究人员来说,“算法A比B好”的结果不会推广,否则,将会有一种算法来统治它们,并且没有新的洞察空间。)
为了防止出现玩具问题
译者注:玩具问题指的是不是直接的科学性却,而是作为一个说明其他共享的、更复杂的问题的事例,或用更一般的解决问题的技巧解释一个特定的方式。
看起来很明显,如果我们不能在我们的基准测试中复制真实的世界,我们至少应该尝试尽可能的接近。我们不应该使用大图像数据集来尽可能代表所有图像的分布吧?我们不应该在这些问题上构建性能最好的算法,以便它们接近实际使用的算法吗?问题是,数据集越大,算法越复杂,科学就越难。
Brian Kernighan曾经说过,“每个人都知道调试程序比编写程序要困难一倍。所以,如果你在写代码的时候能够像你写代码的时候一样聪明,那么你将如何进行调试?”但是仔细运行有意义的实验比调试更困难。你需要改变很多因素并测试它们的影响,这需要更多的时间来运行算法。控制混杂因素需要清楚地理解所有事物如何组合在一起。如果你的算法处于你可以实现的领域,或者现代计算技术可以运行的领域,那么你将如何进行实验呢?
试图破坏最难的基准通常会将我们推向我们的大脑和计算机可以处理的边界,这反映在我们运行的各种实验中。如果你仔细查看最近的深度学习或使用玩具数据集的贝叶斯非参数论文,你会发现仔细控制的实验会改变一个因素,并显示产生了很大变化。我估计作者不仅要表明他们的方法很好好,还要提供证据表明它为什么很好。但是,鉴于最具挑战性的基准,作者通常将其最终性能与以前发表在文献中的数据进行比较。这些数字是使用完全不同的系统获得的,这是通常很难理解改进的原因。
我使用Pascal VOC数据集与Joseph Lim一起简单地研究了一个对象检测项目。与当时从事物体检测工作的大多数人一样,我们建立在Pedro Felzenswalb的可变形零件模型软件包之上。由于我的原因,我们试图用不同的SVM软件包替换它正在使用的SVM软件包,这导致了性能的急速的下降。这似乎是无稽之谈,两个软件包都在优化相同的凸面目标上,所以它们不应该是可以互换的吗?经过一周的挖掘(这些模型需要很长时间才能运行),约瑟夫发现它必须处理停止标准的差异。但是,如果这些微妙的细节实施,总体上会产生如此巨大的影响,那么我们在不同的个人实施的完全不同的系统之间进行性能比较时应该如何做呢?
正如我上面所论述的,如果我们想要推广的结果,我们需要明确的因果关系解释为什么一个算法的行为与另一个不同。对于实验需要数天或数周的大型数据集,需要建立在别人代码上的复杂算法,以及时间压力来击败其他人的数据,那么可能会没有足够的时间来运行足够的实验来获得一个完美的答案。对于小数据集,我们应该追查所有细微的问题并解释事情发生的原因。
近年来,神经网络已经粉碎了很多基准,但重要的是要记住,这是在数十年对数据集进行经验性检验之后出现的。事实上,玩具数据集仍然是相关的,即使在现实世界是大数据之都,Geoff Hinton仍然在MNIST上进行实验。我认为这些数据集将继续在未来一段时间内提供一些独到的见解。
本文由@阿里云云栖社区组织翻译。
文章原标题《which-research-results-will-generalize》,
译者:虎说八道,审校:袁虎。