當前位置:
首頁 > 知識 > 工程師在 AI 實踐的路上,可能會踩到這些坑——前 Amazon 中國研發中心架構師蔡超演講

工程師在 AI 實踐的路上,可能會踩到這些坑——前 Amazon 中國研發中心架構師蔡超演講

蔡超,移動營銷平台 Mobvista 匯量科技技術副總裁,前亞馬遜中國研發中心架構師,擁有 15 年軟體開發經驗,其中 9 年任世界級 IT 公司軟體架構師 / 首席軟體架構師,曾領導開發了亞馬遜全球新外部直運平台,亞馬遜物流 + 系統及基於機器學習的亞馬遜全球客服系統智能化項目。

此文為蔡超在全球人工智慧與機器學習技術大會(AICon)上演講, AI 研習社做了不影響原意的編輯。

以下為 AI 研習社整理的演講全文:

有很多工程師想要投入到人工智慧的實踐中,最常見的學習過程大概有兩種:一種是看到很多的公式就一頭扎進去,花時間去研究每一條公式;二是把人工智慧看成一個黑盒,就像全自動洗衣機一樣,將數據或者一些 csv 文件放到黑盒裡面,然後就等結果出來。基本上常見的學習方式就是這兩種。

那麼我們到底應該怎樣學習人工智慧?我們先來看看人工智慧學習和時間過程中的一些陷阱。

第一,大家一直比較強調模型的 accuracy,初學者認為,準確性可能是一個非常重要的 metric。這裡我有個例子,這個模型能夠預測未來兩周里購買商品的人數。它的準確性有多高呢?經過簡短的訓練可以達到 98%。我覺得很納悶,因為這個數據其實並不是這麼容易就能預測的。

後來我把他們的數據找出來看了一下,通過兩周的歷史數據預測,我們發現在一百萬的抽樣人群里,會有兩千人會購買。那麼我們來看一下,如果一百萬人裡面只有兩千人會在未來兩周購買商品的話,即使你永遠回答 no,永遠不會購買,你的準確性都有 99.8%,大於它摸索訓練出來的 98%。

有意思嗎?這只是一個小例子,這樣的事情經常發生,在統計學上,這樣的數據叫做 no information rate。如果你希望你的模型有意義,那麼它的 accuracy 應該大於 no information rate,對吧?

當然,衡量我們機器學習模型的 metric 有很多,accuracy 只是其中一個方面,我們在判斷模型好壞的時候不要陷入到這個誤區當中,應該根據我們自己的 case 尋找合適的 metrics。

第二個誤區,是數據和模型之間的關係。很多初學者對模型有中天生的熱愛,他們喜歡學習各種 fanshion 的模型,拿到一些數據之後,他們就找特定的模型來訓練,比如最近流行的 Xgboost,反正很多人參加比賽都是用 Xgboost 贏的。

大家在試完一個模型之後看看結果行不行,不行的話再換一個模型試試。每個模型有很多的參數,在加上模型本身,就會形成很多 combination,很多人每天就在浩瀚無邊的模型和參數的 combination 里游弋,最終也不一定能夠得到一個很好的結果。

很多初學者一開始最常犯的錯誤是認為模型是第一位的。下面我們通過一個實際的案例來看看到底是數據重要還是模型重要。

這個例子來源於我做過的一個真實項目。亞馬遜的用戶不論是給亞馬遜哪個 site 發郵件,亞馬遜的 custom service 都會自動回復一封非常制式的郵件。你也許會覺得,它就是一個郵件模板,通過修改部分用戶信息而生成。其實全球亞馬遜有 10 萬個這樣的郵件模板,亞馬遜總能在這 10 萬份郵件模板中找合適的模板來處理你的 case,但這也是件很麻煩的事,因為很難找到合適的模板。

有人會認為這又什麼難的,Google 上有成千上萬條信息,用戶只要搜索關鍵詞就能 match 到想要的信息。但亞馬遜不一樣,亞馬遜的業務只涉及很少的幾件事,可是有 10 萬個模板,當你輸入一個關鍵字時,相近的模板會全搜索出來。我們全球亞馬遜的客服人員平均工作年限是七個月,所以說大部分都是新手,對於他們來講,篩選這些模板非常困難。

