欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
【Google 年度頂級論文】機器學(xué)習系統,隱藏多少技術(shù)債?(論文下載)

新智元翻譯1

來(lái)源:NIPS

譯者:王婉婷 李宏菲 張巨巖


本文作者:D. Sculley, Gary Holt, Daniel Golovin, Eugene Davydov, Todd Phillips,Dietmar Ebner, Vinay Chaudhary, Michael Young, Jean-Franc?ois Crespo, Dan Dennison。(以上為Google研究人員)



1. 介紹


隨著(zhù)機器學(xué)習(ML)社群持續積累了幾年對于活躍系統(live systems)的經(jīng)驗,一種讓人不舒服的趨勢廣泛地浮出水面:研發(fā)和部署機器學(xué)習系統相對來(lái)說(shuō)是既快速又便宜的,但維護它們卻很困難,并且成本昂貴。



這種對立可以用“技術(shù)債”的框架來(lái)理解。1992年WardCunningham引入了這個(gè)比喻,用來(lái)幫助解釋在軟件工程領(lǐng)域里因為進(jìn)展快速而帶來(lái)的長(cháng)期成本。就像欠下財政債務(wù)一樣,欠下技術(shù)債務(wù)也總是有充分的戰略性原因。并不是所有的債務(wù)都是不好的,但是,所有的債務(wù)都需要付出利息。技術(shù)債可能通過(guò):


重構代碼(refactoringcode)、改進(jìn)單元測試(improvingunit tests)、刪除無(wú)用代碼(deletingdead code)、降低依賴(lài)(reducing dependencies)、精簡(jiǎn)應用程序接口(tightening APIs)、以及改進(jìn)說(shuō)明(improving documentation)的方式來(lái)逐漸償還。


這些行動(dòng)的目標并不是為了增加全新的功能,而是為了使未來(lái)能夠繼續改進(jìn),減少報錯,以及提高維護性。推遲償還只會(huì )帶來(lái)越來(lái)越高昂的成本。因為技術(shù)債會(huì )高速增長(cháng),所以它是非常危險的。


在這篇論文中,我們提出,機器學(xué)習系統有其特有的、帶來(lái)技術(shù)債的能力,因為它們不僅有傳統代碼所有的維護問(wèn)題,還要額外加上機器學(xué)習的一些特有問(wèn)題。這種債務(wù)可能很難被察覺(jué)到,因為它存在于系統層面而不是代碼層面。鑒于數據會(huì )影響機器學(xué)習系統的行為表現,傳統的抽象化和邊界可能悄悄崩潰(corrupted)或是失效(invalidated)。償還代碼層面技術(shù)債務(wù)的典型方法在系統層面的機器學(xué)習特有的技術(shù)債面前是不夠的。


這篇論文并不提供全新的機器學(xué)習算法,而是尋求提高機器學(xué)習社群對于機器學(xué)習系統技術(shù)債的意識;從長(cháng)遠來(lái)看,實(shí)際操作中這些艱難的權衡必須得到考慮。我們關(guān)注于系統層面的交互和接口,因為這是一個(gè)可能會(huì )快速積累機器學(xué)習技術(shù)債的領(lǐng)域。在系統層面上,一個(gè)機器學(xué)習模型可能會(huì )嚴重侵蝕抽象化邊界(abstractionboundaries)。多次利用輸入信號(re-use)或連鎖輸入信號(chain)非常吸引人,但可能會(huì )無(wú)意中將幾個(gè)系統組合起來(lái)(combine),也可能會(huì )令組合系統脫節(disjoint)。機器學(xué)習可能會(huì )被當作是黑匣,導致大量的“膠水代碼”(glue code)或是大量校準層(calibration layers)。外部世界的變化可能會(huì )在無(wú)意中影響系統行為。在設計不夠仔細的時(shí)候,即使是監控機器學(xué)習系統的行為都可能會(huì )使一件困難的事情。我們探索了一些機器學(xué)習特有的需要在設計系統時(shí)考慮到的風(fēng)險因素。這些包括了:


(1)邊界侵蝕(boundary erosion)

(2)糾纏(entanglement)

(3)隱藏反饋循環(huán)(hiddenfeedback loops)

(4)未申明的訪(fǎng)問(wèn)者(undeclared consumers)

(5)數據依賴(lài)(data dependencies)

(6)配置問(wèn)題(configuration issues)

(7)外部世界變化(changesin the external world)

(8)系統層面的反面模式(anti-patterns)



2. 復雜模型侵蝕邊界


傳統的軟件設計實(shí)踐表明,使用封裝和模塊設計的強抽象化邊界有助于創(chuàng )造便于維護的代碼,因為這讓獨立更改和改進(jìn)變得很簡(jiǎn)單。給定元素中信息輸入輸出中,嚴格的抽象化邊界有助于表達不變條件(invariants)以及邏輯一致性。


不幸的是,通過(guò)預先設置特殊的行為來(lái)迫使機器學(xué)習系統擁有嚴格的抽象化邊界是非常困難的。事實(shí)上,機器學(xué)習恰恰是被應用在相反的情況中:當不依賴(lài)于外部數據、期望的行為便無(wú)法在軟件邏輯里被有效表達時(shí)。真實(shí)世界并不能被干凈整齊地封裝起來(lái)。在這里,我們檢驗了一些會(huì )導致邊界侵蝕、進(jìn)而使機器學(xué)習系統中的技術(shù)債顯著(zhù)提高的情況。



糾纏


