成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

機器學習論文復現(xiàn),這五大問題你需要注意

開發(fā) 開發(fā)工具 機器學習
論文復現(xiàn)一直是機器學習領(lǐng)域的難題,雖然最近多個學術(shù)會議提倡大家提交代碼,但解決論文復現(xiàn)問題仍然任重而道遠。在試圖復現(xiàn)機器學習論文時,我們經(jīng)常遇到哪些問題呢?新加坡機器學習工程師 Derek Chia 對此進行了總結(jié)。

我最初接觸機器學習時,花費了大量時間來閱讀論文,并嘗試實現(xiàn)。當然,我不是天才。實現(xiàn)它意味著要執(zhí)行 git clone 并嘗試運行論文作者的代碼。對于我感興趣的概念,我可能還手動輸入一些代碼并進行注釋,以便更好地理解論文和項目。

[[350120]]

這樣的學習方法令人沮喪。嘗試復現(xiàn)論文的流程大致如下:

  • 一些達到新 SOTA 的論文在新聞媒體中引起關(guān)注;
  • 讀者深入研究或快速瀏覽論文內(nèi)容;
  • 讀者對論文中的實驗結(jié)果印象深刻,并產(chǎn)生復現(xiàn)的興趣。

接下來就是瘋狂搜索項目代碼,并嘗試在作者所用的數(shù)據(jù)集上運行代碼。這時,你需要祈禱該項目具備以下要素:運行說明(README.md)、代碼、參數(shù)、數(shù)據(jù)集、數(shù)據(jù)集路徑、軟件環(huán)境、所需依賴項以及硬件條件。了解這些,才能順利復現(xiàn)論文中的 SOTA 結(jié)果。

而在這個過程中,你可能會遇到很多常見問題(參見下文)。遇到問題之前先了解它們是很有幫助的,畢竟,沒人喜歡空手而歸。

復現(xiàn)機器學習論文時的常見問題

復現(xiàn)過程中的常見問題如下所示:

  • README 文件不完整或缺失;
  • 未定義依賴項、代碼存在 bug、缺少預訓練模型;
  • 未公開參數(shù);
  • 私有數(shù)據(jù)集或缺少預處理步驟;
  • 對 GPU 資源的需求不切實際。

1. README 文件不完整或缺失

如果一篇論文在發(fā)表時開源了代碼,那么 README 就是你著手開始復現(xiàn)項目的文檔之一。好的 README 文件通常具備以下幾個組成部分:依賴項列表、訓練腳本、評估腳本、預訓練模型以及運行腳本得到的結(jié)果。

實際上,這些內(nèi)容已經(jīng)在 Papers with Code 發(fā)布的《機器學習代碼完整性自查清單》中列出(該清單已成為 NeurIPS 2020 代碼提交流程的一部分)。該清單受到麥吉爾大學副教授、Facebook 蒙特利爾 FAIR 實驗室負責人 Joelle Pineau 的啟發(fā)。

Papers with Code 提供的 README 樣例參見:

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

不完整的 README 文件對運行代碼而言是一個壞的開端。

一個需要注意的信號是示例 notebook 或示例代碼。notebook 的用途是演示代碼的使用。理想情況下,除了點擊「Run all」以外,不需要任何其他調(diào)整就能夠運行 notebook。預填充參數(shù)和數(shù)據(jù)路徑的命令行也能夠?qū)崿F(xiàn)同樣的效果。

還有一些次要但有用的信息,比如作者的聯(lián)系方式或展示模型架構(gòu)或數(shù)據(jù)轉(zhuǎn)換流程的 gif 圖片等,這些都是完備的 README 文件應該包含的。如果代碼庫托管在 GitHub 上,請檢查 Issue 區(qū)域的問題是否得到了積極回復,以及 pull request 是否定期被查看。這些事項均能證明庫得到精心維護,確保后續(xù)復現(xiàn)工作得到有效支持。當然會有例外,但請慎重考慮以上各項出現(xiàn)缺失的情況。

