深度學(xué)習(xí)和淺層學(xué)習(xí) Deep Learning and Shallow Learning

由于 Deep Learning 現(xiàn)在如火如荼的勢(shì)頭,在各種領(lǐng)域逐漸占據(jù) state-of-the-art 的地位,上個(gè)學(xué)期在一門(mén)課的 project 中見(jiàn)識(shí)過(guò)了 deep learning 的效果,最近在做一個(gè)東西的時(shí)候模型上遇到一點(diǎn)瓶頸于是終于決定也來(lái)了解一下這個(gè)魔幻的領(lǐng)域。
據(jù)說(shuō) Deep Learning 的 break through 大概可以從 Hinton 在 2006 年提出的用于訓(xùn)練 Deep Belief Network (DBN) 的算法開(kāi)始,打破了持續(xù)了數(shù)十年的多層神經(jīng)網(wǎng)絡(luò)效果很差的尷尬局面,其之后各種其他的算法和模型也相繼被提出來(lái)并在各個(gè)應(yīng)用領(lǐng)域中大展神威。而近來(lái) Google 聘請(qǐng) Hinton、紐約時(shí)報(bào)的封面報(bào)道等公眾媒體的宣傳,更是使得 deep learning 變得大紅大紫。記得之前在老板的某個(gè) draft 中看到過(guò)這樣一段話:
I do not expect that this paper will ever be published in the usual journals. “Success” for a paper published in this way would consist, I believe, of making an impact – measured in terms of citations for instance – and perhaps of being eventually “reviewed” in sites such as Wired or Slashdot or Facebook or even in a News and Views-type article in traditional journals like Science or Nature.

在學(xué)術(shù)界也是,比如在各個(gè)應(yīng)用領(lǐng)域里,Automatic Speech Recognition (ASR) 中不僅 deep learning 超越了傳統(tǒng)的 state-of-the-art 算法,而且超越程度之大使得 ASR 領(lǐng)域本身迎來(lái)了一次新的 break through(Hinton et al., 2012);Collaborative Filtering 里,Deep Learning 在 Netflix 最后獲獎(jiǎng)算法中占據(jù)重要地位;Computer Vision (CV) 里除了在各種大型 benchmark 數(shù)據(jù)庫(kù)上得到超越 state-of-the-art 結(jié)果(例如(Krizhevsky, Sutskever, & Hinton, 2012))之外,據(jù)說(shuō) Google 也在它的圖像搜索中開(kāi)始使用 Deep Learning;NLP 領(lǐng)域我不是很了解,不過(guò)從這個(gè) Deep Learning for NLP (without Magic) 的 Tutorial 來(lái)看,Deep Learning 在 NLP 里也取得了相當(dāng)?shù)某晒?。甚至連純機(jī)器學(xué)習(xí)理論的會(huì) COLT 也開(kāi)始湊這趟熱鬧了。deeplearning.net 上有一個(gè) reading list,里面列舉了一些各個(gè)領(lǐng)域關(guān)于 deep learning 的代表性文章。從 2013 年開(kāi)始,deep learning 甚至有了自己專門(mén)的會(huì):International Conference on Learning Representations (ICLR)。
從會(huì)議的名字也可以看出,deep learning 其實(shí)很重要的一點(diǎn)就是得到好的 representation,各種實(shí)驗(yàn)表明,通過(guò) deep learning 的出來(lái)的網(wǎng)絡(luò),即使把最上層的分類/回歸模型丟掉,直接把網(wǎng)絡(luò)當(dāng)做一個(gè) feature extractor,把抽出來(lái)的特征丟到普通的 SVM 之類的分類器里,也經(jīng)常會(huì)得到性能提高。雖然從信息論的角度來(lái)說(shuō),由于 Data Processing Inequality 導(dǎo)致 feature extraction 并不會(huì)在“信息量”上帶來(lái)什么改善,但是從 practical 的角度來(lái)說(shuō),一個(gè)好的 representation 無(wú)疑是非常重要的。關(guān)于這一點(diǎn),我最近聽(tīng)說(shuō)了一個(gè)非常形象的例子:有人在抱怨乘法比加法難算好多,比如 9480208 和 302842 的和,只要各位對(duì)齊,一位一位地加并處理好進(jìn)位就好了,即使連我這樣的渣口算能力估計(jì)都沒(méi)問(wèn)題;但是如果是乘法的話……但是其實(shí)這里的難易程度是由于我們常用的數(shù)字的十進(jìn)制表達(dá)偏向于加法計(jì)算的緣故。如果我們換一種表達(dá):每一個(gè)數(shù)字可以等價(jià)地表達(dá)為它的素?cái)?shù)因子的集合,例如

那么兩個(gè)數(shù)相乘就再簡(jiǎn)單不過(guò)了:

