1. 程式人生 > >解釋為什麽word2vec也被稱作deep learning

解釋為什麽word2vec也被稱作deep learning

spa blog 任務 post body 討論 mea com 記得

作者:orangeprince
鏈接:https://www.zhihu.com/question/27689129/answer/39117725
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請註明出處。

關於這個問題,我覺得需要澄清幾個概念:
1. 淺層(shallow)的監督學習(supervised learning)
代表性方法:Logistic Regression,Adaboost, Decision Tree等。
這一類方法的輸入是data的原始特征,輸出是data的label,不存在任何的中間層。

2.淺層無監督學習(unsupervised learning)
代表性方法:Kmeans, PCA, Sparse Coding, RBMs等。
這一類方法的輸入是data的原始特征,輸出是新的data表達,也不存在中間層。但是由於這類方法的輸出並不是針對某些特定的標簽或者場景,所以得到的數據表達可以繼續被用在其他的監督或者無監督學習的任務中。所以這些方法也可以被分為特征學習(feature learning)或者表達學習(representation learning)的方法。

3.深層無監督學習
代表性方法:Deep Boltzmann Machines, Deep Autoencodes等。
這一類方法可以大概看成是多個淺層無監督學習方法的疊加。所以方法最終的輸出同樣是data新的特征表達。與此同時,模型中每一層的輸出,同樣也可以看做是data的特征表達。

4.深度監督學習
代表性法方法:DBN,DNN,CNN等
這些方法的輸入是數據的原始特征,最後的輸出數據的label。但是與淺層的監督學習方法不同,雖然也是監督模型,但這類方法也會生成很多data的中間層表達或者特征。因此這些中間層的學習或提取也可以看成是一個特特征學習或者表達學習的過程,這是有深度學習的特殊情況決定的。

因此可以總結如下:無監督學習和深度學習的方法都可以看做是特征學習或者表達學習的方法,但是淺層的監督學習不能算是。


那麽應該怎麽區分無監督學習和深度學習的方法呢,這個似乎沒有特別明確的定義,或者也很難去教條的定義。但是非要較真的話,但是從深度學習這個名稱來看,首先模型的層數應該達到一定的數量才能算作是深度學習的方法。如果最基本的淺層學習方法看做一個二層的模型,那麽kernel SVM和經典的BP網絡就可以看成是三層的模型。我想它們還算不了深度學習的方法,至少模型的層數應該超過三層吧。當然,如果僅僅是這樣,那麽人工去構造多層特征也能算做深度學習了。既然我們討論的問題都是機器學習範疇,還應該滿足特征應該是逐層自動學習而得到的。至於是不是表達學習,我覺得到不用過於強調,因為前面已經討論過,只要是深度學習,就天生具有表達學習的特性。

下面來看w2v和glove這兩個模型吧。算法細節就不討論了,從我一開始讀論文就覺得這兩個模型跟深度學習關系不大,反倒更像是兩種特殊的矩陣分解算法。從word到vector,並不存在任何的中間表達層,而是直接一步到位得到的。從這個意義上來說,這兩個方法並不能稱作是深度學習。否則,SVD++,Factorization Machines 這些方法也都能算作是deep learning了。反倒是最近一些利用RNN和CNN的多層神經網絡對文本進行學習的方法是真正的deep learning方法。

那為什麽很多人都把他們和deep learning扯到一起呢?我覺得有幾個原因:
1. word2vec是之前神經網絡語言模型的簡化。而那個神經網絡語言模型看起來似乎更像是一個“深度”的學習模型,不過仔細分析算法本身,最核心的特征學習其實只有兩層。更何況word2vec又對這個模型做了很大的簡化。

2. word2vec是一個特征學習的方法,然後直接把特征學習等同到深度學習。這個前面已經多次討論過,深度學習方法應該是特征學習方法的一個子集。就像說人類是能直立行走的動物,但是直立行走的動物未必就一定是人類。

3. deep learning這個概念最近很火,可以借機炒作一把。

其實到底什麽叫deep learning並不是那麽重要,無非是一個名字的問題。大家理解算法本身才是最重要的。但是另外一方面,只有名正才能言順,才能避免個人帶來一些理解上的偏差。記得以前我曾經面試過一個學生,在他的簡歷裏面曾經提到自己曾經從事了deep learning的研究工作。最後我發現,他所謂的deep learning,就是用kmeans對特征進行聚類和匯總,然後再進行分類。在他理解,這個方法屬於特征或者表達學習的範疇,所以也屬於deep learning的範疇。但我想他所做的工作和真正的deep learning還是有很大的差別。而類似這種歸類方式,對於其他人,特別是一些對深度學習領域不太熟悉的人,還是會帶來很大的誤導。

解釋為什麽word2vec也被稱作deep learning