機器學(xué)習系統將信號混在一起,使它們互相糾纏,讓獨立更新變成一件不可能的事。比如,想象一下一個(gè)在模型中使用了特征x1,…xn的系統。如果我們改變了x1中輸入值的分布,那么剩下n-1個(gè)特征的重要性、權重、或是用法(use)可能都會(huì )隨之發(fā)生變化。增加一個(gè)新特征xn+1會(huì )導致相似的改變,就像移除其中任何一個(gè)特征一樣。不存在真正意義上獨立的輸入。我們在這里稱(chēng)它為CACE法則:改變任何東西都意味著(zhù)改變一切(ChangingAnything Changes Everything)。CACE不僅適用于輸入信號,也適用于超參數(hyper-parameters)、學(xué)習情景(learningsettings)、抽樣方法(samplingmethods)、收斂閾值(convergencethresholds)、數據選擇(dataselection)、以及其他在本質(zhì)上是微小改動(dòng)的部分。


一種可能的緩解策略是,將模型分離開(kāi)、轉而提供集成模型。這個(gè)方法在分離式多層環(huán)境之類(lèi)的情景下(例如在[14]中)是有用的,因為這樣的環(huán)境下,這個(gè)方法能夠讓糾纏導致的各種問(wèn)題都自然而然地消解。然而,在許多例子里,集成模型的效果非常好是因為它的組成模型各自的誤差是不相關(guān)的。依賴(lài)于這樣的組合會(huì )導致嚴重的糾纏問(wèn)題:改進(jìn)一個(gè)組成模型可能實(shí)際上讓整個(gè)系統的準確度變得糟糕了——如果余下的誤差與其它組成模型的誤差相關(guān)性變得更強烈。


第二種可能的策略是,關(guān)注預測行為發(fā)生的變化。[12]中提出,用一個(gè)高維度可視化工具來(lái)讓研究者們可以快速看到許多維度和切片上的效果。以切片為基礎進(jìn)行操作的矩陣可能也會(huì )非常有用。



嵌套修正


經(jīng)常會(huì )出現一種情況:針對問(wèn)題A的模型ma已經(jīng)有了,但現在需要一個(gè)針對稍有不同的問(wèn)題A’的模型。在這樣的情況下,將ma作為輸入信息、并學(xué)習一個(gè)小改變的模型是非常誘人的,它可以很快地解決問(wèn)題。


然而,這種修正模型帶來(lái)了新的對于ma的系統依賴(lài),讓未來(lái)分析改進(jìn)這個(gè)模型的代價(jià)變得更為昂貴。當修正模型多層嵌套——針對問(wèn)題A’’的模型是基于m’a習得的之類(lèi)——來(lái)適應幾個(gè)有些許不同的測試分布時(shí),成本會(huì )變得更為高昂。一旦存在,嵌套修正模型會(huì )讓改進(jìn)陷入僵局,因為改進(jìn)任何一個(gè)單獨的組成部分的準確性事實(shí)上都會(huì )帶來(lái)系統層面的損害。緩解策略是擴充ma,通過(guò)增加辨別特征讓ma直接在它所在的模型里習得修正;或者接受為A’單獨創(chuàng )造一個(gè)模型的成本。



未聲明的訪(fǎng)問(wèn)者


許多時(shí)候,來(lái)自一個(gè)機器學(xué)習模型ma的預測能被許多程序訪(fǎng)問(wèn)的,或者是在運行時(shí)、或者是通過(guò)寫(xiě)入文件或是日志來(lái)讓其他系統可以在之后訪(fǎng)問(wèn)。不對訪(fǎng)問(wèn)進(jìn)行控制的話(huà),一些訪(fǎng)問(wèn)者可能是未聲明的(undeclared),悄無(wú)聲息地將一個(gè)模型的輸出結果輸入給另一個(gè)系統。在更經(jīng)典的軟件工程領(lǐng)域,這個(gè)問(wèn)題被稱(chēng)為可見(jiàn)性債務(wù)(visibilitydebt)。


未聲明的訪(fǎng)問(wèn)者往好了說(shuō)會(huì )帶來(lái)昂貴的成本,往壞了說(shuō)更是危險的,因為它們在模型ma與堆棧其他部分之間創(chuàng )建了一個(gè)隱藏的緊耦合。對ma的改變將很有可能也影響到這些其它的部分,也許通過(guò)無(wú)意的、尚未被理解的、會(huì )造成損傷的方式。實(shí)際操作中,這種緊耦合會(huì )逐漸增加對ma做任何改變的成本和難度,即使這些改變是為了提升性能。不僅如此,未聲明的訪(fǎng)問(wèn)者可能會(huì )創(chuàng )建隱藏的反饋循環(huán),在第4部分我們會(huì )更詳細地討論這個(gè)問(wèn)題。


未聲明的訪(fǎng)問(wèn)者可能很難被發(fā)現,除非系統在設計時(shí)就特意針對這個(gè)問(wèn)題作了防護,比如限制訪(fǎng)問(wèn)或是有嚴格的服務(wù)級別協(xié)議(strictservice-level agreements, SLAs)。在缺乏限制的情況下,工程師們自然會(huì )使用手頭最方便的信號,特別是當需要面對截止時(shí)間的壓力時(shí)。



3. 數據依賴(lài)比代碼依賴(lài)成本更高


在經(jīng)典的軟件工程環(huán)境中,依賴(lài)債務(wù)(dependencydebt)被認為是代碼復雜程度和科技債的重要貢獻者。我們已經(jīng)發(fā)現,機器學(xué)習系統中的數據依賴(lài)具有相似的形成債務(wù)的能力,但可能更難被察覺(jué)到。代碼依賴(lài)可以通過(guò)編譯器和鏈接的靜態(tài)分析被鑒定出來(lái)。由于缺乏相似的工具用來(lái)鑒定數據依賴(lài),形成大型的、難以拆解的數據依賴(lài)鏈是一件很容易發(fā)生的事情。



