中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

如何交付機器學(xué)習(xí)項目:一份機器學(xué)習(xí)工程開發(fā)流程指南

2018-10-09    來源:raincent

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

隨著機器學(xué)習(xí)(ML)成為每個行業(yè)的重要組成部分,對機器學(xué)習(xí)工程師(MLE)的需求急劇增長。MLE需要將機器學(xué)習(xí)技能與軟件工程專業(yè)知識相結(jié)合,為特定應(yīng)用程序找到高性能的模型,并應(yīng)對出現(xiàn)的實施挑戰(zhàn)——從構(gòu)建訓(xùn)練基礎(chǔ)架構(gòu)到準(zhǔn)備部署模型。在新的機器學(xué)習(xí)團隊中,遇到最常見的障礙之一是工程師習(xí)慣傳統(tǒng)軟件工程的開發(fā)過程,而開發(fā)新ML模型的過程從一開始就是非常不確定的,需要不斷的嘗試才能找到一個比較合適的模型。

許多類型的專業(yè)人員都面臨著類似的情況:軟件和商業(yè)開發(fā)人員,尋求產(chǎn)品市場契合的初創(chuàng)公司等,這些職業(yè)中的每一個都采用了一個共同的框架,以幫助團隊高效地工作:軟件開發(fā)中的agile/scrum,初創(chuàng)公司和美國空軍的OODA環(huán)。MLE同樣可以遵循類似的框架來應(yīng)對不確定性并快速開發(fā)出優(yōu)質(zhì)的產(chǎn)品。

ML工程環(huán)

在本文中,我們將描述ML的“OODA環(huán)”的概念:ML工程循環(huán),其中ML工程師迭代地

1.分析

2.選擇一種方法

3.實現(xiàn)

4.測量

快速有效地發(fā)現(xiàn)最佳模型并適應(yīng)未知的環(huán)境。此外,我們將為每個階段,以及優(yōu)化過程給出具體的提示。

 

 

MLE環(huán)

ML團隊的成功通常意味著在給定的約束條件下提供高性能模型。例如,實現(xiàn)高預(yù)測準(zhǔn)確性的模型,同時還受到內(nèi)存使用、預(yù)測時間等約束。性能由與最終產(chǎn)品成功最相關(guān)的指標(biāo)定義,無論是準(zhǔn)確性、運行速度、輸出多樣性等。簡單起見,本文選擇將“錯誤率”最小化作為性能指標(biāo)。

當(dāng)剛開始確定新項目的范圍時,就應(yīng)該準(zhǔn)確定義成功的標(biāo)準(zhǔn),然后將其轉(zhuǎn)換為模型指標(biāo)。在產(chǎn)品方面,服務(wù)需要達到什么樣的性能水平?例如,如果在新聞平臺上向個人用戶推薦5篇文章,我們需要多少相關(guān)內(nèi)容,以及如何定義相關(guān)性?鑒于此性能標(biāo)準(zhǔn)和擁有的數(shù)據(jù),可以構(gòu)建的最簡單的模型是什么?

ML工程環(huán)的目的是圍繞開發(fā)過程設(shè)置一個死記硬背的框架,簡化決策過程,專注于其中最重要的步驟。當(dāng)不確定性增加時,即使是最有經(jīng)驗的工程師,這個框架仍然是非常有價值,例如,當(dāng)模型意外地?zé)o法滿足要求時、團隊的目標(biāo)突然改變等情況。

入門

要引導(dǎo)下面描述的循環(huán),您應(yīng)該從一個涉及非常少的不確定性的最小實現(xiàn)開始。通常我們希望盡快建立足夠的系統(tǒng),以便我們可以評估其性能并開始迭代開發(fā)。這通常意味著:

設(shè)置訓(xùn)練、開發(fā)和測試數(shù)據(jù)集,以及構(gòu)建好一個簡單的模型。