有開發者會想,這不就是分類問題嗎?我們找一個分類的模型把這些事辦了不就行了?我不知道大家是否有共識,就是大家在看吳恩達的機器學習課程或者網上的分類問題例子,都是在講患者是否得癌症,明天的天氣怎樣,分類數比較少,甚至是二分類。

其實有句話是這樣說的:只要能把一個問題抽象成二分類的問題,那麼基本上就勝利了一半。我們剛才談到,我們有十萬個模板,那就是十萬分類問題,或者說你想要縮小範圍,比如十個模板分一類,那也有一萬個分類,這處理起來也是非常困難的。

回到這些模板的使用數據上,我們發現 TOP 10% 的模板其實能夠 cover 到 80% 的 case,甚至是 80% 以上的 case。那麼我們後來怎麼做的呢?我們用上周 TOP 10 的模板為下周做推薦,這樣的準確率能到 56%。後來我們在此基礎上疊加一些學習演算法做更有效的篩選,最終的準確性能夠提高到 80%,這是一個非常不錯的成績。

通過這個例子可以看到,我們並沒有去尋找 fanshion 的模型,而是從數據出發,通過數據就能解決很多問題。在現在這個大數據機器學習的時代,大多數情況下,你都會發現數據遠比模型重要得多

另外,還有一個誤區,大家在訓練模型的時候喜歡找很多的 feature。大家總以為 feature 越多越好,把 feature 之間的組合關係做得非常巨大。我在網上找了一個廣告的數據集,這個數據集很多書籍都在用,那我通過這個數據集來告訴大家, feature 和模型優劣的關係,是不是 feature 越多你的模型就會越好呢?

這個數據顯示的是在電視、收音機、報紙上投放的廣告 sales 的預測。你們可以看到第一個 sales 就到代表我利用的所有 feature。那麼做完之後,我們看到 PPT 的下腳,它的均方根誤差 RMSE 是 1.723615。那 Rsquared 是什麼呢?我簡單解釋下,它是用來標識這個模型的擬合程度,取值在 0 和 1 之間,越接近於 1,擬合程度越高。

當我們把 newspaper 的 feature 去掉的時候,我們發現 RMSE 從 1.723615 降到了 1.676055,Rsquared 也得到了一個提升,變成了 0.8975927。所以說,我們在減少 feature 的情況下有時候會得到更好的效果。

另外一個誤區,很多人在學習機器學習之後,認為機器學習都應該是監督學習,而第一件是就是要找標註好的數據。其實機器學習本質上來將就是從數據中找出 pattern,並不是所有的問題都適合用監督學習解決。Cluster,聚類,就是非常重要的一種學習方式,其實還有關聯關係等,在這裡我們簡單介紹下聚類。

這是亞馬遜網站上的客戶反饋,通常情況下,不同的人對於各個商品有不同的關注度,比如說買相機,有人關注鏡頭,有人關注成像質量。那麼每個人在挑選相機的時候就會有不同的側重,關注點會不一樣。

大家可以看看,下面這個頁面和前一個頁面有一點點不同,橘黃色框選中的地方是 Topic 欄,系統會自動 extract 你關注的 topic,上面列出來的也是跟所關注的 topic 相關的。這是通過聚類的方式完成的,聚類是機器學習的一種,但不是監督學習。

OK,下面我們來講一講機器學習應用和實踐中的一些挑戰。

第一個是比較常見的挑戰,我相信很多人都遇到過這個問題,比如你要做一個異常檢測,監測每個應用系統是否發生了異常,那麼在 99% 的情況下,甚至是 99.99% 的情況下,這些系統都不應該有異常。如果,50% 的系統有異常的話,那該系統根本就沒法上線。那你知道的,我們一般用 imbalance data 去訓練的時候,都會呈現出我們剛才所說的,類似 accuracy 那樣的情況

開發者訓練一個模型,從整體上來看會傾向於獲得高 accuracy,在這樣的情況下你的模型就沒法獲取你想要看到的那個異常,這種模型非常難訓練。在一般情況下,開發者會採用 scale up 或者 scale down 的方法,就是說我去將這個問題的數量複製一下,或者是生成一些重要的調檔。有個數據是 1:5 或者 1:3,我問西雅圖的同時為什麼是這個數據?他們說:「It"s 啊 magic number」,沒有證據證明為什麼,但是這個數據總能獲得成功。但整體而言,這個問題都是非常困難的,以 scale down 為例,你 scale down 的時候會失去大量的數據。