依賴(lài)于不穩定的數據


為了獲得快速進(jìn)展,將其他系統生成的信號當作輸入的特征是非常便利的。然而,一些輸入的信號是不穩定的(unstable),這意味著(zhù)它們的行為隨著(zhù)時(shí)間會(huì )發(fā)生數量上的變化(quantitatively)或是質(zhì)量上的變化(qualitatively)。這可能發(fā)生得非常隱蔽,比如這個(gè)輸入信號來(lái)自于另一個(gè)自身會(huì )隨時(shí)間更新的機器學(xué)習模型,或者一個(gè)依賴(lài)于數據的、用來(lái)計算TF/IDF分數或是語(yǔ)義映射的查找表(lookuptable)。這也可能發(fā)生得非常明顯,比如當輸入信號的工程所有權(engineeringownership)獨立于使用這個(gè)輸入信號的模型的工程所有權。在這樣的情況下,可以在任何時(shí)候對輸入信號進(jìn)行更新。這是非常危險的,因為即使是對輸入信號的“改進(jìn)”也可能會(huì )對使用這個(gè)信號的系統產(chǎn)生不確定的危害作用,要診斷這樣的問(wèn)題需要很高的成本。比如,想象一下這樣的情況:一個(gè)輸入信號之前的校準是錯誤的(mis-calibrated),使用這個(gè)信號的模型很可能擬合這些錯誤的校準;對信號作了更正以后,整個(gè)模型都會(huì )突然發(fā)生變化。


針對依賴(lài)于不穩定數據的問(wèn)題,一種常見(jiàn)的緩解策略是,對于一個(gè)給定信號創(chuàng )建一份標記版本的副本。比如,與其允許一個(gè)詞匯(words)到主題(topics)的語(yǔ)義映射聚合隨時(shí)間一直變化,創(chuàng )建這個(gè)映射的凍結副本(frozenversion)、一直使用到更新版本被徹底檢查確認完畢是更好的選擇。然而,創(chuàng )建每個(gè)版本的副本會(huì )帶來(lái)它自己的成本,例如可能的冗余以及同一信號隨時(shí)間而產(chǎn)生的不同版本的維持成本。



依賴(lài)于未充分使用的數據


在代碼層面,未被充分使用的依賴(lài)指的是大部分時(shí)候非必要的包(Packages)。相似的,依賴(lài)于未充分使用的數據指的是幾乎不能為模型提供性能提升的輸入信號。這會(huì )導致機器學(xué)習系統在變化的時(shí)候容易出現問(wèn)題,有時(shí)候還會(huì )造成災難,即使這些依賴(lài)可以被無(wú)損移除。


例如,假如要簡(jiǎn)化從老編號方案到新編號方案的過(guò)渡,那么兩種方案都作為特征留在系統里。新的產(chǎn)品只有新的編號,但老的產(chǎn)品會(huì )有新、老編號,而模型在某些產(chǎn)品上,會(huì )持續依賴(lài)于老的編號。一年后,停止將老編號填充進(jìn)數據庫的代碼被刪除了。這對于機器學(xué)習系統的維修者來(lái)說(shuō)不會(huì )是一個(gè)愉快的日子。


依賴(lài)于未充分使用的數據,這個(gè)問(wèn)題可以通過(guò)多種方式蔓延進(jìn)入模型中。


遺留特征:很常見(jiàn)的例子是,特征 F 在早期的開(kāi)發(fā)中存在,但隨著(zhù)開(kāi)發(fā)進(jìn)行,在新的特征中 F 變成多余了,但并沒(méi)有被發(fā)覺(jué)。


捆綁特征:很多時(shí)候,一組特征被評估為有用的。但是由于截止期限的壓力或其他類(lèi)似原因,這組特征都被加入到新模型了,其中就很可能包括一些沒(méi)有價(jià)值的特征。


特征:作為機器學(xué)習研究者,總是會(huì )想方設法改善模型的精確程度,哪怕這個(gè)精確度的提升是非常的小,或者帶來(lái)的復雜度會(huì )很高。


相關(guān)特征:有時(shí)候兩個(gè)特征是相關(guān)性很高,但其中一個(gè)特征有更直接的因果作用。很多機器學(xué)習方法很難識別出來(lái)區別,而是把這兩者等同看待,甚至可能選擇了沒(méi)有因果關(guān)系的那個(gè)特征。當真實(shí)世界的行為改變了特征之間的相關(guān)性,結果就會(huì )變得很脆弱、不夠穩健。


依賴(lài)于未充分使用的數據這一問(wèn)題可以通過(guò)完全把一個(gè)特征丟棄以評估檢測。這項工作需要定期進(jìn)行,以識別并移除多余的特征。



圖1:在真實(shí)世界的整個(gè)機器學(xué)習系統中,只有一小部分是由機器學(xué)習的代碼組成,圖片中用中間的小黑盒來(lái)表示。它需要大量并且復雜的周邊設施。



對數據依賴(lài)作靜態(tài)分析


在傳統的代碼中,編譯器和編譯系統可以用依賴(lài)圖(dependencygraphs)做靜態(tài)分析。數據依賴(lài)的靜態(tài)分析工具非常少,但它們對于錯誤檢查、訪(fǎng)問(wèn)者追蹤、遷移和更新(migrationand updates)來(lái)說(shuō)都很必要。這類(lèi)工具其中之一就是自動(dòng)特征管理系統(automatedfeature management system),它讓數據源和特征可以被標注,然后運行自動(dòng)檢查來(lái)確保所有的依賴(lài)都有恰當的標注,而依賴(lài)樹(shù)(dependencytree)可以被完全解開(kāi)(fullyresolved)。這類(lèi)工具在實(shí)踐中能讓遷移和刪除操作變得安全得多。





