深度学习和浅层学习 Deep Learning and Shallow Learning
由于 Deep Learning 現(xiàn)在如火如荼的勢(shì)頭,在各種領(lǐng)域逐漸占據(jù) state-of-the-art 的地位,上個(gè)學(xué)期在一門課的 project 中見識(shí)過了 deep learning 的效果,最近在做一個(gè)東西的時(shí)候模型上遇到一點(diǎn)瓶頸于是終于決定也來了解一下這個(gè)魔幻的領(lǐng)域。
據(jù)說 Deep Learning 的 break through 大概可以從 Hinton 在 2006 年提出的用于訓(xùn)練 Deep Belief Network (DBN) 的算法開始,打破了持續(xù)了數(shù)十年的多層神經(jīng)網(wǎng)絡(luò)效果很差的尷尬局面,其之后各種其他的算法和模型也相繼被提出來并在各個(gè)應(yīng)用領(lǐng)域中大展神威。而近來 Google 聘請(qǐng) Hinton、紐約時(shí)報(bào)的封面報(bào)道等公眾媒體的宣傳,更是使得 deep learning 變得大紅大紫。記得之前在老板的某個(gè) draft 中看到過這樣一段話:
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)域本身迎來了一次新的 break through(Hinton et al., 2012);Collaborative Filtering 里,Deep Learning 在 Netflix 最后獲獎(jiǎng)算法中占據(jù)重要地位;Computer Vision (CV) 里除了在各種大型 benchmark 數(shù)據(jù)庫上得到超越 state-of-the-art 結(jié)果(例如(Krizhevsky, Sutskever, & Hinton, 2012))之外,據(jù)說 Google 也在它的圖像搜索中開始使用 Deep Learning;NLP 領(lǐng)域我不是很了解,不過從這個(gè)?Deep Learning for NLP (without Magic)?的 Tutorial 來看,Deep Learning 在 NLP 里也取得了相當(dāng)?shù)某晒ΑI踔吝B純機(jī)器學(xué)習(xí)理論的會(huì) COLT 也開始湊這趟熱鬧了。deeplearning.net?上有一個(gè) reading list,里面列舉了一些各個(gè)領(lǐng)域關(guān)于 deep learning 的代表性文章。從 2013 年開始,deep learning 甚至有了自己專門的會(huì):International Conference on Learning Representations (ICLR)。
從會(huì)議的名字也可以看出,deep learning 其實(shí)很重要的一點(diǎn)就是得到好的 representation,各種實(shí)驗(yàn)表明,通過 deep learning 的出來的網(wǎng)絡(luò),即使把最上層的分類/回歸模型丟掉,直接把網(wǎng)絡(luò)當(dāng)做一個(gè) feature extractor,把抽出來的特征丟到普通的 SVM 之類的分類器里,也經(jīng)常會(huì)得到性能提高。雖然從信息論的角度來說,由于?Data Processing Inequality?導(dǎo)致 feature extraction 并不會(huì)在“信息量”上帶來什么改善,但是從 practical 的角度來說,一個(gè)好的 representation 無疑是非常重要的。關(guān)于這一點(diǎn),我最近聽說了一個(gè)非常形象的例子:有人在抱怨乘法比加法難算好多,比如 9480208 和 302842 的和,只要各位對(duì)齊,一位一位地加并處理好進(jìn)位就好了,即使連我這樣的渣口算能力估計(jì)都沒問題;但是如果是乘法的話……但是其實(shí)這里的難易程度是由于我們常用的數(shù)字的十進(jìn)制表達(dá)偏向于加法計(jì)算的緣故。如果我們換一種表達(dá):每一個(gè)數(shù)字可以等價(jià)地表達(dá)為它的素?cái)?shù)因子的集合,例如
那么兩個(gè)數(shù)相乘就再簡(jiǎn)單不過了:
反過來在這種 representation 下做加法就很困難了。基于同樣的原因,representation 的問題在機(jī)器學(xué)習(xí)以及相關(guān)領(lǐng)域中一直是一個(gè)非常重要的研究課題。因?yàn)椴煌膯栴}、不同的數(shù)據(jù)和不同的模型,合適的 representation 可能會(huì)很不一樣,而找到正確的 representation 之后往往就可以事半功倍。
圖 1 HMAX。Convolutional feedforward object recognition models inspired by the primate ventral visual pathway.在特定的問題中,一般采集到數(shù)據(jù)之后會(huì)進(jìn)行一些特征提取的處理,例如 Vision 里的 SIFT + Bag of Words,或者 Speech 里的 MFCC 之類的特征,這些特征提取的算法往往都是人們根據(jù)該問題數(shù)據(jù)的特征人工設(shè)計(jì)出來的,并且一直以來設(shè)計(jì)更好的 feature 實(shí)際上在各個(gè)領(lǐng)域里也是非常重要的研究問題。而現(xiàn)在 deep learning 的結(jié)果展示比較喜歡做的一件事情就是從“原始數(shù)據(jù)”(比如 Vision 里的像素 bitmap)出發(fā)自動(dòng)學(xué)習(xí) representation,并給出比之前精心設(shè)計(jì)的人工 feature 的效果還要好。不過我覺得這也并不代表說 deep learning 就在這里是萬能的,因?yàn)橐环矫婺軌蛴行У亟Y(jié)合已知的領(lǐng)域內(nèi)的 domain knowledge 實(shí)際上是非常重要的一個(gè)特性,另一方面,deep network 也并不是像一個(gè) black box 一樣直接把 raw data 丟過去它就能 magically 給出像樣的特征來。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è)方面來進(jìn)行解釋。像生物的 microarray 之類的數(shù)據(jù)上,每個(gè)樣本點(diǎn)的維度非常高,同時(shí)由于采集樣本的成本高昂,導(dǎo)致樣本的數(shù)量有非常低,所以各種各樣的降維或者特征選擇的方法涌現(xiàn)出來,以限制模型的復(fù)雜度,避免在小樣本數(shù)據(jù)上出現(xiàn)嚴(yán)重的過擬合問題。
世界的另一頭,是數(shù)據(jù)如白菜一樣便宜的“big data”時(shí)代,樣本的充裕(和計(jì)算機(jī)性能的提升)使得訓(xùn)練更加復(fù)雜的模型成為可能,因此反過來又“升維”以獲得更豐富的數(shù)據(jù)表達(dá),這里 Kernel Method 是一個(gè)經(jīng)典的工具。核方法的基本思路是通過一個(gè)正定核??誘導(dǎo)出來的線性映射??將數(shù)據(jù)映射到一個(gè) Reproducing Kernel Hilbert Space (RKHS) 中,然后使用 RKHS 中的線性模型來處理數(shù)據(jù)。
這里的??就相當(dāng)于是一個(gè)非線性的特征抽取的過程。一方面,通過核函數(shù)可以有效地在原始的數(shù)據(jù)空間維度的復(fù)雜度下面對(duì)映射過后的特征空間中的點(diǎn)進(jìn)行(內(nèi)積)計(jì)算;另一方面,諸如像高斯核之類的核函數(shù)對(duì)應(yīng)的特征空間實(shí)際上是無限維空間,可以說有相當(dāng)大的自由度。此外,核方法還是 non-parametric 的,也就是說,并不需要假設(shè) target hypothesis??是某種形式的函數(shù),而是可以在整個(gè) RKHS??中尋找最接近??的函數(shù),然后通過 Representer Theorem 可以把這些優(yōu)化函數(shù)轉(zhuǎn)換為有限維空間上的優(yōu)化問題,最終的近似 target??也變成了由核函數(shù)在訓(xùn)練數(shù)據(jù)上所“Interpolate”成的函數(shù):
所以說從某種意義上來說,核方法似乎并不是在使用整個(gè)?,而只是在用一個(gè)由訓(xùn)練數(shù)據(jù)映射后的??張成的子空間在做近似。由于 Representer Theorem 實(shí)際上是保證在整個(gè)??中優(yōu)化和在這個(gè)子空間中優(yōu)化的最優(yōu)解是一樣的,所以這里的局限性其實(shí)并不是來自于 Kernel Method,而是來自于使用有限的訓(xùn)練數(shù)據(jù)通過 Empirical Risk Minimization 去近似 Risk Minimization 的時(shí)候造成的問題。另外,核方法在 learning theory 方面也有非常多的研究和結(jié)論。雖然到目前為止 Machine Learning Theory 里的 Theoretical Bounds 很少有可以用來實(shí)際直接指導(dǎo)具體問題中的諸如參數(shù)選擇之類的事情,但是理論上的研究工作仍然是不能忽視的。
核方法的工作原理有一個(gè)比較粗糙的直觀解釋,考慮最常用的高斯核?,其中??是核的參數(shù)。對(duì)于一個(gè)特定的點(diǎn)??來說,取決于實(shí)現(xiàn)給定的??的大小,在一定半徑范圍之外的數(shù)據(jù)點(diǎn)?,?的值基本上就可以小到可以忽略不計(jì)了。所以??的線性組合其實(shí)只是在??點(diǎn)的周圍一個(gè) local neighborhood 里求和。
圖 2 核方法通過 local neighbors 進(jìn)行插值計(jì)算。也就是說,可以近似地看成是在每一個(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)域里都能很好地通過線性函數(shù)來進(jìn)行近似。
不過,看似優(yōu)良的性質(zhì)同時(shí)也受到了質(zhì)疑?(Bengio, Delalleau, & Roux, 2005),因?yàn)槿绻谟?xùn)練數(shù)據(jù) cover 比較少的區(qū)域的話,似乎這樣的差值的準(zhǔn)確性就有待商榷了,而且這樣的方法看起來更像是在做“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)用中的那些問題對(duì)應(yīng)的函數(shù)究竟是局部平滑的還是高頻變化的呢?高頻變化的函數(shù)如果是毫無規(guī)律的,那當(dāng)然這個(gè)問題本身從信息論的角度來說就是困難的,但是如果局部變化但是全局卻體現(xiàn)出規(guī)律性的話,即使局部算法無法處理,從全局出發(fā)考慮的算法也許還是可以處理的。最簡(jiǎn)單的例子就是單純的高頻 sin 函數(shù)本身。理想情況下,如果我們有這個(gè)函數(shù)的全局模式的先驗(yàn)知識(shí)的話,那么只要在合適的 representation 下,問題通常是可以轉(zhuǎn)化為“簡(jiǎn)單”的形式,但是這樣的全局模式是否可以讓算法自動(dòng)地通過數(shù)據(jù)學(xué)習(xí)出來呢?
而對(duì)為什么 deep learning 會(huì)有更好的效果的一個(gè)嘗試的解釋就是 deep learning 得到的是所謂的“distributed representation”?(Bengio, 2009),?(Bengio, Courville, & Vincent, 2013)。
核方法還有另外一個(gè)問題就是在實(shí)際使用中基本上也沒有太多的選擇,比如?LIBSVM?的幫助信息里可供選擇的核函數(shù)為:
雖然在一些特殊的領(lǐng)域可能會(huì)有諸如文本核之類的 domain specific 的核函數(shù),但是要構(gòu)造一個(gè)核函數(shù)也并不是一件 trivial 的事情,因?yàn)槟惚仨毜帽WC它是正定的。由于這方面的限制,也有一些工作研究如何將類似于 kernel 的那一套 framework 推廣到普通的不需要正定性質(zhì)的 similarity function 上?(Balcan, Blum, & Srebro, 2008)。
另一個(gè)問題是在計(jì)算復(fù)雜性方面的:核方法的計(jì)算中牽涉到的核矩陣是??大小的,這里??表示訓(xùn)練數(shù)據(jù)點(diǎn)的個(gè)數(shù),在大量數(shù)據(jù)的應(yīng)用中,核矩陣不論從計(jì)算上還是存儲(chǔ)上都變得無比困難,雖然也有很多通過采樣子集的方法去對(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)。但是這樣一來 kernel 所帶來的非線性特征映射的功能就沒有了,因?yàn)樗^ linear kernel 實(shí)際上就是等價(jià)于不使用任何 kernel 嘛。
拋開計(jì)算性能方面的考慮,就拿普通的核函數(shù)來說的話,和 deep learning 中 representation learning 還有一個(gè)重要的區(qū)別就是像高斯核之類的核函數(shù),其對(duì)應(yīng)的表達(dá)都是事先設(shè)定好的,而不是通過數(shù)據(jù)得出來的。當(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è)變量(正定矩陣)通過 Semi-Definite Programming (SDP) 來進(jìn)行優(yōu)化?(Lanckriet, Cristianini, Bartlett, Ghaoui, & Jordan, 2004),不過 SDP 雖然是凸優(yōu)化,但是基本上數(shù)據(jù)規(guī)模稍微大一點(diǎn)就慢到不行了。
除此之外,還有一支相關(guān)的工作是 Multiple Kernel Learning (MKL),將多個(gè) kernel 組合起來,因?yàn)?kernel 組合時(shí)候的系數(shù)是根據(jù) training data 優(yōu)化而得的,所以這實(shí)際上也是 data-driven 的 representation learning 的一種特殊情況,并且,由于在 kernel 的基礎(chǔ)上在做一層組合,所以看起來已經(jīng)比普通的 shallow architecture 要多一層了。Kernel 組合的系數(shù)有點(diǎn)類似于多層神經(jīng)網(wǎng)絡(luò)中的 hidden layer。一般把以前最常用的只有一層(或者沒有)hidden layer 的神經(jīng)網(wǎng)絡(luò)(或者其他)模型叫做 shallow 的,而超過一層以上的 hidden layer 的稱為 deep 模型。
圖 3 The classical Apache “It works” page.Image from the Internet.得到優(yōu)良的 representation 是至關(guān)重要的問題,而僅僅基于 Kernel 的那種 local representation 又在 AI 相關(guān)的復(fù)雜問題前面碰到了各種瓶頸。但是為什么一定要 deep 呢?理由有各種各樣的,但是我覺得最重要的一個(gè)理由,開源的 Web Server Apache 在若干年來就一直在悄悄強(qiáng)調(diào)了:每次剛裝好 Apache 打開主頁面時(shí)顯示的那句:
It Works!
正如同一開始提到的那樣,雖然 deep model 據(jù)說很多 tricky 各種難以訓(xùn)練,但是人們還是在各個(gè)應(yīng)用領(lǐng)域里成功地用 deep learning 的方法擊敗甚至是完敗了以前的各種 state-of-the-art。從實(shí)際應(yīng)用的角度來說這已經(jīng)足夠有說服力了,但是求知欲旺盛的人類當(dāng)然還想知道究竟為什么會(huì) work。對(duì)這方面進(jìn)行詮釋和探索的工作也挺多,下面列舉個(gè)別的。
圖 4 Vanship from 《Last Exile》。其中一個(gè)解釋是從生物或者神經(jīng)科學(xué)角度:因?yàn)榫湍壳皩?duì)于人類的智能系統(tǒng),特別是視覺系統(tǒng)的研究方面表面,人腦對(duì)于這方面的信息處理機(jī)制就是一個(gè)逐層抽象的 hierarichical architecture?(Serre et al., 2007)。雖然聽起來很有說服力,但是其實(shí)也并沒有說明為什么多層結(jié)構(gòu)更好,而只是說人類這樣我們就跟著學(xué)了,所以這聽起來多少有點(diǎn)讓人想提高警惕不要被蒙混過關(guān),Yann LeCun 在某個(gè) tutorial 中舉過一個(gè)比較形象的例子:人類制造飛機(jī)并不是簡(jiǎn)單地跟著動(dòng)物學(xué)了在手上貼兩個(gè)翅膀就能飛的,而是在了解了為什么那樣的結(jié)構(gòu)能飛的本質(zhì)原因,也就是背后的空氣動(dòng)力學(xué)之類的理論之后,才真正掌握了天空飛行的“技能”。
另一方面是關(guān)于剛才討論過的 Kernel 之類的方法無法很好地處理的所謂 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)潔地通過??層邏輯門網(wǎng)絡(luò)計(jì)算出來,但是如果限制為??層的話,就需要指數(shù)級(jí)別的邏輯門才行?(Bengio, 2009)。當(dāng)然還有很多問題沒有回答,比如說這些邏輯門構(gòu)成的 bool 電路和機(jī)器學(xué)習(xí)問題中所遇到的函數(shù)之間的聯(lián)系是怎么樣的?(Orponen, 1994)?機(jī)器學(xué)習(xí)中所碰到的問題是否是這樣的 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ù)變大以后都無法訓(xùn)練出理想的模型,特別是在證明只需要一個(gè) hidden layer 就能保證神經(jīng)網(wǎng)絡(luò)能夠表達(dá)任意的 bool 函數(shù)?(Mendelson, 2009),更是變得不太有動(dòng)力了。所以除了 Convolutional Network 這類結(jié)構(gòu)經(jīng)過專門設(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ì)有人要問:為什么 pre-training 會(huì) work?是不是一定要 pre-training 才能 work?等等。一般來說,訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目標(biāo)函數(shù)是非常不好優(yōu)化的,比如說,有非常非常多的局部最優(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)。不過這些結(jié)果通常都是在大量數(shù)據(jù)的情況下,結(jié)合各種 trick?(Montavon, Orr, & Muller, 2012),再加上高性能的 GPU 設(shè)備和特別優(yōu)化的并行算法,在訓(xùn)練了“足夠長(zhǎng)”的時(shí)間之后得到的結(jié)果。所以為什么在“大數(shù)據(jù)”時(shí)代和“GPU 并行”時(shí)代之前沒有能很成功地訓(xùn)練出 deep neural network 模型似乎也并不難解釋。
而更深入的分析和 justification 方面,則通常從“deep architecture 的訓(xùn)練為什么困難”這個(gè)問題出發(fā)去探討?(Glorot & Bengio, 2010)。一般認(rèn)為,訓(xùn)練 deep neural network 的時(shí)候,目標(biāo)函數(shù)本身有非常多的 local minima 和 plateaus,一階的 gradient descent 方法很容易陷入局部最優(yōu)而無法自拔,因此人們自然地會(huì)想要去嘗試二階方法。不過由于神經(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è)算出來再用普通矩陣運(yùn)算去乘以該向量。實(shí)驗(yàn)結(jié)果表明使用 HF 二階優(yōu)化,可以在不使用任何 pre-training 的情況下取得非常好的效果。
這里中途插一句:有一個(gè)叫做?Theano?的 Python 庫,提供了 deep learning 優(yōu)化相關(guān)的各種 building block,比如提供了符號(hào)運(yùn)算自動(dòng)推算 gradient 的功能,所以就不用自己去手算 gradient 寫 back-propagation 了,并且也集成了用于二階優(yōu)化的 R-operator。最終計(jì)算用代碼會(huì)自動(dòng)編譯為本地代碼以實(shí)現(xiàn)快速執(zhí)行,并且在 GPU 設(shè)備存在的情況下還可以無縫地編譯為 GPU 并行代碼來加速計(jì)算(雖然目前好像還只支持 CUDA 的樣子)。有一個(gè)?Deep Learning Tutorial?就是使用 Theano 來介紹和實(shí)現(xiàn)了幾個(gè)主流的 deep learning 算法。
回到剛才的問題,HF 優(yōu)化取得的成功,可以說是打開了一扇門:直接從 general 的優(yōu)化算法入手,也會(huì)是一個(gè)非常值得探索的方向。不過 deep architecture 的訓(xùn)練除了 local minima 和 plateaus 之外,還有一個(gè)問題就是網(wǎng)絡(luò)的最高兩層還非常容易 overfit,所以光看目標(biāo)函數(shù)的優(yōu)化有時(shí)候也并不能太說明問題:由于基本上都被最上面兩層 overfitting 去了,流回下面的層的信息很少很少,所以下面層的 weights 幾乎沒有得到什么 training,還停留在原始的 random initialization 階段,結(jié)果這樣的訓(xùn)練結(jié)果幾乎完全沒有 generalization 能力。進(jìn)來關(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 來避免 overfitting。
雖然提到 neural network 首先想到的肯定是 overfitting,大家的著眼點(diǎn)也差不多都是試圖解決 overfitting 的問題,但是最近的一些實(shí)驗(yàn)?(Dauphin & Bengio, 2013)?表明,在數(shù)據(jù)和神經(jīng)網(wǎng)絡(luò)的規(guī)模達(dá)到一定程度之后,似乎由于優(yōu)化問題的困難,導(dǎo)致 under fitting 的問題也出現(xiàn)了。還有其他各方面的一些困難,可以參考 Yoshua Bengio 在最近的一篇文章?(Bengio, 2013)?中總結(jié)了一下目前在 deep learning 中碰到的各種問題和挑戰(zhàn),以及可能的解決思路等等。
最后提一句關(guān)于應(yīng)用方面,我倒是并沒有專門去做全面的 survey,但是目前滿天飛的 Deep Learning 相關(guān)的應(yīng)用似乎大都集中在 AI 相關(guān)的經(jīng)典問題(例如 Objection Recognition、Speech Recognition、NLP 之類的)方面,或者更 general 一點(diǎn),很多工作集中在 classification 方面。所以說讓我覺得挺感興趣的一點(diǎn)是不知道這類 deep 模型是否是對(duì)于 AI 相關(guān)的問題有一些特殊的結(jié)構(gòu)優(yōu)勢(shì)(類比人類智能系統(tǒng)的層級(jí)抽象機(jī)制),或者說這類模型是否在其他非傳統(tǒng) AI 領(lǐng)域也能取得遠(yuǎn)超其他普通的 shallow 模型的效果呢?另外就是層級(jí)抽象或者是像 convolutional network 那樣逐層提高 invariablility 的機(jī)制對(duì)于 classification 問題來說似乎是比較自然的,但是對(duì)于 regression 呢?似乎比較少看到有用 deep neural network 去解決具體的 multi-output regression 的問題的例子的樣子。
圖 5 Neural Networks: Tricks of the Trade (2nd Edition).至于具體的 deep learning 的模型以及相關(guān)的 training 的算法的細(xì)節(jié)之類的,原本想有時(shí)間的話也詳細(xì)整理一下,但是好像暑假即將結(jié)束,我自己也挖了好多坑都還沒有填,所以一時(shí)半會(huì)似乎不太能寫更詳細(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).
總結(jié)
以上是生活随笔為你收集整理的深度学习和浅层学习 Deep Learning and Shallow Learning的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛顿法 Newton Method
- 下一篇: Theano深度学习入门