今天早上吃完飯,在去往實驗室的路上,腦袋了突然冒出一個奇怪的想法,就是萬一將來有機(jī)會去心儀神往的百度、阿里這些深度學(xué)習(xí)的尖端企業(yè)去工作的話,人家公司的HR問我“既然你是做DeepLearning研究的,那你對深度學(xué)習(xí)有什么個人體會?”,我該怎么說呢?不要覺得自己將來進(jìn)不了百度、進(jìn)不了阿里,一切皆有可能,因此為了這一丟丟的可能性,我就在食堂去往實驗室的路上,用這二十分鐘的時間稍稍把自己腦子中的想法總結(jié)總結(jié),現(xiàn)在到了實驗室了,寫篇博客和大家交流交流,這篇博客純屬我個人一時的頭腦風(fēng)暴,沒有圖沒有代碼,稍顯枯燥,麻煩大家多給點耐心吧。搞了一年多的深度學(xué)習(xí)理論,回過頭來想想,有三點值得一提:深度學(xué)習(xí)的特征提取能力為什么會強(qiáng)?深度學(xué)習(xí)應(yīng)該用什么設(shè)備?深度學(xué)習(xí)和人工智能有何緊密聯(lián)系? 深度學(xué)習(xí)的特征提取能力為何如此之強(qiáng)? 這個問題困擾著很多深度學(xué)習(xí)的領(lǐng)域的大牛,很多人都希望能夠解決這個問題,對應(yīng)的就是試圖從理論層面解讀深度學(xué)習(xí)結(jié)構(gòu)的優(yōu)勢所在以及產(chǎn)生這種優(yōu)勢的原因。畢竟ImageNet都快被完爛了,CNN的參數(shù)也幾乎被調(diào)遍了,但本質(zhì)問題依然沒有解決,人類的求知本能迫使我們?nèi)ハ耄骸癉eepLearning為什么 這樣厲害”?我覺得有一篇文章堪稱DeepLearning理論探索的代表之作,那就是湯曉鷗教授團(tuán)隊的“DeepID三部曲”中的第三篇文章,文章中對卷積神經(jīng)網(wǎng) 絡(luò)中各個卷積核的形式、卷積層輸出特征的特點都做了很詳細(xì)的研究分析,可以算是卷積神經(jīng)網(wǎng)絡(luò)理論分析的開端。不過由于我目前沒有硬件條件去運行一個一二十 層的CNN,但這并不能阻止我去思考問題的本質(zhì),因此我準(zhǔn)備從我的研究生課題“子空間方法深度化改造”的角度來對這個問題進(jìn)行一點點解讀。 子空間深度化是2015年才提出的一個概念,目的就是將經(jīng)典的子空間特征提取方法和識別方法(如Eigenface和Fisherface)進(jìn)行堆疊, 重點對比分析深度化改造前后的模型在特征提取能力方面的改進(jìn),這個研究方向的鼻祖當(dāng)屬魯繼文和馬毅兩位深度學(xué)習(xí)領(lǐng)域的大牛,他們提出的PCANet算法一 鳴驚人,提醒了我們深度學(xué)習(xí)原來還可以這樣研究,他們在《PCANet: A Simple Deep Learning Baseline for Image Classification?》一文中說的明白“我們提出一個簡單的深度學(xué)習(xí)框架,為后續(xù)的深度學(xué)習(xí)研究提供一個基準(zhǔn)”,我也是在這篇文章的啟發(fā)下開始做這個方向。 我個人認(rèn)為子空間深度化改進(jìn)研究得出的研究成果(PCANet、LDANet、RandNet)雖然在識別率方面與卷積神經(jīng)網(wǎng)絡(luò)相比沒有明顯的優(yōu)勢,但其更容易去回答“深度學(xué)習(xí)的特征提取能力為何如此之強(qiáng)?”這個問題。因為單層的PCA、Fisher特征識提取識別模型大家都再熟悉不過,深度化改造之 后,加深了結(jié)構(gòu)(兩層或者多層),但基本的映射核、映射方式都沒變,從單一變量法的角度分析,改造之后模型特征提取能力的提升只能歸功于改造之后的深度結(jié) 構(gòu)。至于模型的特征提取能力到底提升了多少,大家可以查閱那篇文獻(xiàn),我這里給出一個通俗的比喻,改造前,這個單層模型只是Eigenface和 Fisherface,改造之后它們就搖身一變,成了能夠在某些領(lǐng)域甚至可以與CNN媲美的DeepLearning。因此我認(rèn) 為,DeepLearning之所以強(qiáng),很大程度上就是得益于它的深度結(jié)構(gòu),這也正好印證了Hinton的觀點:多隱層神經(jīng)網(wǎng)絡(luò)具有更為優(yōu)異的特征學(xué)習(xí)能力。
深度學(xué)習(xí)應(yīng)該用什么設(shè)備? 做深度學(xué)習(xí)就得想辦法加速,這個沒得商量(當(dāng)然PCANet這樣的模型除外),加速的手段有兩個,一是專用神經(jīng)網(wǎng)絡(luò)芯片,而是英偉達(dá)的N卡。 想想當(dāng)時自己之所以關(guān)注這個加速問題,說真的主要還是羨慕。由于我剛剛?cè)胧稚疃葘W(xué)習(xí)時,也是一腔熱血,立志研究CNN,調(diào)得一手好試,但很快發(fā)現(xiàn)我目前的硬件條件是達(dá)不到的,沒有一兩塊泰坦級別的顯卡(必須是英偉達(dá)的),一切都是浮云。人就是這樣,越羨慕什么就越想了解什么。因此在平時看到有關(guān)神經(jīng)網(wǎng)絡(luò)加速方面的資料時都會格外注意,一個偶然的機(jī)會看了一本CCF的專刊,題名就叫《類腦計算與神經(jīng)網(wǎng)絡(luò)加速》,從而對深度學(xué)習(xí)的加速設(shè)備問題有了一定的、系統(tǒng)的理解。 首先,神經(jīng)網(wǎng)絡(luò)加速的手段有兩個,一是專用神經(jīng)網(wǎng)絡(luò)芯片,二是英偉達(dá)的N卡。說實話這兩個手段都是雙刃劍,各有利弊。神經(jīng)網(wǎng)絡(luò)芯片的加速比非常高,實驗證明其加速比是同品級英偉達(dá)N卡的2.5倍甚至更高,對應(yīng)的缺點就是神經(jīng)網(wǎng)絡(luò)芯片對算法的要求比較苛刻,具體說就是一種型號的神經(jīng)網(wǎng)絡(luò)芯片只能加速幾種甚至一種神經(jīng)網(wǎng)絡(luò)算法,這也是芯片的硬件結(jié)構(gòu)限制。相應(yīng)的英偉達(dá)的GPU雖然在加速性能上比神經(jīng)網(wǎng)絡(luò)芯片差一點,但是其泛化性能巨強(qiáng),一塊GPU幾乎可以加速所有的神經(jīng)網(wǎng)絡(luò)算法,畢竟有CUDA編程,GPU本身并不直接接觸DeepLearning,因此無論何種神經(jīng)網(wǎng)絡(luò)算法,在GPU看來都是一樣的,加速矩陣運算就可以了。綜上,我個人認(rèn)為,在算法研究開發(fā)、調(diào)試的過程中可以用GPU加速,在產(chǎn)品實用階段就考慮用神經(jīng)網(wǎng)絡(luò)芯片了。舉個例子,2014年谷歌的VGG模型,主題是“把CNN搞得更深”,8層到16層層層測試,在這個測試過程中顯然要用GPU來干,等測試完成了,知道多少層最優(yōu),什么參數(shù)設(shè)置最合理,再放到專用神經(jīng)網(wǎng)絡(luò)芯片上生產(chǎn)就可以了。
深度學(xué)習(xí)與人工智能的關(guān)系? 之所以提這一點,主要是受最近阿爾法狗人機(jī)大戰(zhàn)的影響。在我寫這篇博客的時候阿爾法狗已經(jīng)以4:1的比分贏得勝利。當(dāng)年IBM的深藍(lán),靠著大規(guī)模集群的超級計算能力,用暴力搜索的方式在國際象棋上戰(zhàn)勝了人類,如今阿爾法狗靠著深度學(xué)習(xí)在圍棋上戰(zhàn)勝了人類。不得不說,21世紀(jì)DeepLearning成為了人工智能的核心,說到這里就可以扯一點點類腦計算的知識。深度學(xué)習(xí)火了,就有人開始想用它來造機(jī)器人,來模擬人腦。其中在類腦計算過程中給我印象最深的就是神經(jīng)擬態(tài)計算機(jī)。所謂神經(jīng)擬態(tài),就是最原始、最大化的模擬人腦的神經(jīng)元,但是生物系統(tǒng)是模擬的,沒錯,人腦也是模擬系統(tǒng),所以神經(jīng)擬態(tài)計算機(jī)也拋棄了數(shù)字形式,改用模擬計算機(jī)。你人腦中的神經(jīng)元怎么連我這里的模擬神經(jīng)元就怎么連,你人腦有多少神經(jīng)元我這里就造多少神經(jīng)元,因此有大牛推測:假如規(guī)模是唯一瓶頸的話,機(jī)器人將會把人類當(dāng)寵物。原因很明確:人類經(jīng)過幾萬年的進(jìn)化才達(dá)到現(xiàn)在的腦容量,而計算機(jī)中芯片的規(guī)模只需幾年就可以翻番。而且這里我也發(fā)現(xiàn)了一個有趣的現(xiàn)象:只要什么技術(shù)火了,總會有人第一時間把它往人工智能方面用,當(dāng)年的超級計算機(jī)、現(xiàn)在的極深層DeepLearning,看來只要是人工智能不統(tǒng)治世界,人類就永遠(yuǎn)不會放棄研究。
注:各位有什么好的想法可以來探討下,大家共同進(jìn)步!
移動一小步,視界大不同! 更多程序員技術(shù)交流,奇聞軼事, 歡迎掃描下面二維碼下載CSDN Android、iOS移動客戶端。 長按二維碼關(guān)注我
|