4. 反饋循環(huán)


現在機器學(xué)習系統的主要特征之一即是,如果系統隨時(shí)間不斷進(jìn)行更新,這些系統最終會(huì )影響它們自身的行為。這就導致了某種形式的分析債,即在一個(gè)系統未發(fā)布之前很難預測一個(gè)給定模型的行為。這些反饋循環(huán)可以有不同的形式,但如果所有這些反饋循環(huán)是隨時(shí)間而逐漸發(fā)生的話(huà),它們是很難被檢測到的,當模型更新不頻繁時(shí)就是這樣。



直接反饋循環(huán)


一個(gè)模型可能直接影響到它自身未來(lái)訓練數據的選擇。盡管理論上正確的解決方法是賭博機算法,但是采用標準的監督算法已經(jīng)是一種很普遍的做法。問(wèn)題是賭博機算法(例如語(yǔ)境賭博機算法)實(shí)質(zhì)上不能很好的地縮放到現實(shí)世界中要求的動(dòng)作空間的尺度大小。因而,可以通過(guò)采用一些隨機化的操作或者隔離受到給定模型影響的某部分數據等方式來(lái)緩解上述的不良影響。



隱藏反饋循環(huán)


直接反饋循環(huán)分析起來(lái)代價(jià)是非常昂貴的,但是它們至少提出來(lái)了一個(gè)機器學(xué)習研究者們很自然地會(huì )去琢磨的統計挑戰。相比之下,更困難的情況是隱藏反饋循環(huán),即兩個(gè)系統在世界范圍內間接地互相影響。


一個(gè)例子可能是,如果兩個(gè)系統單獨地決定一個(gè)網(wǎng)頁(yè)的某些方面,例如一個(gè)系統對產(chǎn)品進(jìn)行挑選并展示,另一個(gè)系統挑選相關(guān)的評論。改進(jìn)一個(gè)系統可能導致另一個(gè)系統行為的變化,因為作為對于改變的反應,用戶(hù)開(kāi)始更多或更少地點(diǎn)擊其他部分。需要注意的是,在兩個(gè)完全不相交的系統中也可能會(huì )存在隱藏反饋循環(huán)。可以從來(lái)自于兩個(gè)不同的投資公司的兩個(gè)股票市場(chǎng)預測模型的案例加以考慮,如果對其中的一個(gè)模型做出某些改進(jìn)(或者,bug),則另一個(gè)模型的投標和購買(mǎi)行為相應地也會(huì )受到一定程度的影響。



5. 機器學(xué)習系統的反面模式


對于學(xué)術(shù)領(lǐng)域的眾多研究者而言,了解到在許多的機器學(xué)習系統中僅僅只有一小部分的代碼用來(lái)進(jìn)行學(xué)習或者預測可能會(huì )讓他們感到非常驚訝(如圖1所示)。在Lin和Rayboy語(yǔ)言中,除了僅有的小部分代碼用于學(xué)習或者預測,大部分剩余代碼被稱(chēng)為“管道工程”。


不幸的是,對于一個(gè)融合了機器學(xué)習算法并最終債臺高筑的系統來(lái)說(shuō),這很普遍。在這個(gè)章節中,我們檢測了數個(gè)在許多的機器學(xué)習系統中顯露的反面模式系統設計,以及在有可能的時(shí)候哪些應該被避免或重構。



粘合代碼


機器學(xué)習研究者傾向于開(kāi)發(fā)普遍適用的解決方案作為自給自足的包(packages)。在像mloss.org、in-house code、專(zhuān)有軟件包、基于云平臺等地方,有許多這種包以開(kāi)源包的形式存在。


采用通用軟件包經(jīng)常會(huì )導致粘合代碼的系統設計模式,在這種系統設計模式中,包含了大量支持數據寫(xiě)入通用軟件包或者數據從通用軟件包中輸出的代碼。粘合代碼的代價(jià)從長(cháng)遠來(lái)看是很高的,因為這將系統局限于(freeze)一個(gè)特定包的特點(diǎn),如果要測試其他方法,成本就會(huì )變得不可避免的昂貴。因此,采用通用包會(huì )抑制改進(jìn),因為以粘合代碼的形式使得利用特定領(lǐng)域的特性或者調整目標函數實(shí)現特定領(lǐng)域的目標變得更加困難,。由于一個(gè)成熟的機器學(xué)習系統可能最終會(huì )包含(最多)5%的學(xué)習代碼和(最少)95%的粘合代碼,創(chuàng )建一個(gè)干凈純粹的解決方案比重復使用通用軟件包成本要更低。


對抗粘合代碼的重要策略之一就是,將黑盒包(black-box packages)包裝進(jìn)普通的應用程序接口。這讓周邊支持的基礎設施能被更多地重復利用,降低更換包的成本。



管道叢林


作為粘合代碼的一種特殊情況,“管道叢林”(pipeline jungles)現象經(jīng)常出現在數據預備階段。隨著(zhù)新信號逐漸被鑒定、新信息資源逐漸被添加,管道叢林也有機地發(fā)展起來(lái)。一不小心,在機器學(xué)習系統友好的格式下,預備數據的結果系統可能會(huì )成為一個(gè)充滿(mǎn)碎片、聯(lián)結部分以及采樣步驟的叢林,經(jīng)常也會(huì )有中間輸出文件在其中。管理這些管道、檢測錯誤、以及從失效中修復等全部都是非常困難和代價(jià)昂貴的事情。測試這樣的管道通暢要求端到端的整合測試。上述所有情況增加了系統的技術(shù)債,并且使得未來(lái)創(chuàng )新的成本更加昂貴。