例如,如果要構(gòu)建一個樹木探測器來測量一個地區(qū)的樹木種群,可能會使用類似的Kaggle 競賽中的現(xiàn)成訓(xùn)練集,以及來自目標(biāo)區(qū)域的手工收集的一組照片用于開發(fā)和測試集。然后可以對原始像素進行邏輯回歸,或者在訓(xùn)練圖像上運行預(yù)訓(xùn)練網(wǎng)絡(luò)(如ResNet)。此時的目標(biāo)不是一次性地完成項目,而是開始迭代周期。以下是一些有所幫助的提示:

提示

關(guān)于測試集:

由于團隊的目標(biāo)是在測試集上表現(xiàn)良好,所以測試集應(yīng)該反映產(chǎn)品或業(yè)務(wù)的需求。例如,如果正在構(gòu)建一個應(yīng)用程序來檢測自拍的皮膚狀況,請隨意對任何一組圖像進行訓(xùn)練,但要確保測試集中包含光線不足且質(zhì)量差的圖片。

更改測試集會改變團隊的目標(biāo),因此盡早修復(fù)測試集并對其進行修改以反映項目、產(chǎn)品或業(yè)務(wù)目標(biāo)的變化會很有幫助。

測試集合訓(xùn)練集大小都設(shè)置足夠大,以使獲得的性能指標(biāo)足夠準(zhǔn)確,以便在模型之間做出良好區(qū)分。

盡可能地為開發(fā)集和測試集創(chuàng)建對的標(biāo)簽或注釋。錯誤標(biāo)記的測試集等同于錯誤指定的產(chǎn)品要求。

了解人類在測試集上的表現(xiàn)如何,或者現(xiàn)有/競爭系統(tǒng)的表現(xiàn)如何,這將為你提供最佳的錯誤率,即目前可以實現(xiàn)的最佳性能。

最終目標(biāo)是使測試性能盡可能接近我們的猜測,以獲得最佳性能。

關(guān)于開發(fā)和訓(xùn)練集:

開發(fā)集是團隊的測試性能代理,可用于超參數(shù)的調(diào)整。因此,它應(yīng)該與測試集有相同的分布。一個好方法是首先收集一大堆樣本,然后將它們隨機分成開發(fā)集和測試集。

如果認(rèn)為生產(chǎn)數(shù)據(jù)會產(chǎn)生噪音,請確保通過使用數(shù)據(jù)增強或降級來解決訓(xùn)練集中的噪音問題。

一旦獲得初始原型后,應(yīng)檢查其在訓(xùn)練、開發(fā)和測試集上的性能,評估測試性能與產(chǎn)品所需性能之間的差距。開始迭代開發(fā)模型了!

 

 

分析

確定性能瓶頸

分析階段就像醫(yī)療診斷一樣:配備了一套可以執(zhí)行的診斷程序,目標(biāo)是針對限制模型性能的因素提出最可能的診斷。在實踐中,可能會有許多不同的重疊問題導(dǎo)致當(dāng)前的結(jié)果。不要試圖全面了解每一個缺點,而是要了解最重要的因素,因為許多小問題會隨著模型改進而改變甚至消失。

下面,我們列出了一組常用的診斷流程。

每次分析的一個良好起點是查看訓(xùn)練、開發(fā)和測試性能。建議在每次實驗結(jié)束時使用代碼執(zhí)行此操作,以使自己習(xí)慣于每次查看這些數(shù)字。一般而言,訓(xùn)練集錯誤<=開發(fā)集錯誤<=測試集錯誤(如果每組中的數(shù)據(jù)遵循相同的分布)。根據(jù)上一次實驗的訓(xùn)練、開發(fā)和測試錯誤率,可以快速查看這些因素中的哪些是當(dāng)前的約束約束。

 

 

權(quán)重直方圖

診斷和治療

如果訓(xùn)練集錯誤是當(dāng)前的限制因素,則可能會出現(xiàn)以下問題:

1.優(yōu)化算法未被精確調(diào)整。查看學(xué)習(xí)曲線,看看loss損失是否在減少,檢查是否過擬合?梢酝ㄟ^可視化神經(jīng)元反應(yīng)的直方圖,以檢查它們是否飽和(導(dǎo)致梯度消失)。

