為什麼機器學習項目非常難管理?

編譯:ronghuaiyang

導讀

我看到過很多公司嘗試使用機器學習 —— 有些大獲成功,有些慘敗。一個不變的事實是,機器學習團隊很難設定目標和期望。這是為什麼呢?

為什麼機器學習項目非常難管理?

1. 很難預先分辨出什麼是難的,什麼是容易的

是在國際象棋中擊敗卡斯帕羅夫更困難,還是撿起棋子並移動棋子更困難?計算機在二十多年前打敗了國際象棋世界冠軍,但是可靠地抓取和舉起物體仍然是一個未解決的研究問題。人類不擅長評估什麼對人工智能來說是困難的,什麼是容易的。即使在一個領域中,性能也可能有很大差異。預測情緒的準確性有多高?在影評中,有大量的文本和作者很容易搞清楚他們的想法,現在能期待的準確率是90-95%。在推特上,兩個人在80%的情況下對一條推文的觀點是一致的。在推文中,只要是關於航空公司的,那麼總是把這條推文的情緒預測成負面的,就可以達到95%以上的準確率。

度量標準也可能在項目的早期提升很多,然後突然碰壁。我曾經舉辦過一場Kaggle競賽,全世界成千上萬的人競相為我的數據建模。在第一週,準確率從35%上升到65%,但在接下來的幾個月裡,準確率從未超過68%。68%的準確率顯然是數據對於最先進的機器學習技術的限制。那些在Kaggle競賽中競爭的人非常努力地獲得了68%的正確率,我確信這是一個巨大的成就。但在大多數情況下,65%和68%是完全無法區分的。如果這是一個內部項目,我肯定會對結果感到失望。

我的朋友Pete Skomoroch最近告訴我,作為一名研究機器學習的數據科學家,在工程部門工作是多麼令人沮喪。工程項目通常會向前推進,但機器學習項目可能會完全停滯。花一週時間對數據進行建模,結果可能(甚至很常見)沒有任何改進。

為什麼機器學習項目非常難管理?

2. 機器學習很容易以意想不到的方式失敗.

機器學習通常工作得很好,只要你有大量的訓練數據以及你在生產中運行的數據看起來很像你的訓練數據。人類非常善於從訓練數據中歸納歸納,因此我們對此有著可怕的直覺。我做了一個小機器人,帶著攝像機和一個視覺模型,這個模型是根據從網上獲取的成百萬的ImageNet圖像製作的。我對我的機器人相機上的圖像進行了預處理,使其看起來像來自網絡的圖像,但準確性比我預期的要差得多。為什麼?網絡上的圖片往往會針對目標物體進行構圖,但是我的機器人不一定會像人類攝影師那樣直視一個物體。人類甚至可能都沒有注意到這種差異,但使用現代深度學習網絡的時候就會非常痛苦。有很多方法可以處理這種現象,但我之所以注意到它,只是因為它的性能下降非常嚴重,我花了很多時間調試它。

更厲害的是,導致性能下降的細微差異很難被發現。接受《紐約時報》訓練的語言模型不能很好地概括社交媒體文本。我們可以預料到。但很顯然,從2017年開始接受文本訓練的模型,在2018年寫的文本中表現不佳。上游分佈隨時間以多種方式變化。當對手適應了欺詐模型所做的事情時,欺詐模型就會完全崩潰。

3. 機器學習需要大量相關的訓練數據.

每個人都知道這一點,但這是一個巨大的障礙。如果你能夠收集並標記大量的訓練數據,計算機視覺可以做很多驚人的事情。對於某些用例,數據是某些業務流程的副產品。這就是機器學習真正發揮作用的地方。對於許多其他用例來說,收集訓練數據是非常昂貴和具有挑戰性的。許多醫療用例對於機器學習來說似乎是完美的 —— 使用許多微弱的信號和清晰的結果來做出關鍵的決策 —— 但是數據由於重要的隱私問題而被鎖定,或者一開始就沒有被統一的進行收集。

許多公司不知道從哪裡開始投資收集訓練數據。這是一項重要的工作,很難預先預測該模型將如何工作。

解決這些問題的最佳實踐是什麼?

1. 多注意你的訓練數據.

看看這個算法對它所訓練的數據進行錯誤分類的情況。這樣的錯誤幾乎總是標註錯誤或者一些邊界樣本。不管怎樣,你都想了解他們。讓每個構建模型的人都查看一下訓練數據並自己標註一些訓練數據。對於許多用例來說,一個模型不太可能比兩個獨立的人達成一致的效果更好。

2. 先做端到端的工作,然後一次改進一件事.

從可能有效的最簡單的事情開始,然後部署它。你會從中學到很多。過程中任何階段的額外複雜性都會改進研究論文中的模型,但很少會改進現實世界中的模型。每一個額外的複雜性都需要驗證。

將一些東西交到最終用戶手中,可以幫助你儘早瞭解模型可能工作得有多好,並且它可能會帶來一些關鍵問題,比如模型正在優化的內容與最終用戶想要的內容之間的分歧。它還可能使你重新評估你正在收集的訓練數據的類型。最好能儘快發現這些問題。

3. 尋找優雅的方法來處理不可避免的算法失敗的情況.

幾乎所有的機器學習模型在相當長的時間內都會失敗,如何處理這一問題絕對是至關重要的。模型通常有一個可以使用的可靠的置信度評分。使用批處理過程,你可以構建包含人在裡面的循環系統,將低可信度的預測發送給操作員,使系統能夠可靠地端到端工作,並收集高質量的訓練數據。對於其他用例,你可以使用一種標記潛在錯誤的方式,或者對最終用戶來說不那麼惱人的方式,來呈現低可信度的預測。

下面是一個沒有被妥善處理的失敗例子。微軟沒有預料到他們的Tay機器人能多快從推特上的噴子那裡學會不良行為。

為什麼機器學習項目非常難管理?

英文原文:https://medium.com/@l2k/why-are-machine-learning-projects-so-hard-to-manage-8e9b9cf49641


分享到:


相關文章: