偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

機(jī)器學(xué)習(xí)論文復(fù)現(xiàn),這五大問題你需要注意

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

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

[[350120]]

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

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

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

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

復(fù)現(xiàn)機(jī)器學(xué)習(xí)論文時的常見問題

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

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

1. README 文件不完整或缺失

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

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

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

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

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

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

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

Joelle Pineau 發(fā)布的機(jī)器學(xué)習(xí)可復(fù)現(xiàn)性檢查清單

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

2. 未定義依賴項、代碼存在 bug、缺少預(yù)訓(xùn)練模型

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

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

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

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

3. 未公開參數(shù)

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

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

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

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

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

從很多方面來說,我們很幸運地?fù)碛惺澜绺鞯匮芯空咛峁┑拈_源數(shù)據(jù)集。事實就是如此,數(shù)據(jù)的收集絕非易事,而清理這些數(shù)據(jù)并將其格式化以供研究使用,就更加麻煩一些。在此需感謝學(xué)術(shù)機(jī)構(gòu)和 Kaggle 免費托管這些開源數(shù)據(jù)集,因為帶寬和存儲成本是很高的。

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

某些時候這個過程會很麻煩,如果你所需的數(shù)據(jù)集不可用,在申請行動之前要先認(rèn)真考慮一下?;蛘吣憧梢詮钠渌浪阉骰蛘呦螺d數(shù)據(jù),比如 Academic Torrents:

https://academictorrents.com/。

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

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

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

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

微軟訓(xùn)練 Turning-NLG。

總結(jié)

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

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

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

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

 

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

2010-07-26 15:50:03

Perl腳本語言

2017-11-02 06:18:26

2022-08-30 18:13:38

機(jī)器學(xué)習(xí)

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

虛擬機(jī)管理

2015-06-02 17:05:53

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

2013-06-13 09:54:21

虛擬機(jī)虛擬機(jī)遷移

2013-02-28 09:50:39

戴爾問題私有化
點贊
收藏

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