淺談深度學習分散式表示以及不同結構

貪心科技發表於2019-02-01

什麼是深度學習?

雖然很多人聽說過深度學習,但卻很少人真正理解什麼是深度學習。有很多媒體吹捧深度學習是用來模擬人的大腦,從而實現所謂的人工智慧(AI)。但事實上,人工智慧才剛剛起步,離真正的AI還離得很遠。即便深度學習跟大腦的工作機理有類似之處,把它說成模擬人腦過於誇張。事實上,即使神經科學家也未必清楚人的大腦是怎麼運作的。

總而言之,深度學習是機器學習的一個大方向, 它並不是特指某種機器學習模型,而更像是一種方法論,思想和框架(Framework)。它主要是以構建深層結構(deep architecture) 來學習多層次的表示(multiplelevels of representation/abstraction)。 這種深層次結構提供幾個重要的優點,這個我們會在後面講到。

舉個一個簡單的例子,左邊的圖表示由一個隱式層構成的經典的神經網路, 右邊的神經網路則擁有多層的隱式結構所以我們可以稱它為是一種深度學習模型。除了神經網路,深度學習這種思想也可以應用在增強學習(Reinforcement Learning) , 高斯過程(Gaussian Process) 和 高斯混合模型(Gaussian Mixture Model)等其他機器學習模型上。

淺談深度學習分散式表示以及不同結構深度學習的發展

其實,構建多層次結構的想法在20多年前就已經有過。然而,由於種種原因,這種想法在當時未能取得理想的效果,反而比經典的神經網路在效果上要弱。直到幾年前,深度學習才開始受到了廣泛的關注。那究竟是什麼原因使得這種“舊”思想重新找回它的地位呢? 歸根結底,大致有三個原因:

  1. 硬體上的提高。 訓練模型時需要的計算量非常之多,以前的硬體裝置很難有效地訓練複雜的深度學習模型。目前強大的GPU技術也有效地支撐著計算上的負擔。
  2. 擁有更多的資料。 我們目前生活在大資料時代, 正是大資料有效地推動了深度學習的發展。比起其他機器學習模型,深度學習在大資料上表現地更好。

  3. 有了更好的訓練方式。比如無監督預訓練(unsupervised pre-training)和 dropout。 尤其,無監督預訓練是在深度學習的發展史上一個里程碑似的發現,因為它,深度學習才有了卓越的表現也開始進入了人們的視野。

1. 無監督預訓練(pre-training): 

它的發現真正解決了深度模型的訓練問題。它的主要思想是:對深度結構的每一層依次用RBM(Restricted Boltzmann Machine)或者Autoencoder做預訓練。如下圖所示,我們可以選擇用RBM做無監督預訓練。訓練第一層的時候我們的輸入是x (來自於給定的資料集)。等訓練完第一層之後,我們就可以對每一個輸入x得到它的隱式表達h1。在訓練第二層的時候,我們就可以把所有之前得到的h1作為RBM的輸入。這種訓練過程繼續持續下去,直到訓練完最頂層。 從數學的角度來看,這種訓練方式其實就是在不斷地提高variational lower bounds. (我們會在後續的文章裡解釋這一點)。

淺談深度學習分散式表示以及不同結構無監督預訓練[5]

可能會有的疑問是:我們為什麼要做這種無監督預訓練?反向傳播(back-propgation)在多層次模型上到底有什麼問題呢?其實反向傳播演算法的問題在於當我們對每一層做梯度計算(gradient computation)的時候,隨著層次的深度,它的值會變得越來越小,我們稱之為梯度消失問題(gradient vanishing problem). 所以,在一般情況下,當我們對深度模型的底層計算梯度的時候它的值已經變得非常小(或已接近於0)。類似的問題在訓練RNN(Recurrent Neural Network)的時候也會存在,我們會在後面給予介紹。當然,也很容易想到,雖然梯度在底層上的變化很小,但如果有“足夠多”的資料,我們也可以在無預訓練的情況下訓練出有效的模型。

2. Dropout: 

簡單介紹一下這個概念。Dropout是用來防止過擬合現象,我們也可以把它想象成是一種正規化(regularization)的方法。 通過dropout, 我們可以對每一層的unit做隨機的丟棄(變成0)。通過簡單的推導,我們不難發現加上dropout, 其實相當於對每一層的representation乘上一個隨機矩陣,然後把它的結果當做是那一層的輸入。因為這裡引入了隨機性,從貝葉斯理論的角度來看,這類似於在考慮無窮多(或非常多)的模型。這種基於Bayesian averaging的解釋,也說明了dropout為什麼能夠防止過擬合。

深度學習的優勢

