「特征工程」與「表示學習」


https://mp.weixin.qq.com/s/au-U7oNkS0FWNtkHcRsrcw

 

1.表示學習

當我們學習一個復雜概念時,總想有一條捷徑可以化繁為簡。機器學習模型也不例外,如果有經過提煉的對於原始數據的更好表達,往往可以使得后續任務事倍功半。這也是表示學習的基本思路,即找到對於原始數據更好的表達,以方便后續任務(比如分類)。

舉個簡單的例子,假設我們有 \{{x,y\}} ,想要尋找x與y之間的關系。

 

 

如果單用肉眼看的話,x這個矩陣其實還是比較復雜的,無法直接發現與y間的關系。但如果我們非常幸運,發現x每行相加后的結果 [4,8,12,16,20]^T ,就可以直接看出x與y之間的關系是 y=x+2 。這個例子是為了說明:同樣的數據的不同表達,會直接決定后續任務的難易程度,因此找到好的數據表示往往是機器學習的核心任務。值得注意的是,在現實情況中我們所提煉的到表示往往是很復雜的,往往對於高維矩陣提取到特征也是高維矩陣。這個例子僅供拋磚引玉之用,表示學習不等於維度壓縮或者特征選擇。

2. 特征工程與表示學習:人工 vs. 自動

正因為數據表示的重要性,機器學習一般有兩種思路來提升原始數據的表達:

特征學習(feature learning),又叫表示學習(representation learning)或者表征學習,一般指的是自動學習有用的數據特征

特征工程(feature engineering),主要指對於數據的人為處理提取,有時候也代指“洗數據”

不難看出,兩者的主要區別在於前者是“學習的過程”,而后者被認為是一門“人為的工程”。用更加白話的方式來說,特征學習是從數據中自動抽取特征或者表示的方法,這個學習過程是模型自主的。而特征工程的過程是人為的對數據進行處理,得到我們認為的、適合后續模型使用的樣式。根據這個思路,機器學習模型對於數據的處理可以被大致歸類到兩個方向:

1. 表示學習:模型自動對輸入數據進行學習,得到更有利於使用的特征(*可能同時做出了預測)。代表的算法大致包括:

深度學習,包括大部分常見的模型如CNN/RNN/DBN等

某些無監督學習算法,如主成分分析(PCA)及自編碼器(autoencoder)通過對數據轉化而使得輸入數據更有意義

某些樹模型可以自動的學習到數據中的特征並同時作出預測

2. 特征工程:模型依賴人為處理的數據特征,而模型的主要任務是預測,比如簡單的線性回歸期待良好的輸入數據(如離散化后的數據)

至於更加深入的對於數據表示學習的科普,可以參考:微調:人工智能(AI)是如何處理數據的?(https://www.zhihu.com/question/264417928/answer/283087276)

3. 模型選擇

回歸到問題的本質,就要談談什么時候用「手工提取」什么時候用「表示學習」。一種簡單的看法是,要想自動學習到數據的良好表達,就需要大量的數據。這個現象也解釋了為什么「特征工程」往往在中小數據集上表現良好,而「表示學習」在大量復雜數據上更有用武之地。

而一切的根本,其實在於假設。比如我們會假設數據分布,會假設映射函數的性質,也會假設預測值與輸入值間的關系。這一切假設其實並非憑空猜想,而是基於我們對於問題的理解,從某種角度來看,這是一種先驗,是貝葉斯模型。在中小數據集上的機器學習往往使用的就是強假設模型(人類知識先驗)+一個簡單線性分類器。當數據愈發復雜,數據量逐漸加大后,我們對於數據的理解越來越膚淺,做出的假設也越來越傾向於隨機,那么此時人工特征工程往往是有害的,而需要使用擺脫了人類先驗的模型,比如深度學習或者集成模型。

換句話說,模型選擇的過程其實也是在衡量我們對於問題及數據的理解是否深刻,是在人類先驗與數據量之間的一場博弈。從這個角度來看,深度學習首先革的是傳統機器學習模型的命:最先被淘汰的不是工人,而是特定場景下的傳統機器學習模型。

但話說回來,在很多領域數據依然是稀缺的,我們依然需要人工的手段來提煉數據。而這樣的嘗試其實並不罕見,我也寫過一篇「Stacking」與「神經網絡」(https://zhuanlan.zhihu.com/p/32896968)介紹如何模擬神經網絡在中小數據集上無監督的抽取特征,並最終提升數據的表示。另一個相關的問題是,到底多少數據才算多?可以參考這篇文章:「機器學習」到底需要多少數據?(https://zhuanlan.zhihu.com/p/34523880)

4. 總結

從這個方向推廣出去可以聯想到很多熱門的話題,比如在問題A上學到的數據表達可以在問題B上使用(遷移學習),拋棄和合並冗余特征(維度壓縮與特征選擇等)。從本質上來看,這些都是在挖掘數據中的核,即最關鍵的濃縮信息。

然而,相同的數據對於不同的任務也要求不同的數據表達,最優的數據表示並非是絕對的。類比來看,人類是由細胞組成的,器官也是由細胞組成的。在器官層面來看,細胞是很好的表達。而從人類角度來看,器官是比較好的表達,因為我們可以通過身高體重來區分人,而無法直觀地通過細胞來區分人。然而再往前看一步,每個人的細胞攜帶不同的遺傳信息,因此也可以被認為是一種很強的數據表達。講這個故事的目的是說明,什么是好的數據表達,其實是非常模棱兩可的問題,在不同語境下可能大不相同。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM