當前位置:大數據業界動態 → 正文

搭建容易維護難!谷歌機器學習系統血淚教訓

責任編輯:cres 作者:核子可樂編譯 |來源:企業網D1Net  2019-10-23 14:27:21 本文摘自:AI前線

2014 年,谷歌一篇探討機器學習背后暗藏高額技術債的論文曾火爆一時。今天,這篇論文又出現了知名技術社區 HackerNews 的頭條。看來,即使過了 4 年時間,人工智能進入新的春天,但困擾著機器學習研究者的問題還是類似的問題。
 
本文作者表示,希望這篇論文能夠為在生產環境中采用機器學習系統的開發者與維護者提供一些實用建議。作者警告稱,雖然從零搭建機器學習系統還算輕松,但隨后的改進卻可能存在出乎意料的困難。在閱讀本文時,讀者會清晰感受到其中的經驗源自作者在谷歌公司任職期間來之不易的艱辛積累。
 
AI 前線將帶大家一起重溫這篇經典文章,文章部分經驗強調“與機器學習相關,并不代表著能夠徹底放棄良好軟件工程實踐”,也有部分內容屬于特定于機器學習的常見陷阱。考慮到所有希望建立“X+AI”業務的初創企業都面臨著這類潛在挑戰,因此文中提出的建議非常值得大家認真考量。
 
本文提到的機器學習系統帶來的主要技術債類別包括:信息隱藏以及變化封閉帶來的挑戰 ; 膠水代碼與配置;以及不斷變化的外部世界以及分析模型結論對這一世界的理解偏差。
 
本文中最重要的見解之一,在于技術債務應當成為工程師與研究人員們需要注意的問題。以大規模增加系統復雜性為代價進行解決方案研究顯然不是什么明智的作法。即使僅僅增加一到兩種看似無害的數據依賴關系,也有可能減緩進一步發展速度。雖然減少技術債務并不像證明新定理那樣令人振奮,但其仍然是保持強勁創新能力的重要動力。事實上,為復雜的機器學習系統開發出全面且優雅的解決方案是一項極具現實意義的工作。
 
信息隱藏與變化封裝
 
……機器學習模型是一種創造復雜糾纏狀態的機器,且不可能有效地對其改進工作進行隔離分配。作為證明,假設犈在一套模型當中使用特征 x1,……Xn,那么如果我們改變 x1 中的值輸入分布,那么其重要性、權重或者剩余特征可能全部發生改變——無論模型是以批處理形式進行完全重新訓練,還是以在線方式進行逐步適應,情況都是如此。而添加新特征 xn+1 或者刪除任何特征 xj,也都可能導致類似的變化。沒有任何輸入內容是真正獨立存在的。牧羊這將其稱為 CACE 原則:即任何改變都將改變一切。
 
如果我們了解到先驗的重要性,就不需要利用機器學習進行重復證明!因此,模型有點像一臺巨大的攪拌機器,我們向其中投入大量信息并獲取結果,但對輸入內容中的各類變化的敏感度卻難以預測,且幾乎無法進行影響隔離。面對這樣的難題,我們該怎么辦?雖然不存在百試百靈的方案,但作者給出了三種可能有所幫助的策略。
 
你可以隔離模型,轉而提供總體結論。不過,糾纏問題仍然存在于每一個模型當中。此外,“在規模化情況下,這種策略可能很難長期維持”。
制定方法以深入理解模型預測的行為。你需要通過投資令模型不再像黑匣子般難以捉摸——例如為其配備更多可視化工具。此外,我還和多家企業進行過交流,其中一部分公司表示其能夠解釋機器學習模型作出的決定——甚至包括監管要求,而這種能力亦是其商業模式中的重要組成部分。因此,請大家認真考慮這方面需求與實現途徑。
使用更為復雜的正則化方法,以便在訓練當中使用的目標函數能夠反映出任何效能預測成本的上升跡象。“這種方法可能有用,但也只是可能。此外,其也許會增加系統復雜性進而帶來更多債務,這反而背離了我們減少糾纏度的初衷。”
另一種尋找偶然耦合的方式在于建立隱藏反饋回路,這一點在未申報消費方當中體現得尤為明顯。通過未申報消費方,系統只是在單純消費建模產出的輸出結果,而我們幾乎意識不到這些過程的存在。如果其根據影響模型的輸入參數信息采取了某些行動,則這種隱藏的反饋回路很容易引發以下問題:
 
想象一下,在我們的新聞標題點擊率預測系統當中,系統中的某一組件負責以“智能化方式”確定用于標題的字體大小。如果此字體大小模塊開始將點擊率作為輸入信號使用,且字體大小確實會影響用戶的點擊傾向,那么字體大小當中將會包含一個由點擊率添加的新的隱藏反饋回路。可以想象,這樣一套系統會逐漸無休止地增加所有標題字號情況。
 
數據依賴性問題
 
……盡管代碼依賴性可以通過靜態分析以及鏈接圖等方法相對輕松地進行識別,但具備數據依賴性處理功能的分析工具卻很少見。因此,我們可以難以構建起能夠解決大型數據依賴鏈的方案。
 
舉例來說,某些輸入信號會隨著時間推移而改變行為。遵循 CACE 原則,即使將這些變化作為改進方向,也很難對后果作出預測。另一種數據依賴性則是模型中的特征集合,其中一些能夠在準確性方面提供非常有限的增量。我們可以通過多種方式利用原本未充分利用的依賴性——包括一部分已遭棄用的早期遺留特征,一次性添加的多項特征組合(而非僅僅挑出那些真正有作用的特征),或者那些為了追求準確率而添加、且無法證明自身對復雜性的影響的特征。定期對特征進行清除將非常重要。
 