反過(guò)來(lái)在這種 representation 下做加法就很困難了?;谕瑯拥脑颍瑀epresentation 的問(wèn)題在機(jī)器學(xué)習(xí)以及相關(guān)領(lǐng)域中一直是一個(gè)非常重要的研究課題。因?yàn)椴煌膯?wèn)題、不同的數(shù)據(jù)和不同的模型,合適的 representation 可能會(huì)很不一樣,而找到正確的 representation 之后往往就可以事半功倍。
圖 1


HMAX。Convolutional feedforward object recognition models inspired by the primate ventral visual pathway.

在特定的問(wèn)題中,一般采集到數(shù)據(jù)之后會(huì)進(jìn)行一些特征提取的處理,例如 Vision 里的 SIFT + Bag of Words,或者 Speech 里的 MFCC 之類的特征,這些特征提取的算法往往都是人們根據(jù)該問(wèn)題數(shù)據(jù)的特征人工設(shè)計(jì)出來(lái)的,并且一直以來(lái)設(shè)計(jì)更好的 feature 實(shí)際上在各個(gè)領(lǐng)域里也是非常重要的研究問(wèn)題。而現(xiàn)在 deep learning 的結(jié)果展示比較喜歡做的一件事情就是從“原始數(shù)據(jù)”(比如 Vision 里的像素 bitmap)出發(fā)自動(dòng)學(xué)習(xí) representation,并給出比之前精心設(shè)計(jì)的人工 feature 的效果還要好。不過(guò)我覺(jué)得這也并不代表說(shuō) deep learning 就在這里是萬(wàn)能的,因?yàn)橐环矫婺軌蛴行У亟Y(jié)合已知的領(lǐng)域內(nèi)的 domain knowledge 實(shí)際上是非常重要的一個(gè)特性,另一方面,deep network 也并不是像一個(gè) black box 一樣直接把 raw data 丟過(guò)去它就能 magically 給出像樣的特征來(lái)。deep model 訓(xùn)練困難似乎算是得到公認(rèn)的了;并且比如像 convolutional neural network (CNN) 這樣的模型其網(wǎng)絡(luò)結(jié)構(gòu)本身就是根據(jù) underlying data 本身所要求的 invariance 特性而人工設(shè)計(jì)的;再比如像在 speech 里目前效果最好的做法似乎也還是在基于 speech data 的各種經(jīng)典處理工序之后得到的 Mel Frequency Filter Bank 數(shù)據(jù)上而不是最原始的聲音波形上做 deep learning。
除了手工特征提取之外,deep learning 之前也有許多其他所謂“shallow”的 data-driven 的特征提取的算法。最經(jīng)典的 PCA 降維可以從去除噪音等等各個(gè)方面來(lái)進(jìn)行解釋。像生物的 microarray 之類的數(shù)據(jù)上,每個(gè)樣本點(diǎn)的維度非常高,同時(shí)由于采集樣本的成本高昂,導(dǎo)致樣本的數(shù)量有非常低,所以各種各樣的降維或者特征選擇的方法涌現(xiàn)出來(lái),以限制模型的復(fù)雜度,避免在小樣本數(shù)據(jù)上出現(xiàn)嚴(yán)重的過(guò)擬合問(wèn)題。
世界的另一頭,是數(shù)據(jù)如白菜一樣便宜的“big data”時(shí)代,樣本的充裕(和計(jì)算機(jī)性能的提升)使得訓(xùn)練更加復(fù)雜的模型成為可能,因此反過(guò)來(lái)又“升維”以獲得更豐富的數(shù)據(jù)表達(dá),這里 Kernel Method 是一個(gè)經(jīng)典的工具。核方法的基本思路是通過(guò)一個(gè)正定核 誘導(dǎo)出來(lái)的線性映射 將數(shù)據(jù)映射到一個(gè) Reproducing Kernel Hilbert Space (RKHS) 中,然后使用 RKHS 中的線性模型來(lái)處理數(shù)據(jù)。
這里的 就相當(dāng)于是一個(gè)非線性的特征抽取的過(guò)程。一方面,通過(guò)核函數(shù)可以有效地在原始的數(shù)據(jù)空間維度的復(fù)雜度下面對(duì)映射過(guò)后的特征空間中的點(diǎn)進(jìn)行(內(nèi)積)計(jì)算;另一方面,諸如像高斯核之類的核函數(shù)對(duì)應(yīng)的特征空間實(shí)際上是無(wú)限維空間,可以說(shuō)有相當(dāng)大的自由度。此外,核方法還是 non-parametric 的,也就是說(shuō),并不需要假設(shè) target hypothesis 是某種形式的函數(shù),而是可以在整個(gè) RKHS 中尋找最接近 的函數(shù),然后通過(guò) Representer Theorem 可以把這些優(yōu)化函數(shù)轉(zhuǎn)換為有限維空間上的優(yōu)化問(wèn)題,最終的近似 target 也變成了由核函數(shù)在訓(xùn)練數(shù)據(jù)上所“Interpolate”成的函數(shù):