只有從整體上考慮數據收集和特征提取的過(guò)程,才能夠避免“管道叢林”現象的發(fā)生。用從頭再來(lái)的方式消除管道叢林,以及從最底層開(kāi)始重新進(jìn)行設計,確實(shí)是一項工程上的重大投資,但是其也是一項能夠大幅減少持續增的成本并加速未來(lái)創(chuàng )新的工程。



粘合代碼和“管道叢林”是集成問(wèn)題表現出來(lái)的癥狀,根源可能在于“研究”和“工程”角色過(guò)于分離。當機器學(xué)習包是在象牙塔的環(huán)境中被開(kāi)發(fā)出來(lái)時(shí),對于在實(shí)踐中部署這些包的團隊來(lái)說(shuō)結果可能看上去像一個(gè)黑盒。工程師和研究者處于同一個(gè)團隊的混合研究方法(事實(shí)上,很多時(shí)候研究者和工程師是同一個(gè)人)能夠顯著(zhù)地減少源頭的摩擦。



失效的實(shí)驗代碼路徑


粘合代碼或是“管道叢林”的一個(gè)常見(jiàn)結果是,在主要的生成代碼中,通過(guò)執行實(shí)驗代碼路徑作為條件分支來(lái)演示具有選擇性方法的實(shí)驗過(guò)程,從短期看來(lái)是極具吸引力的。對于任何單獨的改變,以這種方式來(lái)進(jìn)行實(shí)驗,成本是相對較低的——周邊的基礎設備無(wú)需再返工。然而,隨著(zhù)時(shí)間的推移,由于后臺兼容性的維護愈加困難以及循環(huán)復雜度(cyclomatic complexity)呈指數增長(cháng),這些日漸積聚的代碼路徑將會(huì )導致技術(shù)債的持續增加。對代碼路徑間所有可能的交互做測試變得非常困難,或者說(shuō)不可能。這種危險的一個(gè)著(zhù)名例子就是Knight Capital的系統在45分鐘里損失了4.65億美元,由于從廢棄的實(shí)驗代碼路徑產(chǎn)生了未被預料到的行為。


和傳統軟件領(lǐng)域中的“死旗”(dead flags)一樣,周期性地重復檢查每個(gè)實(shí)驗分支,從而糾察出哪個(gè)實(shí)驗分支可以舍棄的方法是非常有益的。一般僅僅是一小部分分支能夠被實(shí)際應用到,其它許多實(shí)驗分支可能被測試一次后就遭到舍棄。



抽象化債務(wù)


上述的問(wèn)題強調了這樣的一個(gè)事實(shí):明顯缺少強抽象來(lái)支持機器學(xué)習系統。Zheng最近對機器學(xué)習抽象狀態(tài)與數據庫技術(shù)狀態(tài)做了令人信服的比較,得到這樣的一個(gè)結論:機器學(xué)習領(lǐng)域的文獻中,沒(méi)有哪一篇將相關(guān)數據庫(relational database)作為基本抽象(basic abstraction)的論文得到的結果能達到接近成功的地步。什么樣的接口才是描述一個(gè)數據流、一個(gè)模型、或者一個(gè)預測的正確接口?


特別是對于分布式學(xué)習來(lái)說(shuō),仍然缺乏被廣泛接受的抽象??赡苡腥藭?huì )爭論,機器學(xué)習中Map-Reduce的廣泛應用是由于缺乏強分布式學(xué)習抽象。事實(shí)上,在最近幾年,廣泛協(xié)議的幾個(gè)領(lǐng)域之一認為Map-Reduce對于迭代的機器學(xué)習算法是一個(gè)性能很差的抽象。


參數服務(wù)器抽象更具有魯棒性,但這個(gè)基本思想有多個(gè)相互競爭的規范。標準抽象的缺乏使得不同組成部分之間的界限太容易被模糊化。



常見(jiàn)異味


在軟件工程中,系統設計的異味(smell)指的是在一個(gè)系統中或者系統中的一個(gè)部件中存在的潛在問(wèn)題。我們鑒別了一些機器學(xué)習系統的異味,這些并不是不可違逆的準則,而只是主觀(guān)判斷的指標。



POD類(lèi)(Plain-Old-Data)異味:機器學(xué)習系統采用和生成的豐富數據信息全部是用浮點(diǎn)數、整數等普通的數據類(lèi)型進(jìn)行編碼的。在一個(gè)魯棒的系統中,一個(gè)模型的參數應該明確自己代表的是一個(gè)對數賠率系數、還是一個(gè)決策閾值,一個(gè)預測應該知道關(guān)于產(chǎn)生這個(gè)預測的模型的各種片段信息以及它將如何被使用。



多語(yǔ)言異味:用一種特定的語(yǔ)言編寫(xiě)系統中的一部分代碼是一件非常具有誘惑力的事情,特別是當這種語(yǔ)言對于手頭的任務(wù)而言有一個(gè)便利的庫(library)或腳本。然而,用多種語(yǔ)言編寫(xiě)系統經(jīng)常會(huì )增加測試成本,并且會(huì )增加將所有權讓渡給其他人的難度。



