機器學習最難區分的4個概念,一文釐清!
文:limber,udacity機器學習納米學位畢業生
前幾天和中科院的戴瑋前輩談論機器學習,在刷ESL(TheElement of Statistical Learning)的時候不免想到,所謂之機器學習究竟與Statistics有何區別。從最簡單的Regression到神經網路,很大程度都是Statistical Learning的江山。而我們熟知當年Tom Mitchell經典一文[1]奠定了機器學習正式挺直了腰板,從此機器學習不再是Statistics的附庸。
除了風格與Supervised/Unsupervised Learning截然不同的Reinforcement Learning以外,大家雖然知道機器學習已不再附於Statistics,然而具體而言卻又不得一二。本文就談論機器學習與傳統的統計入手,講一下個人對二者區別之理解,而後在此基礎上談談概率論與以上兩個學科之不同。
側重點之不同
在Brian Caffo[2]提到一個關於MachineLearning與Traditional statistical analyses的一些區別,主要在關注主體和驗證性作區分。前者不關心模型的複雜度有多麼的高,僅僅要求模型有良好的泛化性以及準確性。而後者在模型本身有一定的要求——不可過於複雜。
而前者主要驗證的也就是前者的關注對象即是否有良好的泛化性與準確性,引入了Cross Validation。而後者嘗試尋找一種可被驗證的Hypotheses,因此而引入了如 student t-test 等方法。也就是說統計希望得到的是一個被實驗數據在一定容許誤差內驗證為正確的東西。統計要求過程嚴謹可證明,而機器學習要求結果有效,偏實用主義更多。
結果導向在金融市場的應用時也出了大問題,然而甚至有人(市面上有好幾本教別人用機器學習做量化分析的書)還光明正大的招搖撞騙,自己做的金融產品虧的一塌糊塗還強行吹【人工智慧選出來的】——這屆韭菜特好騙。
曾經我十分勤勤懇懇的做了幾十個模型,後來發現幾十個跑的挺不錯的模型出來的結論全都是一廂情願的自己騙自己,都沒有什麼卵用——理論特厲害,實盤虧精光。有效果可能是假的,跑的再好可能也是假的。而更好笑的是,市面某一本教量化的書,Machine Learning中的Training Set和Validation Set測試結果跑出了一個不高不低的成績就敢直接用了,甚至模型放到書裡面。這屆韭菜很好學,賣的還很好。
這些東西是和Over-fitting、code bug等技術層面的失誤沒有任何關係,因此強化學習(Reinforcement Learning)在Quant中也大行其道。(Quant的工作就是設計並實現金融的數學模型(主要採用計算機編程),包括衍生品定價,風險估價或預測市場行為等)
並不是沒有人嘗試打開機器學習、深度學習的黑箱,如顧險峰老師試圖用幾何打開Wasserstein GAN[3]的黑箱[4]——用Briener勢函數來代替深度神經網路這個黑箱,從而使得整個系統變得透明。推開黑箱,對最優化理論的功夫的要求極深,甚至其中有很多內容也許尚不能用現有定理證明。
這種情況也是十分的哭笑不得——應用跑的比底層理論更快。而反而需要數學領域加緊發展才能逐漸打開深度學習的黑箱。而機器學習也同樣的陷入了「LightGBM帝國主義」[6],在Kaggle競賽中得獎的清一色只有兩種情況,第一種是用神經網路,第二種是Handcrafted feature engineering,主要就是用XGBoost。
後來Microsoft的LightGBM[6]橫空出世,跑的比XGBoost更快更好了,瞬間就成了LightGBM的天下了。手工特徵加LightGBM,打遍天下無敵手。然而問【你為啥用啊?】或者【為啥LightGBM效果就這麼好啊?】——不知道啊。
複雜性要求不同
傳統科學有一個很經典的評價標準——奧卡姆剃刀法則(如無必要,勿增實體),認為科學應該用相對更簡單的方式來表述。因此統計學模型的設計是有一個複雜性的考慮的——即使更複雜的模型效果更好,也不能採用之。
這句話我在兩年前還不大能夠理解,後來我在翻一本科學史的研究的著作時看到了這樣的一則故事:日心說初期,其精準度比不上托勒密天文體系。然而托勒密天文體系其模型的複雜度遠在日心說之上,浩如煙海的解釋以及分析,最後被簡單的幾大定律給一網打盡。出於這般考慮,傳統統計分析,要求統計模型的複雜度限制在一定的範圍之內。
在傳統的統計分析中,會強調參數的可解釋性。與機器學習相比,統計模型中可能有許多參數,演算法並不真正關心這些參數。機器學習的模型越來越可怕,我在下面放了從LeNet到ResNet的網路圖大家可以感受一下模型的發展歷程。
LeNet(1986)
AlexNet(2012)
VGG(2014)
模型的深度往下走,複雜度直線上升。然而深度學習發展到現在,控制複雜性和提高泛化性上大致可分為兩個大方向:
- 第一是在卷積結構上做文章,如何把卷積改的更漂亮?效果更好?CNN有一些硬傷,例如沒有考慮到特徵之間重要的空間等級,以及它們缺乏旋轉不變性,利用參數結構性來降低模型複雜性來進行研究,如inception和xception[10]。
- 第二是ResNet和Densenet這種結構上簡單堆砌、但利用跨層連接或組合等方式,讓看似很深的網路其實並不是那麼深,一定程度上相當於深度學習和寬度學習的折中[11]。
我在台灣的一個朋友在做一個深度學習的項目的時候十分驕傲的跟我說他建了1048層的網路,然後用非常豪華的GPU陣容去Train整個模型,他說完之後我就默默的在心裡的小本本寫上「這二貨對深度學習一無所知」。雖然如此,機器學習不去擔心模型的複雜性,而是去擔心模型是不是發力過猛導致over-fitting,最後的結果就成了一個調參師。
這種奇葩的情況不免讓我想到了中學時代做光學實驗的時候,那時我對焦距的計算一無所知,而上課睡覺的我總是不理解為什麼在做實驗的時候要在我面前放一打草稿紙,因為我直接上手擺弄透鏡去了,最後總能靠感覺一點點逼近一個不錯的答案。作為一個結果導向的東西,深度學習、機器學習還真的和這方面很像。
機器學習的硬傷
機器學習雖然不對過程有太高的要求,但是也有一個很明顯的弊端,業界有言曰:「垃圾進垃圾出」,假如你的數據噪音(Noise)很大或者其與結果的相關性極低,那麼用這個數據完成的機器學習的模型也極有可能非常的差。
當數據本身成為問題之後,一切將很輕鬆的被顛覆——因此機器學習花了大量的功夫在做Feature上。
統計本身就是個為了得到一個General Rule,也就是通過了Hypotheses的證明之後的Conclusion本身。這個Conclusion本身可以作為一個指導意見。而機器學習則是拿著模型帶著走,針對具體的問題用具體的模型,拍進輸入得到想要的輸出。統計得到的結果本身可以作為一種解釋,無數的研究便是由統計驗證得到的結論作為研究的基礎。
概率論的特殊性
相比機器學習與統計,概率論與二者之差別較為明顯。概率論是可以不需要任何數據就可以直接進行研究,而統計、機器學習,不能。不依靠任何數據,就意味著這個學科對數學、對純理論有更高的要求——它更多地注重分析概率的背後的數理關係。統計學的支撐可能就是一條大數定律,而概率論的支持則有如測度論等很多不同的東西。
最後安利下我們的機器學習入門課程~
機器學習(入門) | Udacity推薦閱讀:
※Hands-On ML,CH2:房價預測
※用一個像素攻陷神經網路
※十分種讀懂KNN
※【學界】Mirror descent: 統一框架下的一階演算法
※一文弄懂神經網路中的反向傳播法——BackPropagation