Joelle Pineau 發(fā)布的機器學習可復現(xiàn)性檢查清單

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

2. 未定義依賴項、代碼存在 bug、缺少預訓練模型

當你對示例 notebook 覺得滿意后,你或許想嘗試用不同的參數(shù)在自己的數(shù)據(jù)集上試用模型。在這一階段,你或許會調(diào)用示例 notebook 中未用到的函數(shù),或者在自己的數(shù)據(jù)集上嘗試預訓練模型,這時可能會遇到問題。

例如,你可能注意到 requirements.txt 缺失,或者軟件包版本未固定(如 tensorflow==2.2)想象一下當你發(fā)現(xiàn) TensorFlow 版本是 1.15 而不是 2.2,原因只是作者沒有指定版本時的爆炸心態(tài)吧。

假設你檢查過了依賴項,然而現(xiàn)在卻發(fā)現(xiàn)預訓練模型失蹤了!這種情況下,你要么 debug 代碼,要么提交 bug 報告,要么忽略代碼。請謹慎選擇第一個選項,因為你可能會在這上面花費好幾個小時。當然有的 bug 很容易解決,如果我能修復的話,我會提交 pull request。但并不是每次都那么好運,這些隨手可及的果子有時候很難摘。

預訓練模型缺失是一個危險信號,但這其實并不罕見。畢竟,論文作者沒有義務發(fā)布模型。那么,另一個替代方法是使用公開的參數(shù)訓練模型進行復現(xiàn)。不過參數(shù)也不總是公開……

3. 未公開參數(shù)

根據(jù)模型情況來看,超參數(shù)對于實現(xiàn) SOTA 結(jié)果是非常重要的。下圖展示了不同參數(shù)產(chǎn)生不同的 f1 分數(shù)(范圍從 0.5 到 1.0)。模型中的參數(shù)通常是學習率(learning rate)、嵌入尺寸(embedding size)、層數(shù)、dropout 量、批處理大小、訓練 epoch 數(shù)量等。

因此,如果作者沒有提供他們使用的確切參數(shù),你可能必須自己進行所有實驗才能復現(xiàn) SOTA 結(jié)果。

順便說一句,F(xiàn)acebook 的 HiPlot 是一個很好的工具,幫助你在使用不同參數(shù)組合時將模型結(jié)果可視化。

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

4. 私有數(shù)據(jù)集或缺少預處理步驟

從很多方面來說,我們很幸運地擁有世界各地研究者提供的開源數(shù)據(jù)集。事實就是如此,數(shù)據(jù)的收集絕非易事,而清理這些數(shù)據(jù)并將其格式化以供研究使用,就更加麻煩一些。在此需感謝學術(shù)機構(gòu)和 Kaggle 免費托管這些開源數(shù)據(jù)集,因為帶寬和存儲成本是很高的。

然而想使用私有數(shù)據(jù)集,并非易事。數(shù)據(jù)集可能包含受版權(quán)保護的信息,比如 ImageNet。通常你需要填寫一份申請表,版權(quán)所有者將自行決定是否批準。

某些時候這個過程會很麻煩,如果你所需的數(shù)據(jù)集不可用,在申請行動之前要先認真考慮一下。或者你可以從其他渠道搜索或者下載數(shù)據(jù),比如 Academic Torrents:

https://academictorrents.com/。

5. 對 GPU 資源的需求不切實際

近期出現(xiàn)了一股趨勢:模型越大性能越好。一些論文使用了整個數(shù)據(jù)中心的算力才達到 SOTA 結(jié)果,這些論文復現(xiàn)起來當然很難。例如,2019 年 10 月谷歌發(fā)表論文《Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer》,嘗試通過將參數(shù)擴展到 110 億來探索 Transformer 模型架構(gòu)的局限性。然而幾個月后微軟用 170 億參數(shù)創(chuàng)建了 Turning-NLG,不久 OpenAI 放出 1750 億參數(shù)的預訓練語言模型 GPT-3……

