機(jī)器學(xué)習(xí)如今正在面臨一些危機(jī),將會阻礙該領(lǐng)域的快速發(fā)展。這些危機(jī)源于一個更廣泛的困境,即科學(xué)研究的可重復(fù)性。根據(jù)《自然》雜志對 1,500 名科學(xué)家進(jìn)行的一項(xiàng)調(diào)查,70% 的研究人員曾嘗試復(fù)制其他科學(xué)家的實(shí)驗(yàn)但未能獲得成功,50% 以上的研究人員未能復(fù)制他們自己的研究成果。可重復(fù)性也稱為可復(fù)制性,是科學(xué)方法的核心原則,有助于確保給定研究的結(jié)果不是一次性的,而是可復(fù)制的觀察結(jié)果。
在計(jì)算機(jī)科學(xué)中,可重復(fù)性有一個更狹義的定義:任何結(jié)果都應(yīng)該通過提供所有數(shù)據(jù)和代碼來記錄,以便可以再次執(zhí)行計(jì)算并獲得相同的結(jié)果。不幸的是,在透明度和可重復(fù)性方面,人工智能 (AI) 和機(jī)器學(xué)習(xí)(ML)的進(jìn)展并不順利。例如,有 31 位科學(xué)家在《自然》雜志上發(fā)表的一篇文章,他們對 Google Health 的一項(xiàng)記錄了人工智能檢測乳腺癌跡象的“成功”實(shí)驗(yàn)研究進(jìn)行了嚴(yán)厲批評。
對該實(shí)驗(yàn)持懷疑態(tài)度的科學(xué)家聲稱,谷歌公司的研究提供的關(guān)于人工智能模型如何構(gòu)建和測試的細(xì)節(jié)太少,甚至只是其專有技術(shù)的一種廣告。如果沒有關(guān)于如何創(chuàng)建此模型的足夠信息,科學(xué)界幾乎不可能審查和重復(fù)其結(jié)果。這導(dǎo)致人們越來越認(rèn)為人工智能缺乏透明度,加劇了人類與人工智能系統(tǒng)之間的信任問題。
為了保持機(jī)器學(xué)習(xí)的持續(xù)進(jìn)展,并使其在人工智能方面取得成功,解決該領(lǐng)域的可復(fù)制性和透明度問題至關(guān)重要。本文解釋了人工智能可重復(fù)性危機(jī)的重要性,以及專門為機(jī)器學(xué)習(xí)構(gòu)建的新版本 GitHub 如何幫助解決它。
為什么需要專門為機(jī)器學(xué)習(xí)構(gòu)建的 GitHub
GitHub 是一種基于云的代碼開發(fā)和管理服務(wù)。該平臺用于軟件版本控制,可以幫助開發(fā)人員在整個開發(fā)生命周期中跟蹤代碼的更改。這使得安全地分支和合并項(xiàng)目成為可能,并確保代碼是可重復(fù)的,無論誰運(yùn)行它,都能夠以相同的方式工作。因?yàn)槿斯ぶ悄芎蜋C(jī)器學(xué)習(xí)應(yīng)用程序是用代碼編寫的,所以 GitHub 是管理它們的自然選擇。不幸的是,人工智能與更傳統(tǒng)的軟件項(xiàng)目之間的一些差異使得 GitHub 不適合人工智能,從而導(dǎo)致機(jī)器學(xué)習(xí)的可重復(fù)性危機(jī)。
GitHub 在設(shè)計(jì)時并未將數(shù)據(jù)作為核心項(xiàng)目組件
傳統(tǒng)的軟件算法是由開發(fā)人員從頭腦中提取想法,并用確定性的、數(shù)學(xué)的、完備的圖靈語言將它們編寫為代碼而創(chuàng)建的。這使得軟件具有高度可復(fù)制性——重現(xiàn)給定軟件所需的只是其代碼和用于任務(wù)優(yōu)化的庫。
機(jī)器學(xué)習(xí)算法是不同的,因?yàn)樗鼈儾皇菑拈_發(fā)人員的頭腦中創(chuàng)造出來的,而是從數(shù)據(jù)中“總結(jié)”出來的。這意味著,即使傳統(tǒng)軟件開發(fā)中記錄的代碼和運(yùn)行環(huán)境變量保持不變,如果數(shù)據(jù)發(fā)生變化,機(jī)器學(xué)習(xí)算法也會發(fā)生變化。這是 GitHub 用于人工智能的問題的核心:即使跟蹤用于開發(fā)人工智能算法的代碼和庫,也無法重復(fù),因?yàn)樗蕾囉跀?shù)據(jù),而不僅僅是代碼。
要想克服這個問題,有如下一些方法:
- 自動化數(shù)據(jù)版本控制:為了避免因訓(xùn)練數(shù)據(jù)集不一致而導(dǎo)致的可復(fù)制性問題,數(shù)據(jù)版本控制必須是任何管理人工智能 / 機(jī)器學(xué)習(xí)項(xiàng)目的平臺的關(guān)鍵功能。這為團(tuán)隊(duì)提供了一種自動化方式來跟蹤對數(shù)據(jù)所做的所有更改,確保結(jié)果可以與對應(yīng)訓(xùn)練數(shù)據(jù)集的特定版本相關(guān)聯(lián)。盡管當(dāng)今的 GitHub 可以跟蹤代碼更改,但它無法跟蹤數(shù)據(jù)。克服這一點(diǎn)將在解決人工智能的可重復(fù)性危機(jī)中發(fā)揮關(guān)鍵作用。
- 不可變數(shù)據(jù)沿襲:不可變數(shù)據(jù)沿襲為與數(shù)據(jù)相關(guān)的機(jī)器學(xué)習(xí)生命周期中的所有活動和資產(chǎn)提供不可更改的記錄。這使機(jī)器學(xué)習(xí)團(tuán)隊(duì)能夠跟蹤其代碼、模型和數(shù)據(jù)的每個版本。通過為與機(jī)器學(xué)習(xí)模型相關(guān)的所有活動(從訓(xùn)練到生產(chǎn))提供不變的記錄,可確保可重復(fù)性,并更好地管理歷史數(shù)據(jù)集之間的關(guān)系。
人工智能使用大量的非結(jié)構(gòu)化數(shù)據(jù)集
GitHub 用于人工智能的問題,不僅僅在于無法跟蹤數(shù)據(jù)的變化。傳統(tǒng)軟件和人工智能依賴的數(shù)據(jù)類型是完全不同。傳統(tǒng)軟件是用代碼編寫的,而代碼是用文本表示的。通常來說,文本文件并不是很大。但人工智能主要依賴非結(jié)構(gòu)化數(shù)據(jù),如音頻、圖像和視頻,這些數(shù)據(jù)在量上遠(yuǎn)遠(yuǎn)大于文本文件,因此會面臨額外的數(shù)據(jù)跟蹤和管理挑戰(zhàn)。
將來自多個數(shù)據(jù)源的數(shù)據(jù)組合到單個數(shù)據(jù)存儲中的過程稱為提取、轉(zhuǎn)換和加載 (ETL)。這是將數(shù)據(jù)從源系統(tǒng)復(fù)制到目標(biāo)系統(tǒng)的通用過程,它使不同類型的數(shù)據(jù)可以協(xié)同處理。數(shù)據(jù)科學(xué)家和工程師需要數(shù)據(jù)版本控制、數(shù)據(jù)沿襲、處理大型文件的能力,以及管理用于數(shù)據(jù)處理的腳本和庫,以便提取、轉(zhuǎn)換和加載數(shù)據(jù),以用于人工智能應(yīng)用程序開發(fā)。
本文將討論該問題的一些新興解決方案,但需要注意的是,該功能目前并未內(nèi)置到 GitHub 的核心中,因此無法在平臺上正確管理為機(jī)器學(xué)習(xí)算法提供信息的數(shù)據(jù)。
機(jī)器學(xué)習(xí)模型參數(shù)增加了復(fù)雜性人工智能的可復(fù)制性難題,以及難于將 GitHub 用于機(jī)器學(xué)習(xí)的原因,不僅是無法跟蹤數(shù)據(jù)變化和管理大型非結(jié)構(gòu)化數(shù)據(jù)集。即使用于開發(fā)人工智能算法的代碼、庫和數(shù)據(jù)保持不變,由于模型參數(shù)的可變性,仍然無法使用相同的人工智能系統(tǒng)復(fù)制相同的結(jié)果。如上所述,機(jī)器學(xué)習(xí)算法由數(shù)據(jù)決定。然而,這并不是影響系統(tǒng)的唯一因素。參數(shù)也會影響給定算法的運(yùn)行。模型參數(shù)有兩種類型:超參數(shù)和普通參數(shù)。超參數(shù)可以被認(rèn)為是學(xué)習(xí)過程的高級控制,影響給定模型的結(jié)果參數(shù)。在機(jī)器學(xué)習(xí)模型訓(xùn)練完成之后,參數(shù)就是模型本身的代表。超參數(shù)雖然在訓(xùn)練期間被學(xué)習(xí)算法使用,但不是最終模型的一部分。
根據(jù)超參數(shù)的定義可知,超參數(shù)是在機(jī)器學(xué)習(xí)模型之外,因而無法從數(shù)據(jù)中估計(jì)它們的值。對超參數(shù)的更改會導(dǎo)致機(jī)器學(xué)習(xí)模型的最終算法發(fā)生更改。如果把代碼比作構(gòu)建人類大腦的藍(lán)圖,那么超參數(shù)和模型就是構(gòu)建某個特定大腦的實(shí)施方案。這很重要,因?yàn)橛糜谟?xùn)練模型的相同代碼庫可以生成數(shù)百或數(shù)千個不同的參數(shù)。
實(shí)驗(yàn)結(jié)果跟蹤和代碼審查
在測試機(jī)器學(xué)習(xí)模型時,跟蹤實(shí)驗(yàn)結(jié)果很重要。這些結(jié)果有助于確定哪種模型最適合使用,毫無疑問,GitHub 并不是用來記錄這些細(xì)節(jié)的。盡管可以構(gòu)建自定義解決方法,但這一解決方案無法擴(kuò)展,并且由于時間和資源限制,許多開發(fā)人員無法訪問。
當(dāng)然,管理機(jī)器學(xué)習(xí)模型還涉及代碼審查和版本跟蹤,這是 GitHub 擅長的地方。不過,盡管 GitHub 可以很好地跟蹤代碼和環(huán)境變量,但機(jī)器學(xué)習(xí)引入了跟蹤數(shù)據(jù)、參數(shù)、元數(shù)據(jù)、實(shí)驗(yàn)結(jié)果等的需求。Git 平臺并不是為適應(yīng)這種復(fù)雜程度而構(gòu)建的,但幸運(yùn)的是,有一些新興的解決方案試圖克服 GitHub 對人工智能和機(jī)器學(xué)習(xí)的限制。
用于人工智能和機(jī)器學(xué)習(xí)的 GitHub 替代方案
除了 GitHub,沒有其他替代方案可以為管理人工智能和機(jī)器學(xué)習(xí)項(xiàng)目提供全面的解決方案。為從事人工智能和機(jī)器學(xué)習(xí)的數(shù)據(jù)科學(xué)家和工程師提供量身定制的 GitHub,是最理想的情況。不過,在做到這一點(diǎn)之前,并非沒有可以解決上述不同問題的解決方案:
- Neptune 是用于機(jī)器學(xué)習(xí)操作系統(tǒng)的元數(shù)據(jù)庫服務(wù),它提供了一個單一位置來記錄、存儲、顯示、組織、比較和查詢所有機(jī)器學(xué)習(xí)模型構(gòu)建的元數(shù)據(jù)。提供了有關(guān)使用 Neptune 可對數(shù)據(jù)版本進(jìn)行歸檔。這包括模型訓(xùn)練運(yùn)行中的數(shù)據(jù)集版本控制、運(yùn)行之間的數(shù)據(jù)集比較以及組織和共享數(shù)據(jù)集版本。
- Pachyderm 是用于增強(qiáng)機(jī)器學(xué)習(xí)生命周期的數(shù)據(jù)層。該系統(tǒng)可為自動化數(shù)據(jù)版本控制和不可變數(shù)據(jù)沿襲提供解決方案。
- DVC 是為機(jī)器學(xué)習(xí)項(xiàng)目構(gòu)建的開源版本控制系統(tǒng)。該工具允許數(shù)據(jù)科學(xué)家和工程師保存和重現(xiàn)實(shí)驗(yàn)結(jié)果、控制模型和數(shù)據(jù)的版本,以及建立部署和協(xié)作流程。
- Git 大文件存儲(Git LFS)將音頻樣本、視頻、數(shù)據(jù)集和圖形等大文件替換為 Git 內(nèi)部的文本指針,同時將文件內(nèi)容存儲在遠(yuǎn)程服務(wù)器上。這個工具是一個開源 Git 擴(kuò)展,用于對大型文件(如音頻和視頻數(shù)據(jù)集)進(jìn)行版本控制。它可以幫助開發(fā)人員更高效地處理大型文件和二進(jìn)制文件。
- DoIt 是一個 SQL 數(shù)據(jù)庫,能夠以與 Git 完全相同的方式分叉、克隆、分支、合并、推送和拉取數(shù)據(jù)。它將自己定位為“用于數(shù)據(jù)的 Git”,盡管 DoIt 通常用于版本跟蹤,以確保在各種其他用例中一致的模型可復(fù)制性,但在數(shù)據(jù)管理上,可克服前面所述的 GitHub 的缺點(diǎn)。
- LakeFS 是一種數(shù)據(jù)管理工具,可以在兩種開源付費(fèi)軟件即服務(wù) (SaaS) 版本中使用。該解決方案強(qiáng)調(diào)數(shù)據(jù)和代碼的完全可重復(fù)性、快速數(shù)據(jù)還原和 PB 級版本控制。
- DeltaLake 是一個開源項(xiàng)目,可以在現(xiàn)有存儲系統(tǒng)(如 S3、ADLS、GCS 和 HDFS)之上構(gòu)建 Lakehouse 架構(gòu)。該解決方案的一些特性使其成為機(jī)器學(xué)習(xí)的理想選擇,包括用于數(shù)據(jù)共享的開放協(xié)議、可擴(kuò)展的元數(shù)據(jù)處理、數(shù)據(jù)版本控制,以及查看對數(shù)據(jù)所做的每次更改的審計(jì)歷史記錄的能力。