接下來我們在看看,有時候我們並不需要用傳統的監督學習來解決問題,有種技術叫做 Anomaly Detection

CPU 或者是 Memory 利率的分布有可能是一個正態分布,或者經過 log 變換後變成一個正態分布。正態分布一個很大的特點就是兩個方差之外的可能性只有 5%,你可以認為這個 5% 就是異常點,甚至你可以將兩邊擴展到三個方差,進一步縮減異常點的範圍。如果你們的 CPU 和 Memory 是獨立變換的話,你只要把它們相乘就行了,這是非常簡單的。

當你有大量的數據,數據集的正樣本數和負樣本數懸殊很大的時候,應該考慮下研究它們的分布,看看能不能用 Anomaly Detection 分布既簡單又高效地解決問題。

如果樣本數相差不太大的情況下,當然,我們可以嘗試使用傳統的監督學習。

還有一個對初學者常見的挑戰,我們找一個模型並不難,有很多現成的模型可用,甚至我們可以借鑒別人訓練好的模型權值,但是對於一個初學者來講,困難的是 feature 的預處理

當我們拿到 feature 的時候要把它中心化、縮放,我們剛才也談到了,feature 不是越多越好,我們要選擇有效的 feature,將這些 feature 組合在一起。更常見的是一些異常值和丟失數據的處理,這些需要很高的處理技巧。

這裡我給大家一個小小的建議,當你想快速實驗一個不太拿手的模型時,我建議使用樹模型,尤其是 Random Forest 模型。Random Forest 能夠自動幫你篩選這些 feature,而且會告訴你 feature importance。

好,下面我們談一些更具挑戰性的問題,我會用實際項目給大家解釋這些挑戰。

第一, 有些圖片在某些國家和地區是不能出現的,比如在有的地方展示內衣時,是不能穿在人身上的。面對這樣的情況,我們可以對圖像做變形、模糊化等處理,由一個樣子變成多個樣子。

另外一個挑戰是什麼呢?你的標註數據較少,沒辦法做更多的實驗,目前來說有沒有深度學習網路的 bible 或者是一種 pattern 來告訴你最佳的結構是什麼。只是大家不斷地在探索。

相關的 paper 有很多,大家隨便拿一份 paper 來看,講的都是作者用一個數據集的時候取得了一個非常好的效果,然後把這個 structure 粘貼上來,但是並不知道其中的原理。這樣的 paper 非常多,昨天我聽一個老師說,現在高中生都能寫一篇論文發表,我看也有這個趨勢,因為大家都不太追求解釋這個 Why。

那麼在這樣的情況下可以使用一些現成的,良好的模型,一方面可以彌補訓練數據的缺少,另一方面可以彌補在模型構建上經驗的缺失。

遷移學習是另一種機器學習的方式。它會找到一個現成的模型,在深度學習里較低層模型把 feature extract 出來後,高層的模型可以從較低層的 feature 里把 high level 的 feature 一點一點的 extract 出來。我們可以看到上面這張圖片變成 pixel 的 RGB 值之後呢,它的邊會被 extract 出來,然後上面會是一些邊的組合。

那麼最後我來給大家總結一下,如何學習和實踐機器學習:我們要從具體問題開始,從數據開始,不要從模型開始,另外,在選擇模型時,要從簡單的開始。比如現在很多人傾向從深度的神經網路開始學習,而深度神經網路涉及到的權值非常多,你的訓練周期會很長,調節的時間甚至是放棄的時間也會更長,會經過非常多的迭代,訓練成本也會大好多,所以一定要從簡單的開始。

CCF ADL 系列又一誠意課程

兩位全球計算機領域 Top 10 大神加盟

——韓家煒 & Philip S Yu

共 13 位專家,覆蓋計算機學科研究熱點

新人福利

關注 AI 研習社(okweiwu),回復1領取

【超過 1000G 神經網路 / AI / 大數據,教程,論文】

一次 PyTorch 的踩坑經歷,以及如何避免梯度成為 NaN

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI研習社 的精彩文章:

TAG:AI研習社 |