[譯]機器學習程式碼完整性檢查清單
- 2020 年 12 月 17 日
- AI
動機
去年,Joelle Pineau 發布了可重複性清單,以促進在主要機器學習領域會議(NeurIPS,ICML等)上進行可重複性的研究。 清單上的大多數要素都集中在論文的組成結構上。
該清單上的一項是「提供論文源程式碼的鏈接」,但除此之外,幾乎沒有給出任何指導。 我們在 Papers with Code 網站中收集到了最多的論文實現程式碼,因此我們整理了最受歡迎的研究論文程式碼中使用的最佳做法。
我們將這些最佳做法總結為 機器學習程式碼完整性檢查清單,現在它已成為 NeurIPS 2020 程式碼正式提交過程的一部分,可供審閱者酌情使用。
機器學習程式碼完整性檢查清單
為了增強可重複性,並使其他人更容易地基於已發布的項目開展工作,我們引入了機器學習程式碼完整性檢查清單。
檢查清單根據其中提供的程式碼、模型和數據集來評估程式碼倉庫。它檢查項目程式碼倉庫是否包含以下內容:
- 1.依賴說明-程式碼庫是否具有有關依賴關係的資訊或有關如何設置項目環境的說明?
- 2.訓練程式碼-程式碼庫中是否包含訓練或調整論文所述模型的方法?
- 3.評估程式碼-程式碼庫中是否包含用於評估已訓練模型的性能,以及在模型上進行實驗的程式碼?
- 4.預訓練模型-程式碼庫是否提供對預訓練模型權重的免費訪問權?
- 5.結果展示-程式碼庫中是否包含展示主要結果的表或圖,以及用於復現這些結果的程式碼?
每個程式碼庫可以得到從0(完全不滿足)到5(全部滿足)的評分。關於清單各個要素的更多詳細資訊,請參見我們的 Github項目 。
有什麼證據表明檢查清單有利於幫助程式碼倉庫更受歡迎?
社區通常使用 GitHub stars 這一指標作為評判程式碼倉庫受歡迎程度的依據。 因此,我們假設,在機器學習程式碼完整性檢查清單中得分較高的程式碼倉庫也應該傾向於擁有更多的 GitHub stars。
為了驗證這一假設,我們選擇了 884 個 GitHub 程式碼倉庫(這些倉庫被提交給 NeurIPS 2019,作為論文程式碼的官方實現)。 我們從這884個程式碼倉庫中隨機選擇了 25% 的子集,並根據機器學習程式碼完整性檢查清單上對它們進行了手動評分。
我們根據機器學習程式碼完整性檢查清單上的得分數(滿足某一要素則得1分),對上述 NeurIPS 2019 會議的 GitHub 程式碼倉庫樣本進行了分組,並繪製了每個組中的 GitHub stars 中位數。 結果如下:
得分為 0 的 NeurIPS 2019 程式碼倉庫獲得 GitHub stars 個數的中位數為1.5。 相比之下,得分為 5 的程式碼倉庫的中位數為196.5 星。 只有9%的程式碼倉庫獲得5分,大多數(七成)程式碼倉庫僅獲 3 分及更低的分數。
我們還對結果進行了 Wilcoxon秩和檢驗,發現除5分對4分(p值是臨界值0.015)的情形以外,5分程式碼倉庫的 GitHub stars 個數比其他所有等級都高(p.value <1e-4)。 您可以在我們的 Github 程式碼倉庫 中看到此圖背後的數據和程式碼。
為了檢查這種關係是否具有普適性,我們創建了一個腳本來自動執行對於論文程式碼倉庫的 用前須知.md 及其關聯程式碼的完整性檢查。然後,我們對 884個NeurIPS 2019會議 程式碼倉庫,以及在2019年發布的所有機器學習論文的更廣泛的 8926 個程式碼倉庫進行了再一次分析。在兩種情況下,我們都得到了相同的定性的結果, GitHub stars 個數跟隨完整性得分顯著性單調增加(p.value <1e-4)。最後,使用穩健線性回歸演算法進行擬合,我們發現「預訓練模型」和「結果展示」這兩個因素對於 GitHub stars 個數具有最大的正面影響。
因此,我們認為可以有力的證明,完整性得分較高的論文程式碼倉庫能獲得更多的好評,進一步的,我們鼓勵研究人員創作符合完整性檢查清單規定的程式碼倉庫,這將有助於其他研究者復現論文的研究,且能收穫更多關注和好評。
目前,我們還不能說清單中的5個要素是導致程式碼倉庫影響歡迎程度的唯一因素,甚至最大因素。其他因素也可能會影響受歡迎程度,例如:科學貢獻的規模,市場營銷(例如部落格文章和 Twitter ),文檔(綜合「用前須知,教程和 API 文檔」等方面),程式碼品質和以前的工作。
一些得分為 5 的 NeurIPS 2019 程式碼倉庫如下所示:
- //github.com/kakaobrain/fast-autoaugment
- //github.com/bknyaz/graph_attention_pool
- //github.com/eth-sri/eran
- //github.com/NVlabs/selfsupervised-denoising
- //github.com/facebookresearch/FixRes
我們承認,雖然我們旨在使清單儘可能通用,但它可能並不完全適用於所有類型的論文,例如理論或數據集論文。 但是,即使論文的主要目標是介紹數據集,它仍然從發布基準線模型,訓練程式碼,評估程式碼和結果展示的工作中受益。
開始使用吧
為了使評審者和用戶更容易理解程式碼倉庫中包含的內容,並為我們能夠正確打分,我們提供了圍繞 用前須知.md文件 編寫的模板,它集合了依賴說明,發布預訓練模型,數據集和結果展示的最佳實踐工作。
我們的建議是,在您的程式碼倉庫中清楚地列出這5個要素,並鏈接到任何相關的外部資源,例如論文和排行榜,以此為您的用戶提供更清晰的研究背景和說明。
現在這項工作已成為 NeurIPS 2020會議 的官方程式碼提交建議。
讓我們共同努力,提高我們領域的可重複性,並幫助推動科學發展吧!
編譯: @白小魚