人工智能如何處理數(shù)據(jù)?如果把重點放在數(shù)據(jù)的處理方式上,那么長期共存的方式大概有兩種:
特征學(xué)習(xí)(featurelearning)朱躺,又叫表示學(xué)習(xí)(representation learning)或者表征學(xué)習(xí)
特征工程(featureengineering)尖昏,主要指對于數(shù)據(jù)的人為處理提取串绩,有時候也代指“洗數(shù)據(jù)”
不難看出,兩者的主要區(qū)別在于前者是“學(xué)習(xí)的過程”枉圃,而后者被認為是一門“人為的工程”。用更加白話的方式來說庐冯,特征學(xué)習(xí)是從數(shù)據(jù)中自動抽取特征或者表示的方法孽亲,這個學(xué)習(xí)過程是模型自主的。而特征工程的過程是人為的對數(shù)據(jù)進行處理展父,得到我們認為的返劲、適合后續(xù)模型使用的樣式。
舉個簡單的例子栖茉,深度學(xué)習(xí)就是一種表示學(xué)習(xí)篮绿,其學(xué)習(xí)過程是一種對于有效特征的抽取過程。有用的特征在層層學(xué)習(xí)后抽取了出來吕漂,最終交給了后面的分類層進行預(yù)測亲配。一種比較不嚴(yán)謹?shù)庇^的理解可以是,假設(shè)一個n層的深度學(xué)習(xí)網(wǎng)絡(luò)惶凝,那么輸入數(shù)據(jù)在被網(wǎng)絡(luò)逐層抽象化吼虎,靠前的層(1~k)學(xué)到了低階特征(low level features),中間層(k+1~m)學(xué)到了中階特征(middle level features)苍鲜,而靠后的層上(m+1~n-1)特征達到了高度的抽象化獲得了高階特征(high level features)思灰,最終高度的抽象化的特征被應(yīng)用于分類層(n)上,從而得到了良好的分類結(jié)果混滔。一個常用例子是說卷積網(wǎng)絡(luò)的前面幾層可以學(xué)到“邊的概念”洒疚,之后學(xué)到了“角的概念”,并逐步學(xué)到了更加抽象復(fù)雜的如“圖形的概念”坯屿。下圖就給出了一個直觀的例子油湖,即圖像經(jīng)過深度網(wǎng)絡(luò)學(xué)習(xí)后得到了高度抽象的有效特征,從而作為預(yù)測層的輸入數(shù)據(jù)领跛,并最終預(yù)測目標(biāo)是一只貓肺魁。
<img src="https://pic2.zhimg.com/v2-af7b9058eae749c647cb5a5ed3af248d_b.jpg" data-size="normal" data-rawwidth="1106" data-rawheight="464" class="origin_image zh-lightbox-thumb" width="1106" data-original="https://pic2.zhimg.com/v2-af7b9058eae749c647cb5a5ed3af248d_r.jpg">
輸入數(shù)據(jù)通過網(wǎng)絡(luò)后,抽取到了高維的抽象特征隔节,從而促進了分類結(jié)果鹅经。原圖[4]
另一個常見的例子就是下圖中,深度信念網(wǎng)絡(luò)(deep belief network)通過堆疊的受限玻爾茲曼機(Stacked RBM)來學(xué)習(xí)特征怎诫,和cnn不同這個過程是無監(jiān)督的瘾晃。將RBF堆疊的原因就是將底層RBF學(xué)到的特征逐漸傳遞的上層的RBF上,逐漸抽取復(fù)雜的特征幻妓。比如下圖從左到右就可以是低層RBF學(xué)到的特征到高層RBF學(xué)到的復(fù)雜特征蹦误。在得到這些良好的特征后就可以傳入后端的傳統(tǒng)神經(jīng)網(wǎng)絡(luò)進行學(xué)習(xí)劫拢。
<img src="https://pic4.zhimg.com/v2-1c9649ba5340bef2e7fe293acab8ee3f_b.jpg" data-caption="" data-size="normal" data-rawwidth="720" data-rawheight="219" class="origin_image zh-lightbox-thumb" width="720" data-original="https://pic4.zhimg.com/v2-1c9649ba5340bef2e7fe293acab8ee3f_r.jpg">
換個不嚴(yán)謹?shù)陌自捳f法,深度學(xué)習(xí)的層層網(wǎng)絡(luò)可以從數(shù)據(jù)中自動學(xué)習(xí)到有用的强胰、高度抽象的特征舱沧,而最終目的是為了幫助分類層做出良好的預(yù)測。而深度學(xué)習(xí)為什么效果好偶洋?大概和它能夠有效的抽取到特征脫不了關(guān)系熟吏。當(dāng)然,深度學(xué)習(xí)的一大特點是其對數(shù)據(jù)的分布式表示(distributed representation)(*也和稀疏性表示等其他特性有關(guān))玄窝,最直觀的例子可以是nlp中的word2vec牵寺,每個單詞不再是割裂的而互相有了關(guān)聯(lián)。類似的恩脂,不少網(wǎng)絡(luò)中的參數(shù)共享就是分布式表示帽氓,不僅降低了參數(shù)量需求也提高對于數(shù)據(jù)的描述能力。僅看分類層的話俩块,深度學(xué)習(xí)和其他的機器學(xué)習(xí)似乎沒有天壤之別黎休,但正因為有了種種良好的表示學(xué)習(xí)能力使其有了過人之處。下圖直觀的對比了我們上文提到的兩種特征的學(xué)習(xí)方式玉凯,傳統(tǒng)的機器學(xué)習(xí)方法主要依賴人工特征處理與提取奋渔,而深度學(xué)習(xí)依賴模型自身去學(xué)習(xí)數(shù)據(jù)的表示。
<img src="https://pic2.zhimg.com/v2-066a8ddfbe8c7c50b28353c15986fed9_b.jpg" data-size="normal" data-rawwidth="1776" data-rawheight="780" class="origin_image zh-lightbox-thumb" width="1776" data-original="https://pic2.zhimg.com/v2-066a8ddfbe8c7c50b28353c15986fed9_r.jpg">
機器學(xué)習(xí)與深度學(xué)習(xí)對于特征抽取的不同之處壮啊,原圖來源于[3]
綜上嫉鲸,機器學(xué)習(xí)模型對于數(shù)據(jù)的處理可以被大致歸類到兩個方向:
表示學(xué)習(xí):模型自動對輸入數(shù)據(jù)進行學(xué)習(xí),得到更有利于使用的特征(*可能同時做出了預(yù)測)歹啼。代表的算法大致包括:
深度學(xué)習(xí)玄渗,包括大部分常見的模型如cnn/rnn/dbn,也包括遷移學(xué)習(xí)等
某些無監(jiān)督學(xué)習(xí)算法狸眼,如主成分分析(PCA)通過對數(shù)據(jù)轉(zhuǎn)化而使得輸入數(shù)據(jù)更有意義
某些樹模型可以自動的學(xué)習(xí)到數(shù)據(jù)中的特征并同時作出預(yù)測
特征工程:模型依賴人為處理的數(shù)據(jù)特征藤树,而模型的主要任務(wù)是預(yù)測,比如簡單的線性回歸期待良好的輸入數(shù)據(jù)(如離散化后的數(shù)據(jù))
需要注意的是拓萌,這種歸類方法是不嚴(yán)謹?shù)乃甑觯瑑H為了直觀目的而已。并沒有一種劃分說a算法是表示學(xué)習(xí)微王,而b算法不是屡限,只是為了一種便于理解的劃分。
因此炕倘,大部分的模型都處于純粹的表示學(xué)習(xí)和純粹的依賴人工特征之間钧大,程度不同而已,很少有絕對的自動學(xué)習(xí)模型罩旋。詳細的關(guān)于兩種處理數(shù)據(jù)方法的對比和歷史可以參考一篇最近的綜述論文 [2]啊央,更早也更經(jīng)典的關(guān)于特征學(xué)習(xí)的介紹可以參考論文 [1]眶诈。
那么好奇的讀者會問:
1. 是不是自動的特征抽取(表示學(xué)習(xí))總是更好?
答案是不一定的:1. 在數(shù)據(jù)量不夠的時候瓜饥,自動特征抽取的方法往往不如人為的特征工程 2. 當(dāng)使用者對于數(shù)據(jù)和問題有深刻的理解時逝撬,人工的特征工程往往效果更好。
一個極端的例子是乓土,在kaggle比賽中的特征工程總能帶來一些提升宪潮,因此人工的特征抽取和處理依然有用武之地。
同時也值得注意帐我,表示學(xué)習(xí)的另一好處是高度抽象化的特征往往可以被應(yīng)用于相關(guān)的領(lǐng)域上,這也是我們常說的遷移學(xué)習(xí)(transfer learning)的思路愧膀。比如有了大量貓的圖片以后拦键,不僅可以用于預(yù)測一個物體是不是貓,也可以用于將抽取到的特征再運用于其他類似的領(lǐng)域從而節(jié)省數(shù)據(jù)開銷檩淋。
2. 特征學(xué)習(xí)(表示學(xué)習(xí))芬为,特征工程,特征選擇蟀悦,維度壓縮之間有什么關(guān)系媚朦?
從某個角度來看,表示學(xué)習(xí)有“嵌入式的特征選擇”(embedded feature selection)的特性日戈,其表示學(xué)習(xí)嵌入到了模型中询张。舉個簡單的例子,決策樹模型在訓(xùn)練過程中可以同時學(xué)習(xí)到不同特征的重要性浙炼,而這個過程是建模的一部分份氧,是一種嵌入式的特征選擇。巧合的看弯屈,表示學(xué)習(xí)也是一種嵌入表示(embedded representation)蜗帜。如維度壓縮方法PCA,也是一種將高維數(shù)據(jù)找到合適的低維嵌入的過程资厉,前文提到的word2vec也是另一種“嵌入”厅缺。至于這種“嵌入”是否必須是高維到低維,不一定但往往是因為特征被抽象化了宴偿。以上提到的兩種嵌入一種是對于模型的嵌入湘捎,一種是在維度上嵌入,主要是名字上的巧合窄刘。
3. 理解不同數(shù)據(jù)處理方法對于我們有什么幫助消痛?
首先對于模型選擇有一定的幫助:
當(dāng)我們數(shù)據(jù)量不大,且對于數(shù)據(jù)非常理解時都哭,人為的特征處理也就是特征工程是合適的秩伞。比如去掉無關(guān)數(shù)據(jù)逞带、選擇適合的數(shù)據(jù)、合并數(shù)據(jù)纱新、對數(shù)據(jù)做離散化等展氓。
當(dāng)數(shù)據(jù)量較大或者我們的人為先驗理解很有限時,可以嘗試表示學(xué)習(xí)脸爱,如依賴一氣呵成的深度學(xué)習(xí)遇汞,效果往往不錯。
4. 為什么有的模型擁有表示學(xué)習(xí)的能力簿废,而有的沒有空入?
這個問題需要分模型討論。以深度學(xué)習(xí)為例族檬,特征學(xué)習(xí)是一種對于模型的理解歪赢,并不是唯一的理解,而為什么泛化效果好单料,還缺乏系統(tǒng)的理論研究埋凯。
5. 特征工程指的是對于數(shù)據(jù)的清理,和學(xué)習(xí)有什么關(guān)系扫尖?
此處我們想再次強調(diào)的是白对,這個不是一個嚴(yán)謹?shù)目茖W(xué)劃分,是一種直觀的理解换怖。如果所使用的模型擁有對于數(shù)據(jù)的簡化甩恼、特征表示和抽取能力,我們都可以認為它是有表示學(xué)習(xí)的特性沉颂。至于哪個模型算媳拴,哪個模型不算,不必糾結(jié)這點兆览。而狹義的特征工程指的是處理缺失值屈溉、特征選擇、維度壓縮等各種預(yù)處理手段抬探,而從更大的角度看主要目的是提高數(shù)據(jù)的表示能力子巾。對于數(shù)據(jù)的人為提煉使其有了更好的表達,這其實是人工的表示學(xué)習(xí)小压。
寫在最后是线梗,這篇回答僅僅是一種對于機器學(xué)習(xí)中數(shù)據(jù)處理方法的理解,并不是唯一正確的看法怠益。有鑒于機器學(xué)習(xí)領(lǐng)域的知識更迭速度很快仪搔,個人的知識儲備也有限,僅供參考蜻牢。
[1]Representation Learning: A Review and New Perspectives
[3]Log Analytics With Deep Learning and Machine Learning - XenonStack
[4] Adam Coates,Deep Learning for Vision