谷歌大牛吐槽:机器学习可再现性灾难

最近,我正在与一个朋友聊天,他的创业公司的机器学习模型过于混乱,以致于引起了严重的问题,因为他的团队试图在彼此的工作基础上发展并与客户共享。甚至原始作者有时也无法训练相同的模型并获得相似的结果!他希望我能推荐一个解决方案,但是我不得不承认我在自己的工作中也遇到了同样的问题。很难向尚未使用机器学习的人进行解释,但是在跟踪变更和从头开始重建模型时,我们仍处于黑暗时代。有时感觉就像回到了没有源代码控制的时候。

谷歌大牛吐槽:机器学习可再现性灾难1.jpeg

当我在90年代末开始学习编程时,跟踪和协作源代码的标准是Microsoft的Visual SourceSafe。为了让我全程性体验,它没有原子检入功能,因此多个人无法处理同一个文件,网络拷贝需要每晚进行扫描,以免造成随机损坏,甚至也不能保证数据库早上会完好无损。不过,我感到很幸运,在我访问过的一个地方只有一堵便笺墙,一个便笺贴在树上的每个文件上,编码人员在修改文件时会将它们取下来,待完成后再归还!

谷歌大牛吐槽:机器学习可再现性灾难2.jpeg

这就是说,在版本控制方面,我丝毫不逊色。我已经在一些可怕的系统中艰难地前进了,如果需要的话,我仍然可以使用rsync和chicken wire共同解决一个问题。即使拥有所有这些知识,我也可以专心致志地说,机器学习是迄今为止我发现的最糟糕的环境,无法协作和跟踪变化。

为了解释原因,这是机器学习模型的典型生命周期:

研究人员决定尝试一种新的图像分类体系结构。
它复制并粘贴了先前项目中的一些代码,以处理它正在使用的数据集的输入。
该数据集位于她在网络上的一个文件夹中。这可能是ImageNet的下载之一,但不清楚是哪一个。在某些时候,可能有人删除了一些实际上不是JPEG的图像,或者进行了其他较小的修改,但是没有历史记录。
她尝试了许多稍微不同的想法,修复了错误并调整了算法。这些更改正在她的本地计算机上发生,当她想开始全面的训练时,她可能只是将源代码的大量文件复制到了她的GPU集群中。
她执行许多不同的训练,经常在工作进行时更改本地计算机上的代码,因为它们需要几天或几周才能完成。
在大型集群上运行快要结束时,可能会出现错误,这意味着它在恢复作业之前修改了一个文件中的代码,并将其复制到所有计算机上。
它可能会从一次运行中获取部分训练的权重,并将其用作使用不同代码进行新运行的起点。
它会保持所有运行的模型权重和评估分数,并在没有时间进行更多实验时选择要释放的权重作为最终模型。这些权重可以来自任何运行,并且可能是由于它目前在其开发机器上不同的代码产生的。
她可能将最终代码嵌入到源代码管理中,但在个人文件夹中。
她用代码和经过训练的权重发布结果。

谷歌大牛吐槽:机器学习可再现性灾难3.jpeg

这是一个有尽责的研究人员的乐观方案,但是你已经可以看出,有人进入并重现所有这些步骤并得出相同的结果将是多么困难。这些要点中的每一个都为不一致提供了机会。为了使事情更加混乱,ML框架在精确的数字确定性与性能之间进行权衡,因此,如果有人奇迹般地设法复制了步骤,那么仍然会有最终结果差异很小!

本文经授权后发布,本文观点不代表立场
-- 展开阅读全文 --
美国陆军研究所AI技术分享:神经网络式计算模型
« 上一篇 06-23
未来30年,可能会被人工智能取代的4大大学专业,报考要谨慎
下一篇 » 06-24

发表评论