舉例來說,假設在團隊合并之后,為了簡化而進行了一輪由舊產品編號到新產品編號的轉換,那么兩套方案都將在系統中作為特征。其中新產品只能獲得一個新編號,但舊產品可能同時擁有兩個編號。機器學習算法當然也會將舊編號納入依賴關系當中。一年之后,有管理人員清理了使用舊編號填充的數據庫代碼。這種變化不會被回歸測試所檢測到,因為清理之后舊編號直接不再使用。這對機器學習系統的維護者而言顯然不是什么好消息……
 
有能力理解數據依賴性的工具,將幫助我們順利搞定特征清理工作。谷歌公司的一支團隊就構建出一款自動化特征管理工具:
 
自從采用以來,該方案幫助谷歌團隊每個季度安全刪除數千行與特征相關的代碼,同時自動驗證其中的版本及其它問題。該系統還能夠有效防止意外使用新模型中不推薦或已經損壞的特征。
 
最后一種數據依賴性管理方法,在于建立“校正”機制以重新利用現有模型。通過這種方式,你能夠快速獲得初步成果 ; 但在另一方面,你未來對該模型的分析與改進將面臨更高的成本。
 
其它 95%(膠水代碼與配置)
 
令人驚訝的是,學術界意識到在大多數機器學習系統當中,只有很小一部分代碼在實際進行“機器學習”。事實上,一套成熟的系統最終可能最多只有 5% 的代碼負責機器學習,而其余 95% 甚至更多代碼只是起到粘合作用,從而通過重新實現(而非重新使用)改善原本笨拙的 API……
 
這里需要解決的問題在于,很多機器學習庫都被封裝成了獨立的工件,這無疑會引入大量膠水代碼(例如從 Java 轉換至 R 或者 matlab)。如果大家無法在更為廣泛的系統架構內找到適合自己的資源選項,那么重新實現算法(5% 部分的代碼)可能更有意義,且能夠有效減少膠水代碼的數量。
 
一大相關問題在于管道叢林——即過于復雜的數據準備管道。
 
管道叢林問題只能通過全面審視數據收集與特征提取的方式來避免。清除管道叢林并從頭開始設計清理方法,確實是工程設計層面的一項重大投資,但這同時也能夠顯著降低持續成本并加速進一步創新活動。
 
一旦系統因膠水代碼與管道叢林問題而變得僵化,很多朋友會忍不住調整生產代碼中的實驗代碼路徑以執行額外實驗。這樣做當然比較方便,但一旦頻率過高,其只會引發更大的混亂。
 
作為典型實例,谷歌公司最近在對一套重要的機器學習系統進行清理時,發現其中存在著數以萬計的未使用實驗性代碼行。在利用更緊密的 API 進行重寫之后,這部分“遺產”能夠大幅降低工作量、生產風險并控制系統復雜性,從而為新算法的實驗鋪平道路。
 
在本節的最后,“配置往往是現實世界的混亂對美麗算法造成干擾的載體:”
 
請考慮以下例子。特征 A 在 9 月 14 日到 9 月 17 日之間發生了記錄錯誤。特征 B 直到 10 月 7 日才正式上線。由于記錄格式發生了變化,用于計算特征 C 的代碼必須對 11 月 1 日之前及之后的數據進行更改。特征 D 并未用于生產,因此在現場調協中進行模型查詢時,必須使用替代性的 D’與 D”。如果特征 Z 被使用,那么所有訓練相關任務必須獲得額外的內存配額,否則其訓練效率將顯著降低。最后,由于延遲限制,特征 Q 排除掉了特征 R。所有這些混亂的條件使得配置難以正確修改且難以推理。此外,配置錯誤還可能引發高昂的代價——包括嚴重的時間浪費、計算資源損耗或者生產問題。
 
配置變更應該與代碼變更一樣得到謹慎處理,并交由同行進行評審。
 
世界還將帶來怎樣的變化?
 
經驗表明,外部世界很少保持穩定。事實上,真實世界的性質變化正是機器學習當中技術債務的一大重要來源。
 
請不要手動設置決策閾值(例如顯示或不顯示廣告),而應考慮通過評估現有驗證數據以發現閾值此外,因果不明的相關特征也可能引發問題:
 
這似乎并不是什么主要問題:如果兩個特征總是相關,但只有其中一個特征屬于真正的因果關系,那么似乎仍可以將信用歸于兩者并通過觀察其共同現象得出結論。然而,如果外部世界中這兩種特征的共生性突然消失,那么預測行為可能發生顯著變化。用于區分相關效應的全面機器學習策略也將超出我們的討論范圍 ;[Bottou 2013] 就此給出了一些極好的建議與參考。結合本文的關注點,我們注意到非因果關系屬于隱藏債務的另一種來源。
 
最后,實時監控系統至關重要。論文建議大家測量預測偏差,并在系統采取的行動數量超過某個閾值時發布警報。
 
在一套按預期方式運作的系統中,預測標簽的分布通常應該等同于觀察標簽的發布。這不需要進行全面測試,因為其可以通過單一空模型滿足——即直接預測標簽出現平均值,而不必考慮輸入要素。然而,這種簡單的方法卻帶來了令人驚訝的良好效果,而此類度量指標的變化通常反映出需要注意的關鍵問題……

關鍵字:機器學習

本文摘自:AI前線

搭建容易維護難!谷歌機器學習系統血淚教訓 掃一掃
分享本文到朋友圈

關于我們聯系我們版權聲明友情鏈接廣告服務會員服務投稿中心招賢納士

企業網版權所有©2010-2019 京ICP備09108050號-6

^
208彩票app