2.訓(xùn)練集可能包含錯誤標(biāo)記或損壞的數(shù)據(jù)。在訓(xùn)練算法使用之前,在代碼階段手動檢查一些訓(xùn)練樣例。

3.模型可能太小或泛化能力不強。

如果開發(fā)集錯誤是當(dāng)前限制因素,這可能是由以下問題引起的:

1.模型可能太大或過擬合。

2.沒有足夠的訓(xùn)練數(shù)據(jù)來學(xué)習(xí)基礎(chǔ)模式的良好模型。

3.訓(xùn)練數(shù)據(jù)的分布與開發(fā)或測試數(shù)據(jù)分布不匹配。

4.模型的超參數(shù)設(shè)置很差。

5.模型歸納與數(shù)據(jù)匹配不佳。

如果測試集錯誤是當(dāng)前限制因素,這通常是由于開發(fā)集太小或者實驗過程中過度擬合開發(fā)集導(dǎo)致。

對于上述任何一種情況,可以通過手動檢查模型出錯的一組隨機示例來了解模型的失敗。

1.嘗試通過可視化數(shù)據(jù)來識別常見的錯誤類型,然后瀏覽這些示例并記錄每種錯誤發(fā)生的頻率。

2.某些樣本可能被錯誤標(biāo)記或具有多個合理標(biāo)簽。

3.一些樣本可能比其他樣本更難預(yù)測,或者可能缺少做出正確決策所需的上下文。

請注意,上述許多診斷都有直接而明顯的應(yīng)對方法。例如,如果訓(xùn)練數(shù)據(jù)太少,那么只需獲取更多訓(xùn)練數(shù)據(jù)即可!我們?nèi)匀话l(fā)現(xiàn)在心理上將分析階段和選擇階段分開是有用的,因為很多人容易陷入嘗試隨機方法而不真正深入挖掘潛在的問題。此外,以開放的心態(tài)努力回歸錯誤分析通常會發(fā)現(xiàn)更有用的見解,可以改善做出的決定。

例子

 

 

眾所周知,衛(wèi)星數(shù)據(jù)噪聲很大,通常需要檢查。以Insight為例,當(dāng)AI研究員Jack Kwok正在建立一個幫助災(zāi)難恢復(fù)的分割系統(tǒng)時,他注意到雖然他的分割模型在他的衛(wèi)星圖像訓(xùn)練集上表現(xiàn)良好,但它在開發(fā)集上表現(xiàn)不佳。原因是颶風(fēng)圖像質(zhì)量較低且比訓(xùn)練數(shù)據(jù)更模糊。向訓(xùn)練管道添加額外的增強操作,對圖像應(yīng)用模糊有助于縮小訓(xùn)練和開發(fā)性能之間的差距。

 

 

選擇方法

找到解決瓶頸的最簡單方法

在進行分析之后,需要很好地了解模型所出現(xiàn)的錯誤類型以及影響性能的因素。對于給定的診斷,可能存在幾種可能的解決方案,下一步是枚舉并優(yōu)化它們。

上面的一些診斷有著潛在的解決方案。例如,如果訓(xùn)練數(shù)據(jù)集太小,收集更多訓(xùn)練數(shù)據(jù)可能是一個相當(dāng)快速和簡單的解決方案。

建議ML工程師列舉盡可能多的想法,然后偏向簡單、快速的解決方案。如果現(xiàn)有解決方案可能有效,請嘗試在此基礎(chǔ)之上使用遷移學(xué)習(xí)。

提示

根據(jù)診斷,以下是一些常見的解決方案。

如果需要調(diào)整優(yōu)化器以更好地適應(yīng)數(shù)據(jù):

對于數(shù)值優(yōu)化器,嘗試調(diào)整學(xué)習(xí)速率或動量設(shè)置。

嘗試不同的初始化策略,或從預(yù)先訓(xùn)練的模型開始。

嘗試一種更容易調(diào)整的模型。在深度學(xué)習(xí)中,具有批量歸一化的剩余網(wǎng)絡(luò)或網(wǎng)絡(luò)可能更容易訓(xùn)練。

