论文复现一直是机器学习领域的难题,虽然最近多个学术会议提倡大家提交代码,但解决论文复现问题仍然任重而道远。在试图复现机器学习论文时,我们经常遇到哪些问题呢?新加坡机器学习工程师 Derek Chia 对此进行了总结。

我初步触摸机器学习时,花费了许多时刻来阅览论文,并测验完结。当然,我不是天才。完结它意味着要履行 git clone 并测验运转论文作者的代码。关于我感爱好的概念,我或许还手动输入一些代码并进行注释,以便更好地了解论文和项目。

 机器学习论文复现,这五大问题你需求留意(论文机器能思考吗) 机器学习 论文 代码 第1张

这样的学习办法令人懊丧。测验复现论文的流程大致如下:

  • 一些到达新 SOTA 的论文在新闻媒体中引起重视;
  • 读者深入研讨或快速阅读论文内容;
  • 读者对论文中的试验成果形象深入,并发生复现的爱好。

接下来便是张狂查找项目代码,并测验在作者所用的数据集上运转代码。这时,你需求祈求该项目具有以下要素:运转阐明(README.md)、代码、参数、数据集、数据集途径、软件环境、所需依靠项以及硬件条件。了解这些,才干顺畅复现论文中的 SOTA 成果。

而在这个进程中,你或许会遇到许多常见问题(拜见下文)。遇到问题之前先了解它们是很有协助的,究竟,没人喜爱空手而归。

复现机器学习论文时的常见问题

复现进程中的常见问题如下所示:

  • README 文件不完整或缺失;
  • 未定义依靠项、代码存在 bug、短少预练习模型;
  • 未揭露参数;
  • 私有数据集或短少预处理进程;
  • 对 GPU 资源的需求不切实际。

1. README 文件不完整或缺失

假如一篇论文在宣布时开源了代码,那么 README 便是你着手初步复现项目的文档之一。好的 README 文件一般具有以下几个组成部分:依靠项列表、练习脚本、评价脚本、预练习模型以及运转脚本得到的成果。

实际上,这些内容已经在 Papers with Code 发布的《机器学习代码完整性自查清单》中列出(该清单已成为 NeurIPS 2020 代码提交流程的一部分)。该清单遭到麦吉尔大学副教授、Facebook 蒙特利尔 FAIR 试验室负责人 Joelle Pineau 的启示。

Papers with Code 供给的 README 样例拜见:

https://github.com/paperswithcode/releasing-research-code

不完整的 README 文件对运转代码而言是一个坏的初步。

一个需求留意的信号是示例 notebook 或示例代码。notebook 的用处是演示代码的运用。抱负状况下,除了点击「Run all」以外,不需求任何其他调整就能够运转 notebook。预填充参数和数据途径的命令行也能够完结相同的必定。

还有一些非有必要但有用的信息,比方作者的联系方式或展现模型架构或数据转化流程的 gif 图片等,这些都是齐备的 README 文件应该包括的。假如代码库保管在 GitHub 上,请查看 Issue 区域的问题是否得到了活跃回复,以及 pull request 是否定时被查看。这些事项均能证明库得到精心维护,保证后续复现作业得到有用支撑。当然会有破例,但请慎重考虑以上各项呈现缺失的状况。

 机器学习论文复现,这五大问题你需求留意(论文机器能思考吗) 机器学习 论文 代码 第2张

Joelle Pineau 发布的机器学习可复现性查看清单

