機器學習中的技術債務
許多人遇到技術債務時都會眉頭緊鎖,但一般來說,技術債務並不是一件壞事。例如,當我們需要在最後期限之前發布版本的時候,技術債務就是一個可以利用起來的合理手段。但是技術債務存在與金融債務一樣的問題,那就是到了要償還債務的時候,我們所付出的要比開始時付出得多。這是因為技術債務具有複合效應。
經驗豐富的團隊知道應該在什麼時候償還成堆的債務,但機器學習中的技術債務堆積起來卻非常迅速。你可能在一天之內欠下價值數月的債務,即使是最有經驗的團隊也可能因為一時的疏忽而產生巨額債務,使得他們需要耗費半年才能恢複,這足以扼殺一個快速迭代的項目。
這裏有三篇精彩的論文探討了這個問題:
機器學習:技術債務的高息信用卡 NIPS'14(NIPS:神經信息處理係統大會)
機器學習係統中隱藏的技術債務 NIPS'15
你的機器學習測試成績是多少? NIPS'16
這些論文介紹了數十種機器學習反模式,它們可能會成為軟件基礎架構中的定時炸彈。在這裏,我隻討論三個最重要的反模式。
反饋回路
當機器學習模型的輸出間接饋入自己的輸入時,就會產生反饋回路。聽起來這很容易規避,但在實際操作中卻正好相反。反饋回路有很多種變體,NIPS'14的一篇論文介紹了一個很典型的例子,而我在這裏會給出一個更真實的例子。
例子
假設你的公司有一個購物網站。後端團隊提出了一個推薦係統,它會根據客戶的個人資料和以往的購買記錄來決定是否彈出通知。很自然地,你會根據客戶先前點擊或忽略通知的記錄來訓練這個推薦係統(這還不算是反饋回路)。在啟用這個功能後,你會很興奮地看到點擊通知的比例越來越高。你會把這個增長歸功於人工智能,但你不知道的是,前端團隊實現了一個固定的閾值,如果推薦的置信度小於50%,則隱藏通知,因為他們不希望向客戶顯示潛在的不良推薦。隨著時間的推移,以前在50-60%置信範圍內的推薦現在會被認為是小於50%,這樣,最後就隻剩下50-100%置信度的推薦了。這就是一個反饋回路。你的指標雖然增長了,但係統並沒有得到改善。你不僅要**利用**機器學習係統,還要讓它自己去**探索**,以避免使用固定的閾值。
在小公司中,控製反饋回路相對來說比較容易,但在擁有數十個團隊的大型公司中,幾十個複雜係統相互關聯,這其中的反饋回路就很有可能會被忽略。
如果某些指標即使沒有啟動優化也在緩慢改善,那麼說明反饋回路正在發揮作用。找到並解決回路並不容易,因為它涉及到跨團隊的合作。
校正級聯
當機器學習模型不再繼續學習下去,並且你在最後給機器學習模型的輸出打補丁的時候,就會產生校正級聯。隨著補丁的積累,你最終在機器學習模型的頂層創建的一層厚厚的啟發式算法,就稱為校正級聯。為了顧及機器學習沒有學習到的罕見特殊情況,對機器學習係統的輸出使用過濾器是很容易的。
在對整個係統所有的指標進行訓練的時候,校正級聯會對機器學習模型正在嚐試優化的那個指標進行相關化。隨著這一層校正級聯越來越複雜,你將無法確定機器學習模型的更改是否能對最終的指標起到改善作用,並最後也不知道該如何改進了。
流浪者(Hobo)特征
流浪者特征是機器學習係統中沒用但又不能忽視的特征。有三種類型的流浪者特征:
捆綁特征(Bundle features)
有時,當有一組新的特征需要一起評估的時候,我們會將它們捆綁在一起整體提交。但不幸的是,隻有其中的某些特征是有用的,而其他的一些特征甚至會起到反作用。
ε特征(ε-features)
有時,即使某個特征隻是促使質量提高了一點點,我們也會傾向於添加這個特征。然後,如果基礎數據稍稍有所改變,這個特征就可能很快失去作用,甚至起到反作用。
遺產特征(Legacy features)
隨著時間的推移,我們為項目添加了一些新的特征,並且沒有重新評估它們。幾個月後,其中的一些特征可能會變得完全沒用,或者被新特征所取代。
在一個複雜機器學習係統中,有效清除流浪者特征的唯一方法是試著一次隻清除一個特征。也就是說,一次隻刪除一個特征,然後再訓練機器學習係統,並使用你的指標進行評估。如果係統需要花一天的時間來訓練,那麼我們一次可以運行5個訓練,如果我們有500個特征,那麼清除掉這所有的特征則需要100天。但不幸的是,特征之間可能會相互影響,這意味著你必須嚐試清除所有可能的特征子集,這時,難度就會指數級地上升。
結合我們的力量
在機器學習基礎架構中如果同時包含這三種反模式將是整個項目的災難。
因為反饋回路的存在,你的指標將無法反映係統的真實質量,機器學習模型將學習利用這些反饋回路,而不是學習有用的東西。此外,隨著時間的推移,你的模型可能無意中由工程團隊塑造出來,從而更多地利用這些回路。
校正級聯會降低用機器學習模型直接進行測量的指標與整個係統之間的相關性。它可能對機器學習模型有積極的改善作用,但對整個係統指標的影響卻是隨機的。
因為流浪者特征的存在,你甚至都不會知道數百個功能中哪些是有用的,而且要全部清除它們的代價實在太大。在日常工作中,監測的指標可能會隨機上下波動,因為某些垃圾特征會隨機起作用。
最終,項目的指標會隨機上下波動,無法反映實際的質量,也無法改進。唯一的出路是推倒重來,重寫整個項目。
文章原標題《Technical Debt in Machine Learning》,作者:Maksym Zavershynskyi,譯者:夏天,審校:主題曲。
文章為簡譯,更為詳細的內容,請查看原文(需備梯)。當然,你也可以下載PDF文檔查看原文。
最後更新:2017-07-27 09:03:23