如果模型無法很好地擬合訓(xùn)練數(shù)據(jù):

使用更大或更具表現(xiàn)力的模型類。

檢查模型在標(biāo)記錯誤、缺少字段等的訓(xùn)練集上出錯的示例。在訓(xùn)練數(shù)據(jù)清理中投入時間可以顯著改善性能。

如果模型沒有在開發(fā)集表現(xiàn)不好:

添加更多訓(xùn)練數(shù)據(jù)。

使用真實訓(xùn)練示例生成的新樣本擴充數(shù)據(jù)。例如,如果注意樹檢測器在模糊圖像上始終表現(xiàn)不佳,請使用OpenCV對圖像增強,使圖像看起來有點模糊。

搜索更廣泛或更細(xì)粒度的超參數(shù)范圍,以確保在開發(fā)集上找到表現(xiàn)最佳的模型。

嘗試不同形式的正則化(例如權(quán)重衰減、dropout或決策樹的修剪)。

嘗試不同的模型,不同類型的模型可以改變數(shù)據(jù)擬合程度以及泛化能力。最好先從最簡單的模型開始。

 

 

實現(xiàn)

只構(gòu)建需要構(gòu)建的內(nèi)容,并快速完成

這個階段的目標(biāo)是快速實現(xiàn)基礎(chǔ)模型,以便可以測量出結(jié)果,并從中學(xué)習(xí),之后快速回到開發(fā)循環(huán)周期中。因此,建議專注于構(gòu)建當(dāng)前實驗所需的內(nèi)容。

提示

大多數(shù)人高估了收集和標(biāo)記數(shù)據(jù)所帶來的成本,并低估了在數(shù)據(jù)匱乏的環(huán)境中解決問題的困難。

當(dāng)收集和標(biāo)記數(shù)據(jù)時:

定期查看數(shù)據(jù)。查看原始數(shù)據(jù),在預(yù)處理后查看、查看標(biāo)簽。這一點非常重要!通過在每個步驟中密切關(guān)注數(shù)據(jù)來捕獲許多錯誤。

標(biāo)簽和清洗數(shù)據(jù)是一項常見任務(wù)。大多數(shù)人高估了收集和標(biāo)記數(shù)據(jù)所帶來的成本,并低估了在數(shù)據(jù)匱乏的環(huán)境中解決問題的困難。一旦進入節(jié)奏,可以輕松地每分鐘標(biāo)記20張圖像。思考下,你是想花一個小時標(biāo)記圖像,并花一個小時來解決1200個圖像數(shù)據(jù)集的簡單分類問題,或者花3個星期試圖從5個樣本中學(xué)習(xí)模型呢?

當(dāng)構(gòu)造新的模型時,請從類似的現(xiàn)有實現(xiàn)開始。許多相似的研究論文都開源代碼,這將節(jié)省大量的開發(fā)時間。對于任何問題,建議連續(xù)執(zhí)行以下步驟:

1.找到解決類似問題的模型的實現(xiàn)。

2.在現(xiàn)有模型(相同數(shù)據(jù)集和超參數(shù))的條件下重現(xiàn)實驗。

3.慢慢調(diào)整模型和數(shù)據(jù)以滿足任務(wù)的需求。

4.重寫所需的任何部件。

編寫測試程序以檢查梯度、張量值、輸入數(shù)據(jù)和標(biāo)簽是否格式正確。在最初設(shè)置模型時執(zhí)行此操作,這樣一旦捕獲錯誤并解決后,之后再也不會遇到了。

 

 

測量

打印出需要的測試結(jié)果和任何其他指標(biāo)。

如果實驗結(jié)果的表現(xiàn)有所改善,這可能說明你正走上正軌。在這種情況下,可能是弄清楚運行良好組件的好時機,并確保團隊中的其他人可以復(fù)現(xiàn)該實驗。

另一方面,如果性能變差或沒有足夠的改善,你需要決定是再次嘗試(回到分析階段)還是放棄當(dāng)前的想法。這點取決于二者的成本,嘗試成本和沉沒成本。

提示