所以說(shuō)從某種意義上來(lái)說(shuō),核方法似乎并不是在使用整個(gè) ,而只是在用一個(gè)由訓(xùn)練數(shù)據(jù)映射后的 張成的子空間在做近似。由于 Representer Theorem 實(shí)際上是保證在整個(gè) 中優(yōu)化和在這個(gè)子空間中優(yōu)化的最優(yōu)解是一樣的,所以這里的局限性其實(shí)并不是來(lái)自于 Kernel Method,而是來(lái)自于使用有限的訓(xùn)練數(shù)據(jù)通過(guò) Empirical Risk Minimization 去近似 Risk Minimization 的時(shí)候造成的問(wèn)題。另外,核方法在 learning theory 方面也有非常多的研究和結(jié)論。雖然到目前為止 Machine Learning Theory 里的 Theoretical Bounds 很少有可以用來(lái)實(shí)際直接指導(dǎo)具體問(wèn)題中的諸如參數(shù)選擇之類的事情,但是理論上的研究工作仍然是不能忽視的。
核方法的工作原理有一個(gè)比較粗糙的直觀解釋,考慮最常用的高斯核 ,其中 是核的參數(shù)。對(duì)于一個(gè)特定的點(diǎn) 來(lái)說(shuō),取決于實(shí)現(xiàn)給定的 的大小,在一定半徑范圍之外的數(shù)據(jù)點(diǎn) , 的值基本上就可以小到可以忽略不計(jì)了。所以 的線性組合其實(shí)只是在 點(diǎn)的周圍一個(gè) local neighborhood 里求和。
圖 2


核方法通過(guò) local neighbors 進(jìn)行插值計(jì)算。

