機器之心
選自Medium
機器之心編譯
參與:魔王、小舟
如何恰當地提交代碼,才能既保證研究的可復現性,又能擴大傳播?近日,PapersWithCode 發布了機器學習代碼完整性自查清單。目前,該清單已成為 NeurIPS 2020 代碼提交流程的一部分。
可復現性是科學領域長期關注的話題,近期人工智慧和機器學習社區也對此投入了更多關注。例如 ICML、ICLR 和 NeurIPS 這些頂級學術會議都在努力推進將實驗代碼和數據作為評審材料的一部分提交,並鼓勵作者在評審或出版過程中提交代碼以幫助結果可復現。
加拿大麥吉爾大學副教授、Facebook 蒙特婁 FAIR 實驗室負責人 Joelle Pineau 多次探討該領域的可復現問題,並在去年底發布了可復現性檢查清單。但是這份清單中的大部分內容與論文本身的構成有關,對於代碼開源提供的指導較少。
最近,Papers with Code 聯合創始人 Robert Stojnic 發布了一份機器學習代碼完整性自查清單,或許可以幫助社區部分地解決這一難題。
Papers with Code 網站收集了大量論文實現集合和最佳實踐。該團隊對這些最佳實踐進行了總結,得出一份機器學習代碼完整性自查清單。目前該清單已成為 NeurIPS 2020 代碼提交流程的一部分,並且將會提供給評審人員使用。
清單項目地址:https://github.com/paperswithcode/releasing-research-code
機器學習代碼完整性自查清單
為鼓勵復現性,幫助社區成員基於已發表工作更輕鬆地構建新的項目,Papers with Code 團隊發布了機器學習完整性自查清單。
該清單基於腳本等評估代碼庫的完整性,共包含五大項:
依賴項
訓練腳本
評估腳本
預訓練模型
結果
該團隊對 NeurIPS 2019 論文的官方 repo 進行分析後發現,代碼完整性越高,項目的 GitHub 星數越多。
既然如此,我們趕快來看這五項的具體內容,並實施起來吧。
1. 依賴項
如果你用的語言是 Python,那麼當使用 pip 和 virtualenv 時,你需要提供 requirements.txt 文件;當使用 anaconda 時,你需要提供 environment.yml 文件;當使用的是代碼庫時,你需要提供 setup.py。
在 README.md 中解釋如何安裝依賴項是一種很好的做法。假設用戶具備極少的背景知識,編寫 README 文件時儘量給出清晰完整的說明。因為如果用戶無法設置好依賴項,那麼他們大概率不會繼續看你的代碼。
如果想提供整體可復現的環境,你可以考慮使用 Docker,把環境的 Docker 鏡像上傳到 Dockerhub。
2. 訓練腳本
代碼應包含用來實現論文結果的訓練腳本,也就是說你應該展示獲得結果的過程中所使用的超參數和 trick。為了將效用最大化,理想情況下寫代碼時你的腦海中應當有一些擴展場景:如果用戶也想在他們自己的數據集上使用相同的訓練腳本呢?
你可以提供一個完備的命令行包裝器(如 train.py)作為用戶的切入點。
3. 評估腳本
模型評估和實驗通常細節較多,在論文中常常無法得到詳細地解釋。這就是提交評估模型或運行實驗的確切代碼有助於完整描述流程的原因所在。而且,這也能幫助用戶信任和理解你的研究。
你可以提供一個完備的命令行包裝器(如 eval.py)作為用戶的切入點。
4. 預訓練模型
從頭訓練模型需要大量時間和成本。增加結果可信度的一種有效方法是提供預訓練模型,使社區可以評估並獲得最終結果。這意味著用戶不用重新訓練就能看到結果是可信的。
它還有一個用處,即有助於針對下遊任務進行微調。發布預訓練模型後,其他人能夠將其應用於自己的數據集。
最後,有些用戶可能想試驗你的模型在某些樣本數據上是否有效。提供預訓練模型能夠讓用戶了解你的研究並進行試驗,從而理解論文的成果。
5. 結果
README 文件內應包括結果和能夠復現這些結果的腳本。結果表格能讓用戶快速了解從這個 repo 中能夠期待什麼結果。
README.md 模板中的示例(模板地址:https://github.com/paperswithcode/releasing-research-code/blob/master/templates/README.md)
能夠復現結果的指令給用戶提供了另外一個切入點,能夠直接促進可復現性。在一些情況下,論文的主要結果只有一張圖,對於沒有讀過論文的用戶,理解起來會很困難。
你還可以放置包含其他論文最新結果的完整排行榜連結,這有助於用戶進一步理解你的研究結果。
具備代碼完整性的項目示例
此外,該團隊還提供了多個具備代碼完整性的項目,以及有助於代碼提交的額外資源。
NeurIPS 2019 項目示例
https://github.com/kakaobrain/fast-autoaugment
https://github.com/bknyaz/graph_attention_pool
https://github.com/eth-sri/eran
https://github.com/NVlabs/selfsupervised-denoising
https://github.com/facebookresearch/FixRes
額外資源
預訓練模型文件託管平臺:
Zenodo
GitHub Releases
Google Drive
Dropbox
AWS S3
模型文件管理工具:
RClone
標準化模型界面:
PyTorch Hub
Tensorflow Hub
Hugging Face NLP models
結果排行榜:
Papers with Code leaderboards
CodaLab
NLP Progress
EvalAI
Weights & Biases - Benchmarks
製作項目頁面工具:
GitHub pages
Fastpages
製作 demo 和教程工具:
Google Colab
Binder
Streamlit
參考連結:
https://medium.com/paperswithcode/ml-code-completeness-checklist-e9127b168501
https://github.com/paperswithcode/releasing-research-code
本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。
原標題:《PapersWithCode發布代碼完整性自查清單:想獲得更多星,你需要注意這五項》
閱讀原文