深度學習比起其他的機器學習模型, 到底有什麼優勢? 或者可以說,有深層次結構的模型比起shallow模型有什麼優勢?總結如下:

分散式表示(distributed representation). 這是深度學習最重要的性質。舉一個非常簡單的例子,假設我們的詞典上有16個詞,如果用傳統的bag-of-words 的表示方法,我們可以用16維的向量來表示每個詞,向量的每一位代表某個詞的出現與否。然而,如果我們用分散式表示的思想,我們也可以用四維的向量來代表每一個詞,例如(0,0,0,1), (0,0,1,0),..., (1,1,1,1) 。 這個簡單的例子其實用來說明:對同一個輸入,我們可以有不同的配置(configuration)。

再舉一個稍微複雜的例子。下面兩幅圖表示兩種聚類的表達方式。 我們可以把左圖看成是一般的聚類方式,右圖看成是基於分散式表示的聚類方式。如左圖所示,假設我們把整個的空間分成幾個區域,那每一個區域可以由一組引數來描述(charaterize)。 比如在高斯混合模型(Gaussian Mixture Model)裡,每一個混合模組(Mixture component)都由一組高斯分佈的期望和協方差來(covariance)決定。相比之下,在右圖中,每一個區域由三個子模組來表達。 這個時候我們只需要三組引數,而且每一個區域都會共享這三組引數,被稱之為引數共享(parameter sharing)。 這個性質帶來的一個重要的優點是 -- 非區域性泛化(non-localgeneralization). 我們需要知道機器學習的目的就是要在測試級上(test set)得到更好的泛化(bettergeneralization)效果 。 在左圖中,我們只能得到區域性泛化(local generalization), 即便這樣,為了達到區域性泛化的目的,我們需要對每個區域有足夠多的例子(training examples)。除此之外,分散式表示可以有效地應對curse of dimensionality問題 。

淺談深度學習分散式表示以及不同結構

學習多層次的表示(learning multiple levels of abstraction/representation)。這類似於人的大腦:人們總是先學到簡單的概念(concept), 然後以這個為基礎,不斷地學習更為複雜和具體(concrete)的概念。
淺談深度學習分散式表示以及不同結構

如下圖所示,當我們把深度學習應用在影像時,第一層學出來的是各種濾波器(filter), 第二層學出來的是臉部的某一個部位,最上層(第三層)就已經可以學出具體的人臉了。 整個過程,從下到上,就是在不斷地學習更為複雜具體的特徵。

淺談深度學習分散式表示以及不同結構

自動學習特徵:使用這種多層次結構可以幫助避免繁瑣的人為特徵設計(feature engineering)過程。 在傳統的影像識別方法裡,我們首先要做的就是對圖片提取有效地特徵(這些都是人為設計的),但問題是對不同型別的識別任務,我們需要人為設計不同型別的特徵。然而,在深度學習框架下,我們的輸入就是圖片的每個畫素,所以不需要做人為的特徵提取 (當然,必要的預處理還是要做的)。

主要的深度學習模型及其應用

深度學習在語音識別,計算機視覺,自然語言處理領域裡已經得到了突破性的進展。 在這裡,我們大概地總結了一下比較常見的深度學習模型以及它的主要應用場景。

深度神經網路(Deep Neural Network)

這是最經典的深度學習模型, 也是對傳統的神經網路最直接的擴充套件, 唯一的區別就是多加了幾層隱式層。由於對每一層我們都使用非線性轉換,這種模型可以表示非常複雜的輸入和輸出的關係 (其實,機器學習就是在尋找輸入和輸出之間的函式關係)。 它的應用基本上可以覆蓋所有的分類和迴歸問題。

淺談深度學習分散式表示以及不同結構卷積神經網路(Convolutional Neural Network)

這種結構主要是為了影像識別而設計。基本上,它由卷積層(convolutional layer), pooling/subsampling層來構成, 每一層都有它特定的功能,比如通過pooling/subsampling來減少hidden units的數目,和提供區域性不變性(local invariance)。 最經典的例子有GoogLeNet[1]。

淺談深度學習分散式表示以及不同結構卷積神經網路

迴圈神經網路(Recurrent Neural Network)

它類似於隱馬爾科夫模型(hidden markov model), 區別在於它的隱式層是分散式表達(distributedrepresentation), 而在隱馬爾科夫模型上每個隱式節點是離散變數(decrete variable). 對於迴圈神經網路,我們可以疊加多層的隱式層來構建深度模型。(不難看出,如果把迴圈神經網路按時間軸來展開,它其實就是個沿著時間上的深度模型)

淺談深度學習分散式表示以及不同結構

迴圈神經網路 [4]

