我看到過很多公司嘗試使用機器學習 —— 有些大獲成功,有些慘敗。一個不變的事實是,機器學習團隊很難設(shè)定目標和期望。這是為什么呢?
1. 很難預先分辨出什么是難的,什么是容易的
是在國際象棋中擊敗卡斯帕羅夫更困難,還是撿起棋子并移動棋子更困難?計算機在二十多年前打敗了國際象棋世界冠軍,但是可靠地抓取和舉起物體仍然是一個未解決的研究問題。人類不擅長評估什么對人工智能來說是困難的,什么是容易的。即使在一個領(lǐng)域中,性能也可能有很大差異。預測情緒的準確性有多高?在影評中,有大量的文本和作者很容易搞清楚他們的想法,現(xiàn)在能期待的準確率是90-95%。在推特上,兩個人在80%的情況下對一條推文的觀點是一致的。在推文中,只要是關(guān)于航空公司的,那么總是把這條推文的情緒預測成負面的,就可以達到95%以上的準確率。
度量標準也可能在項目的早期提升很多,然后突然碰壁。我曾經(jīng)舉辦過一場Kaggle競賽,全世界成千上萬的人競相為我的數(shù)據(jù)建模。在第一周,準確率從35%上升到65%,但在接下來的幾個月里,準確率從未超過68%。68%的準確率顯然是數(shù)據(jù)對于最先進的機器學習技術(shù)的限制。那些在Kaggle競賽中競爭的人非常努力地獲得了68%的正確率,我確信這是一個巨大的成就。但在大多數(shù)情況下,65%和68%是完全無法區(qū)分的。如果這是一個內(nèi)部項目,我肯定會對結(jié)果感到失望。
我的朋友Pete Skomoroch最近告訴我,作為一名研究機器學習的數(shù)據(jù)科學家,在工程部門工作是多么令人沮喪。工程項目通常會向前推進,但機器學習項目可能會完全停滯。花一周時間對數(shù)據(jù)進行建模,結(jié)果可能(甚至很常見)沒有任何改進。
2. 機器學習很容易以意想不到的方式失敗.
機器學習通常工作得很好,只要你有大量的訓練數(shù)據(jù)以及你在生產(chǎn)中運行的數(shù)據(jù)看起來很像你的訓練數(shù)據(jù)。人類非常善于從訓練數(shù)據(jù)中歸納歸納,因此我們對此有著可怕的直覺。我做了一個小機器人,帶著攝像機和一個視覺模型,這個模型是根據(jù)從網(wǎng)上獲取的成百萬的ImageNet圖像制作的。我對我的機器人相機上的圖像進行了預處理,使其看起來像來自網(wǎng)絡(luò)的圖像,但準確性比我預期的要差得多。為什么?網(wǎng)絡(luò)上的圖片往往會針對目標物體進行構(gòu)圖,但是我的機器人不一定會像人類攝影師那樣直視一個物體。人類甚至可能都沒有注意到這種差異,但使用現(xiàn)代深度學習網(wǎng)絡(luò)的時候就會非常痛苦。有很多方法可以處理這種現(xiàn)象,但我之所以注意到它,只是因為它的性能下降非常嚴重,我花了很多時間調(diào)試它。
更厲害的是,導致性能下降的細微差異很難被發(fā)現(xiàn)。接受《紐約時報》訓練的語言模型不能很好地概括社交媒體文本。我們可以預料到。但很顯然,從2017年開始接受文本訓練的模型,在2018年寫的文本中表現(xiàn)不佳。上游分布隨時間以多種方式變化。當對手適應了欺詐模型所做的事情時,欺詐模型就會完全崩潰。
3. 機器學習需要大量相關(guān)的訓練數(shù)據(jù).
每個人都知道這一點,但這是一個巨大的障礙。如果你能夠收集并標記大量的訓練數(shù)據(jù),計算機視覺可以做很多驚人的事情。對于某些用例,數(shù)據(jù)是某些業(yè)務(wù)流程的副產(chǎn)品。這就是機器學習真正發(fā)揮作用的地方。對于許多其他用例來說,收集訓練數(shù)據(jù)是非常昂貴和具有挑戰(zhàn)性的。許多醫(yī)療用例對于機器學習來說似乎是完美的 —— 使用許多微弱的信號和清晰的結(jié)果來做出關(guān)鍵的決策 —— 但是數(shù)據(jù)由于重要的隱私問題而被鎖定,或者一開始就沒有被統(tǒng)一的進行收集。
許多公司不知道從哪里開始投資收集訓練數(shù)據(jù)。這是一項重要的工作,很難預先預測該模型將如何工作。
解決這些問題的最佳實踐是什么?
1. 多注意你的訓練數(shù)據(jù).
看看這個算法對它所訓練的數(shù)據(jù)進行錯誤分類的情況。這樣的錯誤幾乎總是標注錯誤或者一些邊界樣本。不管怎樣,你都想了解他們。讓每個構(gòu)建模型的人都查看一下訓練數(shù)據(jù)并自己標注一些訓練數(shù)據(jù)。對于許多用例來說,一個模型不太可能比兩個獨立的人達成一致的效果更好。
2. 先做端到端的工作,然后一次改進一件事.
從可能有效的最簡單的事情開始,然后部署它。你會從中學到很多。過程中任何階段的額外復雜性都會改進研究論文中的模型,但很少會改進現(xiàn)實世界中的模型。每一個額外的復雜性都需要驗證。
將一些東西交到最終用戶手中,可以幫助你盡早了解模型可能工作得有多好,并且它可能會帶來一些關(guān)鍵問題,比如模型正在優(yōu)化的內(nèi)容與最終用戶想要的內(nèi)容之間的分歧。它還可能使你重新評估你正在收集的訓練數(shù)據(jù)的類型。最好能盡快發(fā)現(xiàn)這些問題。
3. 尋找優(yōu)雅的方法來處理不可避免的算法失敗的情況.
幾乎所有的機器學習模型在相當長的時間內(nèi)都會失敗,如何處理這一問題絕對是至關(guān)重要的。模型通常有一個可以使用的可靠的置信度評分。使用批處理過程,你可以構(gòu)建包含人在里面的循環(huán)系統(tǒng),將低可信度的預測發(fā)送給操作員,使系統(tǒng)能夠可靠地端到端工作,并收集高質(zhì)量的訓練數(shù)據(jù)。對于其他用例,你可以使用一種標記潛在錯誤的方式,或者對最終用戶來說不那么惱人的方式,來呈現(xiàn)低可信度的預測。
下面是一個沒有被妥善處理的失敗例子。微軟沒有預料到他們的Tay機器人能多快從推特上的噴子那里學會不良行為。
-
機器人
+關(guān)注
關(guān)注
211文章
28466瀏覽量
207310 -
機器學習
+關(guān)注
關(guān)注
66文章
8422瀏覽量
132714
發(fā)布評論請先 登錄
相關(guān)推薦
評論