也就是說(shuō),可以近似地看成是在每一個(gè) local neighborhood 里進(jìn)行局部的線性回歸,同時(shí)又全局地限制重疊的那些 local neighborhood 所對(duì)應(yīng)的線性回歸的重疊的系數(shù)必須要相等,可能還有一些全局的 regularization 之類的。如果一個(gè)函數(shù)比較光滑,或者我們的數(shù)據(jù)點(diǎn)足夠密集,而核函數(shù)的 又選得比較好使得 local neighborhood 大小比較合適的話,函數(shù)通常在每個(gè)點(diǎn)的局部領(lǐng)域里都能很好地通過(guò)線性函數(shù)來(lái)進(jìn)行近似。
不過(guò),看似優(yōu)良的性質(zhì)同時(shí)也受到了質(zhì)疑 (Bengio, Delalleau, & Roux, 2005),因?yàn)槿绻谟?xùn)練數(shù)據(jù) cover 比較少的區(qū)域的話,似乎這樣的差值的準(zhǔn)確性就有待商榷了,而且這樣的方法看起來(lái)更像是在做“memorizing”,而不是“l(fā)earning”。Yoshua Bengio 把這種稱作是 local representation,這類基于 local smoothness 假設(shè)的模型嚴(yán)重地(通常指數(shù)增長(zhǎng)地)依賴于數(shù)據(jù)的維度(或者數(shù)據(jù)流形的本征維度),從而造成維度災(zāi)難。在 (Bengio, Delalleau, & Roux, 2005) 一文中他還進(jìn)一步指出這類方法同樣不適合學(xué)習(xí)在局部有很多變化的函數(shù)(例如像高頻的 sin 函數(shù)之類的)。實(shí)際應(yīng)用中的那些問(wèn)題對(duì)應(yīng)的函數(shù)究竟是局部平滑的還是高頻變化的呢?高頻變化的函數(shù)如果是毫無(wú)規(guī)律的,那當(dāng)然這個(gè)問(wèn)題本身從信息論的角度來(lái)說(shuō)就是困難的,但是如果局部變化但是全局卻體現(xiàn)出規(guī)律性的話,即使局部算法無(wú)法處理,從全局出發(fā)考慮的算法也許還是可以處理的。最簡(jiǎn)單的例子就是單純的高頻 sin 函數(shù)本身。理想情況下,如果我們有這個(gè)函數(shù)的全局模式的先驗(yàn)知識(shí)的話,那么只要在合適的 representation 下,問(wèn)題通常是可以轉(zhuǎn)化為“簡(jiǎn)單”的形式,但是這樣的全局模式是否可以讓算法自動(dòng)地通過(guò)數(shù)據(jù)學(xué)習(xí)出來(lái)呢?
而對(duì)為什么 deep learning 會(huì)有更好的效果的一個(gè)嘗試的解釋就是 deep learning 得到的是所謂的“distributed representation” (Bengio, 2009), (Bengio, Courville, & Vincent, 2013)。
核方法還有另外一個(gè)問(wèn)題就是在實(shí)際使用中基本上也沒(méi)有太多的選擇,比如 LIBSVM 的幫助信息里可供選擇的核函數(shù)為:
-t kernel_type : set type of kernel function (default 2)
0 -- linear: u'v
1 -- polynomial: (gamma
u'v + coef0)^degree
2 -- radial basis function: exp(-gamma
|u-v|^2)
3 -- sigmoid: tanh(gammau'v + coef0)

雖然在一些特殊的領(lǐng)域可能會(huì)有諸如文本核之類的 domain specific 的核函數(shù),但是要構(gòu)造一個(gè)核函數(shù)也并不是一件 trivial 的事情,因?yàn)槟惚仨毜帽WC它是正定的。由于這方面的限制,也有一些工作研究如何將類似于 kernel 的那一套 framework 推廣到普通的不需要正定性質(zhì)的 similarity function 上 (Balcan, Blum, & Srebro, 2008)。
另一個(gè)問(wèn)題是在計(jì)算復(fù)雜性方面的:核方法的計(jì)算中牽涉到的核矩陣是 大小的,這里 表示訓(xùn)練數(shù)據(jù)點(diǎn)的個(gè)數(shù),在大量數(shù)據(jù)的應(yīng)用中,核矩陣不論從計(jì)算上還是存儲(chǔ)上都變得無(wú)比困難,雖然也有很多通過(guò)采樣子集的方法去對(duì)核矩陣進(jìn)行近似的研究 (Williams & Seeger, 2000),但是很多時(shí)候還是不得不 fall back 到 linear kernel 上,使用另一套 formulation,可以允許計(jì)算復(fù)雜度隨著數(shù)據(jù)的維度增長(zhǎng)而不是隨著數(shù)據(jù)點(diǎn)的個(gè)數(shù)而增長(zhǎng)。但是這樣一來(lái) kernel 所帶來(lái)的非線性特征映射的功能就沒(méi)有了,因?yàn)樗^ linear kernel 實(shí)際上就是等價(jià)于不使用任何 kernel 嘛。
拋開(kāi)計(jì)算性能方面的考慮,就拿普通的核函數(shù)來(lái)說(shuō)的話,和 deep learning 中 representation learning 還有一個(gè)重要的區(qū)別就是像高斯核之類的核函數(shù),其對(duì)應(yīng)的表達(dá)都是事先設(shè)定好的,而不是通過(guò)數(shù)據(jù)得出來(lái)的。當(dāng)然,data-driven 的 kernel 方面的研究也是有不少的,比如之前有人指出 Isomap、LE 和 LLE 之類的經(jīng)典的流形學(xué)習(xí)算法其實(shí)是等價(jià)于構(gòu)造一個(gè)特殊的 data driven 的 kernel 然后做 kernel PCA (Ham, Lee, Mika, & Scholkopf, 2004),更 explicit 的 data-driven 的 Kernel 是直接將 Kernel Matrix 當(dāng)做一個(gè)變量(正定矩陣)通過(guò) Semi-Definite Programming (SDP) 來(lái)進(jìn)行優(yōu)化 (Lanckriet, Cristianini, Bartlett, Ghaoui, & Jordan, 2004),不過(guò) SDP 雖然是凸優(yōu)化,但是基本上數(shù)據(jù)規(guī)模稍微大一點(diǎn)就慢到不行了。
除此之外,還有一支相關(guān)的工作是 Multiple Kernel Learning (MKL),將多個(gè) kernel 組合起來(lái),因?yàn)?kernel 組合時(shí)候的系數(shù)是根據(jù) training data 優(yōu)化而得的,所以這實(shí)際上也是 data-driven 的 representation learning 的一種特殊情況,并且,由于在 kernel 的基礎(chǔ)上在做一層組合,所以看起來(lái)已經(jīng)比普通的 shallow architecture 要多一層了。Kernel 組合的系數(shù)有點(diǎn)類似于多層神經(jīng)網(wǎng)絡(luò)中的 hidden layer。一般把以前最常用的只有一層(或者沒(méi)有)hidden layer 的神經(jīng)網(wǎng)絡(luò)(或者其他)模型叫做 shallow 的,而超過(guò)一層以上的 hidden layer 的稱為 deep 模型。
圖 3

The classical Apache “It works” page.Image from the Internet.