有用的績效指標(biāo)包括模型的準(zhǔn)確性和損失,以及業(yè)務(wù)價值指標(biāo)。注意,業(yè)務(wù)相關(guān)的指標(biāo)最終是重要的,因為它們決定了目前開發(fā)的模型的有用性。如果測試指標(biāo)與業(yè)務(wù)指標(biāo)不同,則此測量周期結(jié)束是停止并考慮更改優(yōu)化標(biāo)準(zhǔn)或測試集的好時機。

由于在每個開發(fā)循環(huán)結(jié)束時都打印出相關(guān)的指標(biāo),此時也是計算其他指標(biāo)的時機,可以在分析階段幫助你看決定是否繼續(xù)使用當(dāng)前的想法。

最終會建立一個“儀表板”,其中包含測試指標(biāo)和業(yè)務(wù)指標(biāo),以及每次實驗結(jié)束時可以看到的其他有用數(shù)據(jù)。

優(yōu)化循環(huán)

盡管任務(wù)固有的不確定性,上面的ML工程環(huán)將幫助開發(fā)者朝著更好的模型方向前進。遺憾的是,它無法保證立刻開發(fā)出正確的模型,還需要我們需要培養(yǎng)自己在每個階段做出正確選擇的能力,比如確定性能瓶頸、決定嘗試哪些解決方案、如何正確實現(xiàn),以及如何衡量應(yīng)用程序的性能。此外,還應(yīng)該花時間考慮提高迭代的質(zhì)量和速度,以便在每個周期中取得最大進展,并且可以快速完成多次迭代。

提示

如果在分析階段的結(jié)果并不滿意的話,請創(chuàng)建一個總結(jié)實驗結(jié)果的腳本,從訓(xùn)練和開發(fā)集中收集錯誤,并對其進行格式化。“儀表板”經(jīng)常使用的診斷輸出能幫助你克服這一時刻的思維。

如果覺得自己想要嘗試什么,那就只選擇一個方向?qū)ζ溥M行實驗。試圖一次做太多事情會減慢速度。

收集數(shù)據(jù)是獲得更好性能的常用方法,投資工具以使數(shù)據(jù)更易于收集、清理和標(biāo)記是有意義的。

如果感覺困在診斷瓶頸或不知道如何選擇一個好的模型來嘗試下一步時,請考慮聯(lián)系該領(lǐng)域的專家。專家通常可以在錯誤分析期間提供有用的見解,而研究論文或經(jīng)驗豐富的ML從業(yè)者可能會有創(chuàng)造性的解決方案添加到您要嘗試的事物列表中。

好的實現(xiàn)技能很重要,編碼規(guī)范可以防止錯誤。

如果實驗花費的時間太長,請考慮花一些時間尋找代碼的優(yōu)化,或者與系統(tǒng)專家討論如何加快訓(xùn)練速度。

與其他決策一樣,只有在解決當(dāng)前的痛點時才能處理這些項目。有些團隊花費太多時間構(gòu)建“完美”框架,卻發(fā)現(xiàn)真正令人頭疼的事情在其他地方。

結(jié)論

機器學(xué)習(xí)項目具有內(nèi)在的不確定性,上面推薦的方法旨在為開發(fā)者提供一些指導(dǎo)。雖然每次實驗的結(jié)果無法預(yù)測,很難讓自己對達到特定的準(zhǔn)確度目標(biāo)負(fù)責(zé),但至少可以讓自己負(fù)責(zé)完成錯誤分析、制定想法列表、編寫代碼并查看其工作原理。

作者信息

Emmanuel,數(shù)據(jù)科學(xué)家

文章原標(biāo)題《how to deliver on machine learning projects》,譯者:海棠

http://t.cn/EhSVR6w?spm=a2c4e.11153940.blogcont647485.8.ddd050f7NUGCMa

標(biāo)簽: 代碼 腳本 開發(fā)者 搜索 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:數(shù)據(jù)結(jié)構(gòu)與算法精選面試題

下一篇:機房運維很枯燥?來看看中國銀行數(shù)據(jù)中心基礎(chǔ)