(图源:https://www.cs.mcgill.ca/~jpineau/ReproducibilityChecklist.pdf)

2. 未定义依靠项、代码存在 bug、短少预练习模型

当你对示例 notebook 觉得满足后,你或许想测验用不同的参数在自己的数据集上试用模型。在这一阶段,你或许会调用示例 notebook 中未用到的函数,或许在自己的数据集上测验预练习模型,这时或许会遇到问题。

例如,你或许留意到 requirements.txt 缺失,或许软件包版别未固定(如 tensorflow==2.2)幻想一下当你发现 TensorFlow 版别是 1.15 而不是 2.2,原因仅仅作者没有指定版别时的爆破心态吧。

假定你查看过了依靠项,但是现在却发现预练习模型失踪了!这种状况下,你要么 debug 代码,要么提交 bug 陈述,要么疏忽代码。请慎重挑选第一个选项,由于你或许会在这上面花费好几个小时。当然有的 bug 很简单处理,假如我能修正的话,我会提交 pull request。但并不是每次都那么好运,这些顺手可及的果子有时分很难摘。

预练习模型缺失是一个风险信号,但这其实并不稀有。究竟,论文作者没有责任发布模型。那么,另一个代替办法是运用揭露的参数练习模型进行复现。不过参数也不总是揭露……

3. 未揭露参数

依据模型状况来看,超参数关于完结 SOTA 成果是非常重要的。下图展现了不同参数发生不同的 f1 分数(规模从 0.5 到 1.0)。模型中的参数一般是学习率(learning rate)、嵌入尺度(embedding size)、层数、dropout 量、批处理巨细、练习 epoch 数量等。

因而,假如作者没有供给他们运用的切当参数,你或许有必要自己进行一切试验才干复现 SOTA 成果。

 机器学习论文复现,这五大问题你需求留意(论文机器能思考吗) 机器学习 论文 代码 第3张

趁便说一句,Facebook 的 HiPlot 是一个很好的东西,协助你在运用不同参数组合时将模型成果可视化。

HiPlot 地址:https://github.com/facebookresearch/hiplot

4. 私有数据集或短少预处理进程

从许多方面来说,咱们很幸运地具有世界各地研讨者供给的开源数据集。现实便是如此,数据的搜集绝非易事,而整理这些数据并将其格式化以供研讨运用,就愈加费事一些。在此需感谢学术组织和 Kaggle 免费保管这些开源数据集,由于带宽和存储成本是很高的。

但是想运用私有数据集,并非易事。数据集或许包括受版权维护的信息,比方 ImageNet。一般你需求填写一份请求表,版权一切者将自行决定是否同意。

某些时分这个进程会很费事,假如你所需的数据集不可用,在请求举动之前要先仔细考虑一下。或许你能够从其他途径查找或许下载数据,比方 Academic Torrents:

https://academictorrents.com/。

 机器学习论文复现,这五大问题你需求留意(论文机器能思考吗) 机器学习 论文 代码 第4张

5. 对 GPU 资源的需求不切实际

近期呈现了一股趋势:模型越大功能越好。一些论文运用了整个数据中心的算力才到达 SOTA 成果,这些论文复现起来当然很难。例如,2019 年 10 月谷歌宣布论文《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》,测验经过将参数扩展到 110 亿来探究 Transformer 模型架构的局限性。但是几个月后微软用 170 亿参数创建了 Turning-NLG,不久 OpenAI 放出 1750 亿参数的预练习言语模型 GPT-3……

要想练习数十亿参数的模型,你需求运用分布式练习办法以及某种方式的高功能核算(HPC)或 GPU 集群。具有 110 亿和 170 亿参数的模型别离需求约 44GB 和 68GB 的内存,因而这些模型无法仅运用一块 GPU 完结练习。

简而言之,尽早发现论文所用大模型是否超出你的个人能力。

 机器学习论文复现,这五大问题你需求留意(论文机器能思考吗) 机器学习 论文 代码 第5张

微软练习 Turning-NLG。

总结

复现论文代码并非易事,不过越来越多的项目测验标准化 SOTA 模型。我个人最喜爱的是 HuggingFace 的 Transformers,它为研讨者和开发者供给了足够低的进入门槛。别的,TensorFlow 的 Model Garden 和 PyTorch 的 Model Zoo 也发展迅速(其间别离是 TensorFlow 和 PyTorch 团队构建的预练习模型)。

这些库旨在标准化预练习模型的运用,并为模型奉献和分发供给适宜的条件。它们对代码质量供给了保证,而且具有不错的文档。我期望社区能从这些库中获益,并协助复现 SOTA 成果,轻松地运用 SOTA 模型。

【本文是51CTO专栏组织“机器之心”的原创译文,微信大众号“机器之心( id: almosthuman2014)”】

戳这儿,看该作者更多好文

转载请说明出处
知优网 » 机器学习论文复现,这五大问题你需求留意(论文机器能思考吗)

发表评论

您需要后才能发表评论