得到優(yōu)良的 representation 是至關(guān)重要的問(wèn)題,而僅僅基于 Kernel 的那種 local representation 又在 AI 相關(guān)的復(fù)雜問(wèn)題前面碰到了各種瓶頸。但是為什么一定要 deep 呢?理由有各種各樣的,但是我覺(jué)得最重要的一個(gè)理由,開(kāi)源的 Web Server Apache 在若干年來(lái)就一直在悄悄強(qiáng)調(diào)了:每次剛裝好 Apache 打開(kāi)主頁(yè)面時(shí)顯示的那句
It Works!

正如同一開(kāi)始提到的那樣,雖然 deep model 據(jù)說(shuō)很多 tricky 各種難以訓(xùn)練,但是人們還是在各個(gè)應(yīng)用領(lǐng)域里成功地用 deep learning 的方法擊敗甚至是完敗了以前的各種 state-of-the-art。從實(shí)際應(yīng)用的角度來(lái)說(shuō)這已經(jīng)足夠有說(shuō)服力了,但是求知欲旺盛的人類當(dāng)然還想知道究竟為什么會(huì) work。對(duì)這方面進(jìn)行詮釋和探索的工作也挺多,下面列舉個(gè)別的。
圖 4


Vanship from 《Last Exile》。

其中一個(gè)解釋是從生物或者神經(jīng)科學(xué)角度:因?yàn)榫湍壳皩?duì)于人類的智能系統(tǒng),特別是視覺(jué)系統(tǒng)的研究方面表面,人腦對(duì)于這方面的信息處理機(jī)制就是一個(gè)逐層抽象的 hierarichical architecture (Serre et al., 2007)。雖然聽(tīng)起來(lái)很有說(shuō)服力,但是其實(shí)也并沒(méi)有說(shuō)明為什么多層結(jié)構(gòu)更好,而只是說(shuō)人類這樣我們就跟著學(xué)了,所以這聽(tīng)起來(lái)多少有點(diǎn)讓人想提高警惕不要被蒙混過(guò)關(guān),Yann LeCun 在某個(gè) tutorial 中舉過(guò)一個(gè)比較形象的例子:人類制造飛機(jī)并不是簡(jiǎn)單地跟著動(dòng)物學(xué)了在手上貼兩個(gè)翅膀就能飛的,而是在了解了為什么那樣的結(jié)構(gòu)能飛的本質(zhì)原因,也就是背后的空氣動(dòng)力學(xué)之類的理論之后,才真正掌握了天空飛行的“技能”。
另一方面是關(guān)于剛才討論過(guò)的 Kernel 之類的方法無(wú)法很好地處理的所謂 Highly Variable Functions(Bengio, Delalleau, & Roux, 2005),而 deep architecture 則可以比較有效地表達(dá)這樣的映射。更 general 地,雖然我們剛才提到只有一層 hidden layer 的神經(jīng)網(wǎng)絡(luò)就已經(jīng)具有一定的 universal 性質(zhì),但是卻不一定是 efficient 的:存在某些函數(shù)可以簡(jiǎn)潔地通過(guò) 層邏輯門(mén)網(wǎng)絡(luò)計(jì)算出來(lái),但是如果限制為 層的話,就需要指數(shù)級(jí)別的邏輯門(mén)才行 (Bengio, 2009)。當(dāng)然還有很多問(wèn)題沒(méi)有回答,比如說(shuō)這些邏輯門(mén)構(gòu)成的 bool 電路和機(jī)器學(xué)習(xí)問(wèn)題中所遇到的函數(shù)之間的聯(lián)系是怎么樣的 (Orponen, 1994)?機(jī)器學(xué)習(xí)中所碰到的問(wèn)題是否是這樣的 highly variable 的、必須要用 deep architecture 才能有效表達(dá)的?這樣的函數(shù)空間糾結(jié)是不是 learnable 的?在優(yōu)化和求解方面有哪些困難 (Glorot & Bengio, 2010)?是否/如何能保證學(xué)習(xí)的 generalization performance?等等等等。
實(shí)際上人們從上個(gè)世紀(jì)就各種嘗試訓(xùn)練像人腦一樣的多層復(fù)雜神經(jīng)網(wǎng)絡(luò),但是通常在神經(jīng)網(wǎng)絡(luò)的層數(shù)變大以后都無(wú)法訓(xùn)練出理想的模型,特別是在證明只需要一個(gè) hidden layer 就能保證神經(jīng)網(wǎng)絡(luò)能夠表達(dá)任意的 bool 函數(shù) (Mendelson, 2009),更是變得不太有動(dòng)力了。所以除了 Convolutional Network 這類結(jié)構(gòu)經(jīng)過(guò)專門(mén)設(shè)計(jì)的神經(jīng)網(wǎng)絡(luò)之外,general 的 deep architecture,直到 2006 年 Hinton 他們引入 greedy layer wise pre-training (Hinton, Osindero, & Teh, 2006) 之后人們才第一次體會(huì)到了 deep 模型的威力。在基于 Restricted Boltzmann Machine (RBM) (Hinton, Osindero, & Teh, 2006) 的 pre-training 之后,又冒出了基于各種 Auto Encoder (AE) 變種 (Vincent, Larochelle, Lajoie, Bengio, & Manzagol, 2010), (Rifai, Vincent, Muller, Glorot, & Bengio, 2011) 以及甚至是 supervised 的 layer-wise pre-training (Bengio, Lamblin, Popovici, & Larochelle, 2006)。
所以肯定會(huì)有人要問(wèn):為什么 pre-training 會(huì) work?是不是一定要 pre-training 才能 work?等等。一般來(lái)說(shuō),訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目標(biāo)函數(shù)是非常不好優(yōu)化的,比如說(shuō),有非常非常多的局部最優(yōu)值等等。通常認(rèn)為使用 pre-training 的結(jié)果作為 back-propagation 的初始化有助于將 (stochastic) gradient descent 的初始搜索點(diǎn)放在一個(gè)比較好的地方,從而收斂到比較好的(局部最優(yōu))解。另外,pre-training 還被認(rèn)為是起到 regularization 的作用,能夠增強(qiáng) generalization performance。關(guān)于這方面的詳細(xì)討論,可以參考(Erhan, Courville, Bengio, & Vincent, 2010)
至于是否一定要做 pre-training,從實(shí)驗(yàn)結(jié)果方面,我們已經(jīng)知道,當(dāng)訓(xùn)練數(shù)據(jù)足夠多的情況下,選擇好合適的(隨機(jī))初始值和神經(jīng)元之間的 non-linearity 的話,不使用 pre-training 而直接進(jìn)行 supervised training 也是可以得到很好的效果的 (Ciresan, Meier, Gambardella, & Schmidhuber, 2010), (Glorot, Bordes, & Bengio, 2011), (Sutskever, Martens, Dahl, & Hinton, 2013)。不過(guò)這些結(jié)果通常都是在大量數(shù)據(jù)的情況下,結(jié)合各種 trick (Montavon, Orr, & Muller, 2012),再加上高性能的 GPU 設(shè)備和特別優(yōu)化的并行算法,在訓(xùn)練了“足夠長(zhǎng)”的時(shí)間之后得到的結(jié)果。所以為什么在“大數(shù)據(jù)”時(shí)代和“GPU 并行”時(shí)代之前沒(méi)有能很成功地訓(xùn)練出 deep neural network 模型似乎也并不難解釋。
而更深入的分析和 justification 方面,則通常從“deep architecture 的訓(xùn)練為什么困難”這個(gè)問(wèn)題出發(fā)去探討 (Glorot & Bengio, 2010)。一般認(rèn)為,訓(xùn)練 deep neural network 的時(shí)候,目標(biāo)函數(shù)本身有非常多的 local minima 和 plateaus,一階的 gradient descent 方法很容易陷入局部最優(yōu)而無(wú)法自拔,因此人們自然地會(huì)想要去嘗試二階方法。不過(guò)由于神經(jīng)網(wǎng)絡(luò)的參數(shù)非常多,Hessian 矩陣不僅計(jì)算上有困難,即使是用各種近似的方法,光是要存儲(chǔ)整個(gè) Hessian 矩陣都比較麻煩。因此其中一個(gè)叫做 Hessian Free (HF) 的二階優(yōu)化算法 (Martens, 2010) 顯得特別有意思,它利用 R-operator (Pearlmutter, 1994) 直接計(jì)算 Hessian 矩陣與一個(gè)向量的乘積,而不是先把 Hessian 矩陣整個(gè)算出來(lái)再用普通矩陣運(yùn)算去乘以該向量。實(shí)驗(yàn)結(jié)果表明使用 HF 二階優(yōu)化,可以在不使用任何 pre-training 的情況下取得非常好的效果。
這里中途插一句:有一個(gè)叫做 Theano 的 Python 庫(kù),提供了 deep learning 優(yōu)化相關(guān)的各種 building block,比如提供了符號(hào)運(yùn)算自動(dòng)推算 gradient 的功能,所以就不用自己去手算 gradient 寫(xiě) back-propagation 了,并且也集成了用于二階優(yōu)化的 R-operator。最終計(jì)算用代碼會(huì)自動(dòng)編譯為本地代碼以實(shí)現(xiàn)快速執(zhí)行,并且在 GPU 設(shè)備存在的情況下還可以無(wú)縫地編譯為 GPU 并行代碼來(lái)加速計(jì)算(雖然目前好像還只支持 CUDA 的樣子)。有一個(gè) Deep Learning Tutorial 就是使用 Theano 來(lái)介紹和實(shí)現(xiàn)了幾個(gè)主流的 deep learning 算法。
回到剛才的問(wèn)題,HF 優(yōu)化取得的成功,可以說(shuō)是打開(kāi)了一扇門(mén):直接從 general 的優(yōu)化算法入手,也會(huì)是一個(gè)非常值得探索的方向。不過(guò) deep architecture 的訓(xùn)練除了 local minima 和 plateaus 之外,還有一個(gè)問(wèn)題就是網(wǎng)絡(luò)的最高兩層還非常容易 overfit,所以光看目標(biāo)函數(shù)的優(yōu)化有時(shí)候也并不能太說(shuō)明問(wèn)題:由于基本上都被最上面兩層 overfitting 去了,流回下面的層的信息很少很少,所以下面層的 weights 幾乎沒(méi)有得到什么 training,還停留在原始的 random initialization 階段,結(jié)果這樣的訓(xùn)練結(jié)果幾乎完全沒(méi)有 generalization 能力。進(jìn)來(lái)關(guān)于 rectifier non-linearity (Glorot, Bordes, & Bengio, 2011), (Krizhevsky, Sutskever, & Hinton, 2012) 相關(guān)的研究中的一個(gè)叫做 maxout (Goodfellow, Warde-Farley, Mirza, Courville, & Bengio, 2013) 被發(fā)現(xiàn)能夠使得底層的權(quán)重得到更多的 training。另外,諸如 dropout (Hinton, Srivastava, Krizhevsky, Sutskever, & Salakhutdinov, 2012), (Wang & Manning, 2013) 一類的添加 noise 也在實(shí)踐中被用作強(qiáng)大的 regularizer 來(lái)避免 overfitting。
雖然提到 neural network 首先想到的肯定是 overfitting,大家的著眼點(diǎn)也差不多都是試圖解決 overfitting 的問(wèn)題,但是最近的一些實(shí)驗(yàn) (Dauphin & Bengio, 2013) 表明,在數(shù)據(jù)和神經(jīng)網(wǎng)絡(luò)的規(guī)模達(dá)到一定程度之后,似乎由于優(yōu)化問(wèn)題的困難,導(dǎo)致 under fitting 的問(wèn)題也出現(xiàn)了。還有其他各方面的一些困難,可以參考 Yoshua Bengio 在最近的一篇文章 (Bengio, 2013) 中總結(jié)了一下目前在 deep learning 中碰到的各種問(wèn)題和挑戰(zhàn),以及可能的解決思路等等。
最后提一句關(guān)于應(yīng)用方面,我倒是并沒(méi)有專門(mén)去做全面的 survey,但是目前滿天飛的 Deep Learning 相關(guān)的應(yīng)用似乎大都集中在 AI 相關(guān)的經(jīng)典問(wèn)題(例如 Objection Recognition、Speech Recognition、NLP 之類的)方面,或者更 general 一點(diǎn),很多工作集中在 classification 方面。所以說(shuō)讓我覺(jué)得挺感興趣的一點(diǎn)是不知道這類 deep 模型是否是對(duì)于 AI 相關(guān)的問(wèn)題有一些特殊的結(jié)構(gòu)優(yōu)勢(shì)(類比人類智能系統(tǒng)的層級(jí)抽象機(jī)制),或者說(shuō)這類模型是否在其他非傳統(tǒng) AI 領(lǐng)域也能取得遠(yuǎn)超其他普通的 shallow 模型的效果呢?另外就是層級(jí)抽象或者是像 convolutional network 那樣逐層提高 invariablility 的機(jī)制對(duì)于 classification 問(wèn)題來(lái)說(shuō)似乎是比較自然的,但是對(duì)于 regression 呢?似乎比較少看到有用 deep neural network 去解決具體的 multi-output regression 的問(wèn)題的例子的樣子。
圖 5