原型異味:通過(guò)原型在小范圍內測試新的想法是非常方便的。然而,定期地依賴(lài)于一個(gè)原型環(huán)境暗示著(zhù)系統的脆弱性、難以改變,并能夠從改善的抽象性和接口受益。維護一個(gè)原型環(huán)境需要承擔它的代價(jià),并且有個(gè)顯著(zhù)的威脅是,時(shí)間壓力會(huì )促使一個(gè)原型系統變成了產(chǎn)品解決方案。除此之外,在小范圍內發(fā)現的結果不能很好地應用在整個(gè)范圍內。





6. 配置債


另一個(gè)令人驚訝的債務(wù)積累的區域是機器學(xué)習系統的配置。任何大系統都有許多配置選擇權,包括哪些特征被采用,數據是怎樣選擇,許多特定學(xué)習算法的設置,潛在的預處理和后處理、驗證方法等等。我們已經(jīng)觀(guān)察到不論是工程師還是研究者都將系統的配置看作是一個(gè)事后的想法。事實(shí)上,系統配置的驗證和測試可能被看作是不重要的。在一個(gè)成熟的系統中,系統的配置占有舉足輕重的地位,用于系統配置的行數遠遠超過(guò)了傳統代碼的行數。每個(gè)系統配置行都可能含有潛在的錯誤。


考慮以下的案例。特征A應該是9/14,但被錯誤地記錄為9/17。在10/7之前,特征B在數據上是不可用的。因為記錄格式的改變,要改變用于計算11/1之前和之后數據關(guān)于特征C的代碼。特征D在產(chǎn)品中是不可用的,所以在實(shí)際設置中查詢(xún)模型,就需要使用替代性的特征 D’和D’’。如果特征Z被采用,由于查找表的原因,訓練工作必須給定額外的存儲空間,否則他們會(huì )無(wú)效率地進(jìn)行訓練。因為延遲約束,特征Q排除使用特征R。


這一切的混亂使得配置難以修改正確,并且很難合理解釋這種現象。然而。配置的錯誤代價(jià)是昂貴的,它會(huì )導致時(shí)間的大量損失、計算資源的浪費以及生產(chǎn)問(wèn)題。這使得我們清楚知道,應根據以下原則進(jìn)行良好的系統配置。


(1)從以前的系統配置中做出小的改變,應該能很容易地指明。

(2)人為錯誤、遺漏、或者是疏忽是很難發(fā)生的。

(3)在兩個(gè)不同構造的模型間,應該能很容易看出不同。

(4)能夠容易的自動(dòng)維護和驗證配置,例如在這些方面:采用的特征數量、數據依賴(lài)關(guān)系的傳遞閉包。

(5)能夠很容易地探測無(wú)用的或者冗余的設置。

(6)系統配置應進(jìn)行全碼的檢查,并且記錄到存儲空間中。



7. 處理客觀(guān)世界的變化


讓機器學(xué)習系統如此令人著(zhù)迷的一點(diǎn)就是,它們經(jīng)常與外部世界直接地互動(dòng)。經(jīng)驗表明,外部世界是不穩定的。這種背景的變化率(backgroundrate of change)導致了機器學(xué)習系統持續的維護成本。


動(dòng)態(tài)系統的固定閾值。為給定模型執行某些操作而設定一個(gè)閾值是必要的:去預測對或是錯,標記某個(gè)郵件是否為垃圾郵件,某個(gè)給定廣告顯示與否。為了在某些矩陣中進(jìn)行權衡,機器學(xué)習中一個(gè)經(jīng)典的方法是從一系列可能的閾值中選擇一個(gè),例如召回率與準確率。然而,這樣的閾值通常是人為設定的。于是如果一個(gè)模型的數據更新,那么舊的人為設定的閾值可能就失效了。人工更新很多模型中的很多閾值很浪費時(shí)間而且也讓模型不夠強大。對應這種情況一種緩解策略就是[14],在這篇文章中閾值是通過(guò)對有效的留存數據進(jìn)行簡(jiǎn)單評估而習得的。


監控和測試。對獨立元件的單元測試和對運行系統的端到端測試是很有價(jià)值的,但是在快速變化的世界面前,這種測試提供的證據不足以說(shuō)明系統是按計劃運行的。對系統行為的實(shí)時(shí)綜合性監測輔以自動(dòng)回復機制對于長(cháng)期系統的可靠性來(lái)說(shuō)是非常重要的。


問(wèn)題的關(guān)鍵是:監測什么?考慮到許多機器學(xué)習系統傾向隨著(zhù)時(shí)間不斷地自我適應這一情況,可以被測試的不變條件(invariants)并不總是明顯的。我們提供了以下幾個(gè)出發(fā)點(diǎn)。


預測偏差(Prediction Bias)。在一個(gè)按計劃運行的系統中,它應該符合這樣的情況:預測標簽(predicted labels)的分布與觀(guān)測標簽(observedlabels)的分布是相同的。這不論怎樣都不是一個(gè)全面的測試,因為一個(gè)無(wú)視輸入的特征而只預測標簽出現頻率均值的空值模型也能通過(guò)這個(gè)測試。然而,它作為診斷工具卻意外地有用,它在矩陣中發(fā)生變化時(shí)通常意味著(zhù)出現了一個(gè)值得注意的問(wèn)題。例如,這種方法能夠幫助檢測這樣的情況,外部世界行為突然改變,使得利用歷史數據訓練的分布不再反映當前現實(shí)。通過(guò)分割各維度的預測偏差可以快速分離問(wèn)題,也能夠用于自動(dòng)報警機制。


處置限制(Action Limits)。在那些用于在現實(shí)世界中采取行動(dòng)的系統中,例如項目投標或者標記垃圾短信,設定處置限制(Action Limits)并將它作為完成性檢查(sanitycheck)的項目之一是很有用的。這些限制范圍應該設置得足夠寬,以防被不合邏輯地觸發(fā)。如果系統由于某種行為而達到了限制值,自動(dòng)報警應該啟動(dòng)并觸發(fā)人工介入或者調查。


