機器學習在前兩年的時間裡,一下子就爆火了起來。很多公司也跟著這個趨勢,招募了很多演算法工程師、資料探勘工程師。但是,在實踐中,企業發現要落地,實際上還有很多問題需解決。以至於在大部分專案,還是規則主導。演算法工程師的日常,也不過是清洗資料,調整規則。所以,機器學習技術,在真實的應用中到底缺少些什麼呢?
在國立臺灣大學《機器學習》2019春季班,李宏毅老師給出了他的觀察。以下的內容,結合李老師的最新講義、加上我本身工作的理解,給大家梳理機器學習落地急需解決的9個難題。
#拒絕回答與可解釋性(哲學層面)
|1. Anomaly Detection 機器能不能知道“我不知道”
機器能不能知道自己的識別範圍,還是說生硬地給出模型內的東西,或者說丟擲無法識別。在貓狗分類裡,現有的模型已經到達很高的精度,甚至能給出貓狗的品種。
但是正式上線後,使用者真的會乖乖給到貓狗的圖片嗎?如果使用者丟一張妹子圖,機器能夠知道自己不知道嗎?目前這個領域的研究叫做 Anomaly Detection。知道自己不知道,對於一些異常的情況,十分重要。
|2. Explainable AI 說出為什麼“我知道”
神馬漢斯的故事:
18世紀德國,一匹名叫漢斯的馬成為當地網紅。他能夠計算簡單的算術題,並用蹄子敲出正確回答。這在當時一度引起轟動。後來,有人做了個實驗,把漢斯和周圍的人完全隔絕,這匹馬就完全 蒙圈 了。時事證明,這匹馬的神奇能力不在於他的算數能力,而在於他的觀察能力。當給到正確答案時,周圍的人會有不一樣的反應,漢斯也就隨即停止敲馬蹄。
機器學習的成果,是否同漢斯一樣,通過一些意想不到的渠道,獲得的答案。在 GCPR 2017 Tutorial 的研究中,研究者通過注意力機制,研究機器判斷的依據。
實驗者測試了兩個模型,兩個模型均為馬匹識別。DNN 模型的焦點集中在馬匹身上,是一個正常的模型。但 FV 的交點卻集中在圖片左下角。原來,圖片的左下角有圖片的出處,所有的包含馬匹的圖都有這個標記。所以,FV 模型學到的重點在於這些標記。同樣的表現,卻是不一樣的判斷依據。顯然,FV 模型的判斷依據是滑稽和不可靠的。
我們需要一些技術,讓 AI 不僅給出結果,同時要給出判斷的依據。即:模型的可解釋性。
#抵禦惡意攻擊
|3. 防止 Adversarial Attack
人有錯覺,機器是否也會有錯覺。我們來做一個認知實驗。以下兩個圈圈,哪個的顏色更深?好,記住你的答案。結果將在稍後揭曉。
對於機器,有研究表明,通過改變影像中的個別畫素,可以起到迷惑機器的作用。改變一個畫素,就可以讓模型的判斷結果從熊貓到長臂猿。該技術名叫 Adversarial Attack。
這樣的技術相當危險。舉個例子,當自動駕駛的車輛行駛在路上時,可能路邊的人揮舞下旗子,機器的判斷就會被干擾,做出不當的舉動。
回到開頭的例子,正確答案是左邊。這其實是一個計中計。你以為這是視覺認知實驗,其實這也是某種形式的“心理攻擊”。
#學習模式
|4. Life-long learning 終身學習
終身學習是一個人類行為的概念。活到老學到老,大家都知道只有不斷更新自己的知識,才能跟上社會發展的步伐。同時呢,先前學到的東西,對後面的學習仍有幫助。舉個例子:學完線性代數之後,對學習和理解機器學習就大有幫助。
但是,機器不一樣。今天的我們,一般只讓一個模型學習一個任務。但這樣會存在一些問題。首先是隨著建模的增多,模型數量將無限增長。其次,模型之前學到的技能,對之後的學習沒有幫助。就像 Alphastar 它玩星際爭霸很棒,但讓他同時學下圍棋,目前來說是不行的。它和 Alphazero 是兩個不同的模型 。
那麼,自然而然的,我們就會丟擲這樣一個疑問,機器能否終身學習呢?這裡的相關研究,提個關鍵詞 Catastrophic Forgetting 。
|5. Meta-learning / Learn to learn 學習如何學習
現有的機器學習模型設計,都遵循著這樣一個正規化——在特定領域人工設計一套演算法,讓機器去學習。我們就想,能不能設計一套演算法,讓機器自己去設計自己的學習演算法呢?
這樣的正規化,我們稱之為 meta-learning 元學習,或者叫 learn to learn,學習如何學習。
#模型改進
|6. Reinforcement learning 增強學習為什麼這麼慢
現在擼模型,沒用上增強學習,都不好意思說出來。在像星際爭霸這樣的遊戲中,增強學習確實有用。但是,它真的有那麼強嗎?
在星際爭霸中,機器花了900小時,才到達4000分左右。而人類的能力在哪兒呢?人類只需要2小時,就能到達。像前面提到的Alphastar,它雖然在星際爭霸上能夠痛扁人類,但它可是花了200年的時間在玩這個遊戲。模型世界就像是修仙小說裡的精神世界。若是把一個人丟在裡面,只能玩星際爭霸,他其實也可以達到機器的水平,更可能比機器做得更好。增強學習為什麼這麼慢,能不能再快些?
|7. Network Compression 神經網路壓縮
機器學習目前多執行在大型伺服器上,配備極強的 GPU、相當大的記憶體和數目眾多的 CPU。但若想要把機器學習廣泛應用於生活中,IoT 物聯網這類裝置的計算和儲存都是十分有限的。我們能不能把模型縮小,同時保留其能力呢。我們能不能把大型神經網路進行剪枝,或者是引數二元化,以此來減輕記憶體和計算壓力呢。我們現在有 tensorflow lite,有 coreML,但這些還不夠。
#訓練資料
|8. Few-shot / Zero-shot learning 一定需要很多訓練資料嗎
做比賽、寫論文的都知道,要想效果好,資料少不了。資料質量很大程度決定了結果的表現。但是在實際生產環境中,帶標註的優質資料是極其稀少的。這個時候,老闆想讓你做一個異常遊戲玩家的識別,資料樣本又很少,你該怎麼辦?除去自己手工標註、請人標註、做資料擴增外,我們還有很沒有別的辦法。難道要跟老闆攤牌,說做不了這一個任務嗎?
現實場景的樣本之少,一直有在困惑我們一線的員工。現在我們就希望,模型能夠通過少量的樣本,擴充套件到大量的未標記資料。這樣的研究有,我們稱之為 Few-shot learning。更有甚至,模型能不能通過我對川菜的描述:麻辣、重油、就識別出桌上的飯菜是四川菜呢?這樣的模型被稱之為 Zero-shot learing,不需要樣本進行學習。
|9. 機器學習的謊言 訓練資料和測試資料很不一樣
當我們在學習機器學習各類演算法時,教科書都會有這樣一個假設:訓練資料和測試資料擁有相同的分佈。但在真實世界中,這就是個謊言。
以手寫數字識別為例,當訓練集和測試集同分布時,你可以輕鬆達到99%的正確率。但在真實生活中,你的老闆可能會給你右邊的任務。訓練資料是黑白的,實際場景中背景卻是彩色的。這裡你有兩個選擇:一是把《機器學習》這本數仍到老闆面前,告訴他書上寫的要求同分佈,你這個任務做不了。但是一想到你家裡的老婆孩子,你可能還是會含淚接下這個任務。仔細想想,若是模型真的識別到數字的形狀,背景色應該沒有關係吧。但是當你真正來做這件事時,你會發現,同樣的模型,正確率下降到了57.5%。
諸如此類的問題,在真實場景中很常見。實際工作中,我們也有采取一些措施,儘量避免分佈不同步的情況發生。
#總結
李宏毅老師以上的總結,在生產環境確實存在。這也是我把它梳理一遍的動機,希望所有從業者在工作中能夠注意到它們,在這些問題上有所突破。看完本文的讀者,別忘了點贊、喜歡+關注哦。你的鼓勵,是我下一步的動力。