深度学习--“为什么”的问题

2020-06-28 08:50:46

有很多很多深度学习模型在做各种各样的事情。根据它们要解决的确切任务,它们的结构可能会有所不同。有些将使用卷积,然后使用池化。有些会在有任何汇聚层之前使用几个卷积层。有些将使用最大池。一些人将使用平均数合并。有些学校还会增加辍学的部分。有些会在这里和那里有一个批处理规范层。一些人将使用乙状窦神经元,一些人将使用半朗诵。有些会进行分类,因此会针对交叉熵进行优化。其他人会将均方误差降到最低。有些将使用解池层。有些将使用去卷积层。有些人会使用有动量的随机梯度下降。有些人会用亚当。有些会有RESNET层,有些会使用“盗梦空间”。选择很多(例如,请看这里)。

阅读任何一篇特定的论文,你都会面临作者做出的一系列选择,然后是对他们选择的数据集的评估。对选择的讨论通常强烈地参考第一次引入给定技术的论文,而结果部分通常详细讨论以前的技术状态。建筑的形状通常被分解成明显的和不明显的决定。明显的是由作者试图解决的特定任务决定的(例如,当他们有一个类似自动编码的任务时,他们显然使用了一种自动编码器的形式)。

不明显的选择将包括与这些问题类似的问题:为什么他们先使用3x3卷积,然后使用1x1卷积,然后才使用池化?为什么他们只用MobileNet层(可笑的名字BTW)取代了3个中间层?为什么他们只在中间两层打了批规范,而不是所有的?为什么他们在前两层使用最大池化,而在接下来的三层没有任何池化?

显而易见的事情没有讨论是因为它是显而易见的,不明显的事情没有讨论是因为…。让我稍后再回到那个问题上来。

在我看来,讨论这些问题会将一篇论文与一些至少是浅薄的科学的东西区分开来,而不是完全的江湖骗子行为,即使这种江湖骗子行为似乎改善了给定数据集的结果。

可悲的事实是,在绝大多数情况下,为什么的问题的答案纯粹是经验性的:他们尝试了一系列模型,这些模型效果最好-这被称为超参数调整(或元参数调整),这一点令人悲哀,甚至很少有人谈论过。这说明了什么?有几件事,首先,作者完全忽略了多重假设检验的危险,通常对他们研究的任何统计基础都不屑一顾。其次,他们可能有更多的GPU可用,而不是他们知道要做什么(这些天大公司经常出现这种情况)。第三,他们只是想在一些新的破纪录基准上打上自己的名字,显然两周后就会被某个人打破,这个人拿着他们的模型,做了一些额外的盲目调整,利用了更多的GPU能力。

这不是科学。这更多地与那些制造健壮的PC并提交3DMark结果以保持几天记录的人有关。毫无疑问,这是一门手艺,但不是科学。个人电脑的建造者不会以这是一门科学为借口。深度学习的人就是这样做的。他们写的似乎是研究论文,只是为了描述他们的GPU平台和他们随机元参数搜索的结果,也许还有一些真正的科学讨论的微小碎片。基准测试结果提供了一个很好的掩护,声称这篇论文在某种程度上是新颖和有趣的,但事实是,他们只是在更多地超配了那个数据集。他们也可以在他们的模型中记住整个数据集,并达到100%的准确率,谁在乎呢?(阅读我的AI冬季附录帖子,可以找到一些关于这个主题的有趣的文献)。

类似于化学和炼金术之间的区别,科学讨论是关于建立一个概念,一个使人能够做出准确预测的理论。一些东西来指导他们的实验行为。科学并不需要每次都出类拔萃,或者在机器学习的情况下,这一领域真正的科学论文不需要超过目前的一些基准。一篇科学论文甚至不需要回答任何问题,如果它碰巧问了一些好的问题。

现在显然也有例外,一小部分论文中有有趣的内容。这些大多是试图展示深度学习的缺陷,并参与到为什么会是这样的讨论中。

因此,下次当你阅读深度学习论文时,试着思考一下作者们做出的这些安静的、从未解释过的选择。当你看到其中有多少隐藏在字里行间时,你会大吃一惊的。

如果发现错误,请将其突出显示,然后按Shift+Enter或单击此处通知我们。