上游生產(chǎn)者(Up-Stream Producers)。來(lái)自多種多樣的上游生產(chǎn)者的數據通常會(huì )提供給機器學(xué)習系統。這些上游過(guò)程應該被徹底地監測、測試,并且要滿(mǎn)足服務(wù)層面的常規目標:將下游機器學(xué)習系統的需求考慮在內。進(jìn)而任何上游的警報都必須傳播到機器學(xué)習系統的控制面板中來(lái)保證系統的準確性。相似地,任何不能滿(mǎn)足既定服務(wù)層面目標的機器學(xué)習系統也要傳播到下游所有的系統中,并且如果可能的話(huà),直接傳播到它們的控制面板中。


由于外部變化是實(shí)時(shí)發(fā)生的,回應也應該實(shí)時(shí)發(fā)生。依靠人類(lèi)介入作為對警報頁(yè)面的回應是一種策略,但是對于具有時(shí)間敏感性的問(wèn)題是很雞肋的。創(chuàng )造一個(gè)不需要直接人為介入的自動(dòng)回應系統總是值得投入的。



8. 與機器學(xué)習相關(guān)的其他領(lǐng)域的技術(shù)債


我們現在簡(jiǎn)短地突出強調一下其他一些領(lǐng)域中與機器學(xué)習有關(guān)的可能發(fā)生的技術(shù)債。


數據測試債。如果數據在機器學(xué)習系統中取代了代碼,并且代碼要被測試,那么似乎以下說(shuō)法就很明晰了,即一定量的輸入數據的測試對于得到一個(gè)運作良好的系統來(lái)說(shuō)是重要的?;镜耐暾詼y試(sanitychecks)是有用的,監測輸入數據分布變化的復雜測試同樣也是有用的。


可重復性債。作為科學(xué)家,能夠重復實(shí)驗并得到相似結果是很重要的,但是某些條件下,在真實(shí)世界里設計一個(gè)狹義可重復性系統會(huì )變得困難。這些條件包括隨機化算法,并行學(xué)習固有的不確定性,對初始條件的依賴(lài)和與外部世界的互動(dòng)。


進(jìn)程管理債。本論文中描述的大部分使用案例討論了維護一個(gè)模型的成本,但是成熟系統可能有幾十個(gè)或者幾百個(gè)模型同時(shí)運行。這引出了廣泛而重要的問(wèn)題,它包括自動(dòng)并安全地為相似模型更新各種配置的問(wèn)題,如何為眾多不同業(yè)務(wù)優(yōu)先級的模型管理并分配資源問(wèn)題,還有在一條生產(chǎn)線(xiàn)中如何可視化并檢測數據流擁堵問(wèn)題。開(kāi)發(fā)工具來(lái)幫助生產(chǎn)事故的恢復也很重要。常見(jiàn)的需要人工步驟的過(guò)程是,避免重要的系統級別異味(smell)。


文化債。機器學(xué)習的研究領(lǐng)域和工程領(lǐng)域之間,有時(shí)是有明顯界限的,但是這可能不利于長(cháng)期系統健康。創(chuàng )造一種團隊文化去鼓勵刪除特征,減少復雜度,提高可重復性和穩定性,把監督進(jìn)行到精確率的提高均會(huì )被量化的程度。據我們的經(jīng)驗,在兩個(gè)領(lǐng)域(機器學(xué)習研究和工程領(lǐng)域)有優(yōu)勢的異質(zhì)性團隊中最有可能發(fā)生這樣的情況。



9. 結論:測量并還清技術(shù)債


技術(shù)債是一個(gè)很好的比喻,但是很不幸的是它并沒(méi)有嚴格的、可被追蹤的度量方式。我們如何測量系統中的技術(shù)債,如何評估技術(shù)債的全部成本?先要注意到,一個(gè)團隊仍然在快速進(jìn)步并不是低技術(shù)債或者良好運行的證據,因為技術(shù)債的全部成本只會(huì )隨著(zhù)時(shí)間的推移而慢慢浮出水面。事實(shí)上,發(fā)展過(guò)快經(jīng)常會(huì )引入技術(shù)債。一些有用問(wèn)題在這里列出:


· 一個(gè)全新的算法被全面測試的難易程度?

· 所有數據相關(guān)性的傳遞閉包是什么?

· 新改變對系統的影響,能多精確的測量?

· 改善模型或是信號會(huì )降低其他模型嗎?

· 要花多久才能使團隊新成員趕上其他人速度?


我們希望這篇文章能夠對可持續機器學(xué)習領(lǐng)域(maintainableML)的發(fā)展起到一定的促進(jìn)作用,這里所指的領(lǐng)域包括了更好的抽象、測試方法和設計模式。也許最重要的觀(guān)點(diǎn)是,技術(shù)債是一個(gè)既需要工程師也要科學(xué)家注意的問(wèn)題。以大規模增加系統復雜性為代價(jià)求取微小的精確性進(jìn)步的研究性解決方案,很少會(huì )被廣泛應用。即使是一兩個(gè)看起來(lái)很正常的數據相關(guān)性的增加都能夠減緩未來(lái)的進(jìn)度。


還清與機器學(xué)習有關(guān)的技術(shù)債需要做出特定的承諾,這種承諾常常只能通過(guò)轉變團隊文化來(lái)完成。認識到這一點(diǎn),優(yōu)先考慮并獎勵這樣的行為,對于成功機器學(xué)習團隊的長(cháng)期健康來(lái)說(shuō)是很重要的。



