機器學習專案經歷的若干感想

dagis發表於2021-07-05

最近一個朋友組織了一個關於資料科學和機器學習的學習交流小團體。第一輪,大家輪流介紹自己的入門經驗以及一些感想。

既然在交流會中分享了一些感想,不如寫下來。感想這種事情很有意思,今年這個感想,明年就不一定成立了,寫下來,以後回頭看看應該挺有意思的。

基礎知識是非常重要的。比如說各種超參,啟用函式,損失函式等概念的定義,ROC和AUC可以做什麼,資料分層取樣有什麼好處,為什麼需要交叉校驗等等。當然,許多基本知識我自己也是沒有掌握,並且一直因為沒有掌握而suffering。前不久,面試一個Junior的Data Scientist, 問他覺得工作上有什麼challenge,他說很多模型的超參不知道什麼意思,不知道怎麼調。基礎知識沒有掌握帶來的實際問題。現在有很多模型框架,封裝了很多細節,對於訓練模型的Data Scientist來說,可能只要會喂資料就可以了。自動化啟用了惰性,只要模型可用,並不是所有的工程師都會去掌握背後的故事,畢竟這並不都是一個生動有趣的過程,所以缺乏基礎知識的Data Scientist也是四處可見。資料科學近十幾年來非常的活躍,各種SOTA(state_of_art)的模型讓人眼花繚亂,並且有這樣一種氣氛,以知道還是不知道SOTA來判斷水平高低,這真的是大錯特錯。

一個模型能否商用,細節非常重要。大部分的Data Scientist只關心一個模型的質量,預測的準還是不準,可能花了大半年一年來來提高兩三點的F1,但是一些細節問題因為早期被忽略,最後反而成了商用的阻礙因素。比如說進入模型前的資料預處理速度。這裡為什麼我不提模型的預測速度。當一個模型被提出來時候,它的計算量是多少,基本上可以算出來,而且特定模型都已經在c這一層優化過了,所以使得計算量最大的模型預測部分變得可控。比如說BERT Base的計算量,蒸餾過的BERT的計算量。而從原始資料到可以喂入模型的資料,可能需要很多的預處理,一個實現上的不簡化或小bug都可能使得計算量比模型預測本身還大,這種問題也是屢見不鮮。對於實時性要求比較高的應用,或者說模型需要跑在硬體效能有侷限性的嵌入式裝置上,這可以說是致命問題。另外一個很有意思的細節問題就是從biz value角度來說,無法接受的錯誤預測,可能會是個上線的阻礙。比如說人臉識別中,公交車上的董明珠海報,導致了董明珠在闖紅燈榜中,位居榜首。即早的搞清楚biz values可以說是專案成敗的關鍵因素之一。

整合越早做越好。機器學習專案與傳統軟體專案一個明顯差別是,很多的模型是從實驗室訓練出來的,然後再部署到產品中去。前一條提到,細節決定成敗,很多的細節在實驗室可能會被忽略或者不夠重視,只有即早的把經脈打通,才會暴露可能的致命細節問題。

親近資料。資料的重要性包含很多方面。資料是否有代表性,資料量是不是足夠,資料是否準確,資料是否還準確,這些資料問題,大家估計都很清楚。但這一條談論的是必須close to data。Data Scientist大多畏懼去看資料,常見的是,從統計學的角度做一些不痛不癢的plot,但抽樣一些資料來斟酌,並不是那麼常見。但其實,細看樣本,會發現,資料和想象中的不一樣,比如說會發現標註工程師們標註的guideline和你理解的不一樣,這些對於模型的質量有很大的影響。如果去看資料,這些問題很容易被發現,但為什麼Data Scientist這麼畏懼看資料呢。根據我的觀察,和一些Data Scientist的對話,以及自己的猜測,我覺得很大的原因是對領域知識不瞭解的畏懼。比如說我現在所處的是法律領域,資料都是涉及到法律條款,一想到這個,大家估計都不太想看了,看不懂啊,怎麼看。對於醫療,保險,生物,物理,天文,如果不瞭解domain knowledge,畏懼看資料是很自然的事情。但如果真的看進去,會發現,很多的錯誤根本還不需要domain knowledge就會被發現。對於錯誤分析也一樣。很重要的錯誤分析,由於對domain knowlege的畏懼,導致躊躇不前。

是否有同感? 


閱讀作者更多原創文章,關注微信公眾號:

機器學習專案經歷的若干感想



相關文章