它的應用主要是針對跟時序或者自然語言處理相關的資料。然而,訓練這種模型會遇到很大的難題,即所謂的gradient vanishing/exploding的問題。當我們計算梯度的時候,需要把模型按照時間軸來展開,這時候梯度的計算會包含雅克比行列式(Jacobian)的多次方。如果它的值小於1, 則會有gradient vanishsing(變成0)的問題。相反,如果它的值大於1,則會有gradient explode (變成很大的值)的問題。 為了解決此優化問題,人們提出了LSTM (long short term memory) 單元(cell). 這種單元內部由多種門(gate)來構成,每個門控制著相應的資訊流動(information flow)。 左下圖表示LSTM單元,右下圖表示用LSTM單元來替代原有的隱式單元(hiddenunit)。

淺談深度學習分散式表示以及不同結構LSTM並不是新的發現,早在1997年Hochreiter發表的論文上已經提出過這個模型。但是直到最近才得到了業界的關注。 近兩年,LSTM在自然語言處理上取得的成就可以說是非常了不起: LSTM網路既可以用來表示語義(semantic meaning), 也可以跟卷積網路(Convolutional Neural Net)結合在一起對給定的圖片生成文字(image captioning), 還可以把兩個LSTM網路拼在一起來構建高效能的語音識別系統[3]。

值得一提的是,上面所描述的LSTM單元內部結構(左上圖)只是一種可行的方案。除此之外,還有很多不同的構造方案,但至於哪一種比較好,還沒有較好的理論支援。

卷積神經網路+迴圈神經網路(CNN + RNN/LSTM)

這算是深度學習領域裡比較令人興奮的應用。它的思想很簡單,CNN模組負責提取影像的特徵,RNN/LSTM模組負責生成文字。 在兩個模組之間會有兩者共享的隱式表達(hidden representation), 我們可以認為它是用來表示影像的意思(semantic meaning).

淺談深度學習分散式表示以及不同結構CNN + LSTM [7]

給定一個圖片,自動生成標題(image caption)是它一個最重要的應用。 下面的例子取自於[7].

淺談深度學習分散式表示以及不同結構如下圖所示[6],CNN+LSTM/RNN 這種模型通過稍加改進就可以應用在視訊資料上。視訊資料是由每一個相連的 frame構成的。在這裡,我們用CNN模組從每一個frame裡提取相應的隱式特徵,然後就可以同時放進LSTM網路模組, 從而實現類似的功能。

淺談深度學習分散式表示以及不同結構CNN + LSTM在視訊上的應用.

迴圈神經網路 + 迴圈神經網路(RNN/LSTM + RNN/LSTM)

這種模型的思想跟上面有點類似,只不過這種組合可以應用在機器翻譯上。這種模型其實就是把兩個LSTM網路拼在一起,一個LSTM網路負責一種語言,另一個LSTM網路負責另一種語言。不難想象,連線這兩個模組的隱式表達就是語義(semantic meaning).

淺談深度學習分散式表示以及不同結構Sequence to sequence learning [8]

參考文獻

[1] Szegedy, C., Liu, W., Jia, Y., Sermanet, P., Reed, S., Anguelov, D., ... & Rabinovich, A. (2014). Going deeper with convolutions. arXiv preprintarXiv:1409.4842.

[2] Hochreiter, S., & Schmidhuber, J. (1997). Long short-term memory. Neural computation, 9(8), 1735-1780.

[3] Graves, A., Mohamed, A. R., & Hinton, G. (2013, May). Speech recognition with deep recurrent neural networks. In Acoustics, Speech and SignalProcessing (ICASSP), 2013 IEEE International Conference on (pp. 6645-6649). IEEE.

[4] Graves, A. (2013). Generating sequences with recurrent neural networks. arXiv preprint arXiv:1308.0850.

[5] Bengio, Y., Lamblin, P., Popovici, D., & Larochelle, H. (2007). Greedy layer-wise training of deep networks. Advances in neural information processingsystems, 19, 153.

[6] Donahue, J., Hendricks, L. A., Guadarrama, S., Rohrbach, M., Venugopalan, S., Saenko, K., & Darrell, T. (2014). Long-term recurrent convolutionalnetworks for visual recognition and description. arXiv preprint arXiv:1411.4389.

[7] Karpathy, A., & Fei-Fei, L. (2014). Deep visual-semantic alignments for generating image descriptions. arXiv preprint arXiv:1412.2306.

[8] Sutskever, I., Vinyals, O., & Le, Q. V. (2014). Sequence to sequence learning with neural networks. In Advances in neural information processingsystems(pp. 3104-3112)

[9] Socher, R., Bauer, J., Manning, C. D., & Ng, A. Y. (2013). Parsing with compositional vector grammars. In In Proceedings of the ACL conference.

相關文章