鳴謝


這篇文章要特別感謝在創(chuàng )新型研究氛圍和強大工程實(shí)踐的團隊文化中一天天學(xué)習而得到的重要教訓。許多同事幫助形成了這種觀(guān)點(diǎn),并且民間智慧的積累而產(chǎn)生的有益影響再怎么強調也不為過(guò)。我們想要特別鳴謝以下各位:RobertoBayardo,Luis Cobo,SharatChikkerur, JeffDean,PhilipHenderson,ArnarMar Hrafnkelsson,AnkurJain,Joe Kovac,Jeremy Kubica,H. Brendan McMahan,SatyakiMahalanabis, LanNie,Michael Pohl,Abdul Salem,SajidSiddiqi,Ricky Shan,AlanSkelly,Cory Williams,和Andrew Young。


本篇論文的簡(jiǎn)短形式曾在2014年加拿大的蒙特利爾SE4ML討論會(huì )中呈現過(guò)。



參考論文


[1] R. Ananthanarayanan, V. Basker, S. Das, A. Gupta, H. Jiang, T. Qiu, A. Reznichenko, D. Ryabkov, M. Singh, and S. Venkataraman. Photon: Fault-tolerant and scalable joining of continuous data streams. In SIGMOD ’13: Proceedings of the 2013 international conference on Management of data, pages 577– 588, New York, NY, USA, 2013.


[2] A. Anonymous. Machine learning: The high-interest credit card of technical debt. SE4ML: Software Engineering for Machine Learning (NIPS 2014 Workshop).


[3] L. Bottou, J. Peters, J. Qui ?nonero Candela, D. X. Charles, D. M. Chickering, E. Portugaly, D. Ray, P. Simard, and E. Snelson. Counterfactual reasoning and learning systems: The example of computational advertising. Journal of Machine Learning Research, 14(Nov), 2013.


[4] W. J. Brown, H. W. McCormick, T. J. Mowbray, and R. C. Malveau. Antipatterns: refactoring software, architectures, and projects in crisis. 1998.


[5] T. M. Chilimbi, Y. Suzue, J. Apacible, and K. Kalyanaraman. Project adam: Building an efficient and scalable deep learning training system. In 11th USENIX Symposium on Operating Systems Design and Implementation, OSDI ’14, Broomfield, CO, USA, October 6-8, 2014., pages 571–582, 2014.


[6] B. Dalessandro, D. Chen, T. Raeder, C. Perlich, M. Han Williams, and F. Provost. Scalable handsfree transfer learning for online advertising. In Proceedings of the 20th ACM SIGKDD international conference on Knowledge discovery and data mining, pages 1573–1582. ACM, 2014.


[7] M. Fowler. Code smells. http://http://martinfowler.com/bliki/CodeSmell.html.


[8] M. Fowler. Refactoring: improving the design of existing code. Pearson Education India, 1999.


[9] J. Langford and T. Zhang. The epoch-greedy algorithm for multi-armed bandits with side information. In Advances in neural information processing systems, pages 817–824, 2008.


[10] M. Li, D. G. Andersen, J. W. Park, A. J. Smola, A. Ahmed, V. Josifovski, J. Long, E. J. Shekita, and B. Su. Scaling distributed machine learning with the parameter server. In 11th USENIX Symposium on Operating Systems Design and Implementation, OSDI ’14, Broomfield, CO, USA, October 6-8, 2014., pages 583–598, 2014.


[11] J. Lin and D. Ryaboy. Scaling big data mining infrastructure: the twitter experience. ACM SIGKDD Explorations Newsletter, 14(2):6–19, 2013.


[12] H. B. McMahan, G. Holt, D. Sculley, M. Young, D. Ebner, J. Grady, L. Nie, T. Phillips, E. Davydov, D. Golovin, S. Chikkerur, D. Liu, M.Wattenberg, A. M. Hrafnkelsson, T. Boulos, and J. Kubica. Ad click prediction: a view from the trenches. In The 19th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, KDD 2013, Chicago, IL, USA, August 11-14, 2013, 2013.


[13] J. D. Morgenthaler, M. Gridnev, R. Sauciuc, and S. Bhansali. Searching for build debt: Experiences managing technical debt at google. In Proceedings of the Third International Workshop on Managing Technical Debt, 2012.


[14] D. Sculley, M. E. Otey, M. Pohl, B. Spitznagel, J. Hainsworth, and Y. Zhou. Detecting adversarial advertisements in the wild. In Proceedings of the 17th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, San Diego, CA, USA, August 21-24, 2011, 2011.


[15] Securities and E. Commission. SEC Charges Knight CapitalWith Violations ofMarket Access Rule, 2013.


[16] A. Spector, P. Norvig, and S. Petrov. Google’s hybrid approach to research. Communications of the ACM, 55 Issue 7, 2012.


[17] A. Zheng. The challenges of building machine learning tools for the masses. SE4ML: Software Engineer- ing for Machine Learning (NIPS 2014 Workshop)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
港科大楊強教授:下一個(gè)熱點(diǎn)是遷移學(xué)習
關(guān)于數組的廣播和模型類(lèi)型系統,你有那些了解?
自以為是套路,結果反生技術(shù)債,開(kāi)源代碼應該注意這五大誤區!
機器學(xué)習實(shí)踐心得:數據平臺設計與搭建
機器學(xué)習理論與實(shí)戰(九)回歸樹(shù)和模型樹(shù)
通過(guò)從零開(kāi)始實(shí)現一個(gè)感知機模型,我學(xué)到了這些
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久