Neural Networks: Tricks of the Trade (2nd Edition).

至于具體的 deep learning 的模型以及相關(guān)的 training 的算法的細(xì)節(jié)之類的,原本想有時(shí)間的話也詳細(xì)整理一下,但是好像暑假即將結(jié)束,我自己也挖了好多坑都還沒(méi)有填,所以一時(shí)半會(huì)似乎不太能寫(xiě)更詳細(xì)的東西了。Deep Learning 將會(huì)如何發(fā)展?究竟是否是 AI 的圣杯?就拭目以待了。:)

References
Balcan, M.-F., Blum, A., & Srebro, N. (2008). A theory of learning with similarity functions. Machine Learning, 72(1-2), 89–112.
Bengio, Y. (2009). Learning Deep Architectures for AI. Foundations and Trends in Machine Learning,2(1), 1–127.
Bengio, Y. (2013). Deep Learning of Representations: Looking Forward. In SLSP (pp. 1–37).
Bengio, Y., Courville, A. C., & Vincent, P. (2013). Representation Learning: A Review and New Perspectives. IEEE Trans. Pattern Anal. Mach. Intell., 35(8), 1798–1828.
Bengio, Y., Delalleau, O., & Roux, N. L. (2005). The Curse of Highly Variable Functions for Local Kernel Machines. In NIPS.
Bengio, Y., Lamblin, P., Popovici, D., & Larochelle, H. (2006). Greedy Layer-Wise Training of Deep Networks. In NIPS (pp. 153–160).
Ciresan, D. C., Meier, U., Gambardella, L. M., & Schmidhuber, J. (2010). Deep, Big, Simple Neural Nets for Handwritten Digit Recognition. Neural Computation, 22(12), 3207–3220.
Dauphin, Y., & Bengio, Y. (2013). Big Neural Networks Waste Capacity. CoRR, abs/1301.3583.
Erhan, D., Courville, A. C., Bengio, Y., & Vincent, P. (2010). Why Does Unsupervised Pre-training Help Deep Learning? AISTATS, 9, 201–208.
Glorot, X., & Bengio, Y. (2010). Understanding the difficulty of training deep feedforward neural networks. AISTATS, 9, 249–256.
Glorot, X., Bordes, A., & Bengio, Y. (2011). Deep Sparse Rectifier Neural Networks. AISTATS, 15, 315–323.
Goodfellow, I. J., Warde-Farley, D., Mirza, M., Courville, A. C., & Bengio, Y. (2013). Maxout Networks. In ICML.
Ham, J., Lee, D. D., Mika, S., & Scholkopf, B. (2004). A kernel view of the dimensionality reduction of manifolds. In ICML.
Hinton, G. E., Osindero, S., & Teh, Y. W. (2006). A Fast Learning Algorithm for Deep Belief Nets.Neural Computation, 18(7), 1527–1554.
Hinton, G. E., Srivastava, N., Krizhevsky, A., Sutskever, I., & Salakhutdinov, R. (2012). Improving neural networks by preventing co-adaptation of feature detectors. CoRR, abs/1207.0580.
Hinton, G., Deng, L., Yu, D., Dahl, G. E., Mohamed, A., Jaitly, N., … Kingsbury, B. (2012). Deep Neural Networks for Acoustic Modeling in Speech Recognition: The Shared Views of Four Research Groups. IEEE Signal Processing Magazine, 29(6), 82–97.
Krizhevsky, A., Sutskever, I., & Hinton, G. E. (2012). ImageNet Classification with Deep Convolutional Neural Networks. In NIPS (pp. 1106–1114).
Lanckriet, G. R. G., Cristianini, N., Bartlett, P. L., Ghaoui, L. E., & Jordan, M. I. (2004). Learning the Kernel Matrix with Semidefinite Programming. JMLR, 5, 27–72.
Martens, J. (2010). Deep learning via Hessian-free optimization. In ICML (pp. 735–742).
Mendelson, E. (2009). Introduction to Mathematical Logic (5th ed.). Chapman and Hall/CRC.
Montavon, G., Orr, G., & Muller, K.-R. (2012). Neural Networks: Tricks of the Trade (2nd ed.). Springer.
Orponen, P. (1994). Computational Complexity Of Neural Networks: A Survey. Nordic Journal of Computing.
Pearlmutter, B. A. (1994). Fast Exact Multiplication by the Hessian. Neural Computation, 6(1), 147–160.
Rifai, S., Vincent, P., Muller, X., Glorot, X., & Bengio, Y. (2011). Contractive Auto-Encoders: Explicit Invariance During Feature Extraction. In ICML (pp. 833–840).
Serre, T., Kreiman, G., Kouh, M., Cadieu, C., Knoblich, U., & Poggio, T. (2007). A quantitative theory of immediate visual recognition. Progress in Brain Research, 165, 33–56.
Sutskever, I., Martens, J., Dahl, G., & Hinton, G. (2013). On the importance of initialization and momentum in deep learning. In ICML.
Vincent, P., Larochelle, H., Lajoie, I., Bengio, Y., & Manzagol, P.-A. (2010). Stacked Denoising Autoencoders: Learning Useful Representations in a Deep Network with a Local Denoising Criterion. JMLR, 11, 3371–3408.
Wang, S., & Manning, C. (2013). Fast Dropout Training. In ICML.
Williams, C. K. I., & Seeger, M. (2000). Using the Nystrom Method to Speed Up Kernel Machines. InNIPS (pp. 682–688).

分享自pluskid。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容