要想訓練數(shù)十億參數(shù)的模型,你需要使用分布式訓練方法以及某種形式的高性能計算(HPC)或 GPU 集群。具備 110 億和 170 億參數(shù)的模型分別需要約 44GB 和 68GB 的內(nèi)存,因此這些模型無法僅使用一塊 GPU 完成訓練。

簡而言之,盡早發(fā)現(xiàn)論文所用大模型是否超出你的個人能力。

微軟訓練 Turning-NLG。

總結(jié)

復現(xiàn)論文代碼并非易事,不過越來越多的項目嘗試標準化 SOTA 模型。我個人最喜歡的是 HuggingFace 的 Transformers,它為研究者和開發(fā)者提供了足夠低的進入門檻。另外,TensorFlow 的 Model Garden 和 PyTorch 的 Model Zoo 也發(fā)展迅速(其中分別是 TensorFlow 和 PyTorch 團隊構(gòu)建的預訓練模型)。

這些庫旨在標準化預訓練模型的使用,并為模型貢獻和分發(fā)提供合適的條件。它們對代碼質(zhì)量提供了保障,并且具備不錯的文檔。我希望社區(qū)能從這些庫中獲益,并幫助復現(xiàn) SOTA 結(jié)果,輕松地使用 SOTA 模型。

【本文是51CTO專欄機構(gòu)“機器之心”的原創(chuàng)譯文,微信公眾號“機器之心( id: almosthuman2014)”】 

戳這里,看該作者更多好文

 

責任編輯:趙寧寧 來源: 51CTO專欄
相關(guān)推薦

2010-07-26 15:50:03

Perl腳本語言

2022-08-30 18:13:38

機器學習

2017-11-02 06:18:26

2013-03-26 10:45:00

2011-11-16 09:46:14

IaaS云計算

2011-08-23 12:11:45

2016-06-08 11:44:37

2010-06-29 15:54:36

UML建模

2011-02-22 09:34:33

2015-09-30 10:09:35

2016-09-23 16:09:01

2013-09-30 10:13:42

2016-04-19 10:23:48

2010-07-09 13:28:10

UML建模

2020-10-14 15:03:07

編程PythonJava

2015-03-11 09:55:12

2009-11-02 16:48:45

虛擬機管理

2015-08-04 10:47:52

游戲策劃手機游戲

2015-06-02 17:05:53

軟件定義數(shù)據(jù)中心

2013-02-28 09:50:39

戴爾問題私有化
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: www.青娱乐| 嫩草视频网 | 日产精品久久久一区二区福利 | 国产丝袜一区二区三区免费视频 | 欧美一区二区三区 | 亚洲精品视频免费观看 | 国产精品久久久久久久久久久久久久 | 亚洲精品一区二区三区蜜桃久 | 国产精品久久久久久婷婷天堂 | 成人在线观看免费爱爱 | 欧美黑人又粗大 | 欧美a级网站 | 毛片网站在线观看视频 | 成年人精品视频在线观看 | 日韩精品一区二区三区中文在线 | 欧美激情一区二区 | 欧美亚洲综合久久 | 国产男人的天堂 | 国产精品久久久久久久岛一牛影视 | 亚洲视频免费在线观看 | 中文字幕在线观看第一页 | 日本一卡精品视频免费 | 久久精品在线免费视频 | 亚洲一区二区三区免费 | 国产xxx在线观看 | 欧美精三区欧美精三区 | 男女啪啪网址 | 久草网址 | 三级黄色大片网站 | 欧美日韩不卡合集视频 | 国产精品久久久久久久久免费软件 | 欧美一级二级视频 | 日韩在线视频精品 | 亚洲在线免费观看 | 国产福利在线小视频 | 日韩精品在线网站 | 欧美精品久久久 | 久久一二区 | 国产精品片aa在线观看 | 久久精品99 | 中文字幕成人免费视频 |