作者:Matthew Mayo 翻譯:Andrewseu
網(wǎng)上有很多的深度學(xué)習(xí)的免費(fèi)學(xué)習(xí)資源,但是可能會(huì)對(duì)從哪里開始有些困惑。七步內(nèi)從對(duì)深度神經(jīng)網(wǎng)絡(luò)的模糊理解到知識(shí)淵博的從業(yè)者(knowledgeable practitioner)!
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,擁有很多的相似性,但是卻也不同,深度神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在自然語言處理、計(jì)算機(jī)視覺、生物信息學(xué)和其他領(lǐng)域解決了各種各樣的問題。深度學(xué)習(xí)經(jīng)歷了一場(chǎng)巨大的最近研究的重現(xiàn),并且在很多領(lǐng)域中已經(jīng)展現(xiàn)出最先進(jìn)的成果。
本質(zhì)上,深度學(xué)習(xí)是超過一層隱藏神經(jīng)元的神經(jīng)網(wǎng)絡(luò)的執(zhí)行。但是,這是對(duì)深度學(xué)習(xí)的一個(gè)簡(jiǎn)單的看法,并且不是一個(gè)沒有爭(zhēng)議的觀點(diǎn)。這些深層構(gòu)架也非常不同,對(duì)不同任務(wù)或目標(biāo)優(yōu)化會(huì)有不同的執(zhí)行。在這樣一個(gè)恒定速率進(jìn)行著的大量研究在以史上未有的速度展現(xiàn)新的和創(chuàng)新的深度學(xué)習(xí)模型。
最近的一個(gè)白熱化的研究課題,深度學(xué)習(xí)似乎影響著機(jī)器學(xué)習(xí)的所有領(lǐng)域,相關(guān)的還有數(shù)據(jù)科學(xué)。粗略看看相關(guān)arXiv目錄下最近的論文,很容易看出大量正在被發(fā)表的論文都是深度學(xué)習(xí)相關(guān)的。鑒于已經(jīng)產(chǎn)生的令人驚嘆的成果,很多研究者,從業(yè)者和外行都在想深度學(xué)習(xí)是否是真正的人工智能的邊界。
這系列的閱讀材料和教程旨在給深度神經(jīng)網(wǎng)絡(luò)的新人提供一條路徑去理解這個(gè)巨大而復(fù)雜的課題。盡管我不假設(shè)對(duì)神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)真正的理解,但是我假設(shè)你對(duì)一般的機(jī)器學(xué)習(xí)理論和實(shí)踐具有某種程度的熟悉度。為了克服在一般機(jī)器學(xué)習(xí)理論和實(shí)踐的不足,你可以看看最近KDnuggets發(fā)布的7 Steps to Mastering Machine Learning With Python。由于我們也看用Python寫的例子的執(zhí)行,對(duì)語言有些熟悉會(huì)很有用。介紹和綜述的資源在previodsly mentioned post也是提供的。
這篇博客將以緊密結(jié)合的順序使用網(wǎng)絡(luò)上免費(fèi)提供的材料在理論層面上獲得對(duì)深度神經(jīng)網(wǎng)絡(luò)的一些理解,然后繼續(xù)轉(zhuǎn)向一些實(shí)際的執(zhí)行。同樣的,借鑒過來的引用材料只屬于創(chuàng)建者,跟資源會(huì)一起被標(biāo)注。如果你看到有人因?yàn)樗麄兊墓ぷ鳑]有被正確引用,請(qǐng)告知我,我會(huì)很快修改的。
一個(gè)完全誠(chéng)實(shí)的免責(zé)申明:深度學(xué)習(xí)是一個(gè)復(fù)雜而在廣度和深度(pun unintended?)變化很快的領(lǐng)域,因此這篇博客不保證包括所有成為深度學(xué)習(xí)專家的手冊(cè);這樣的一個(gè)轉(zhuǎn)化將會(huì)需要更多的時(shí)間,很多附加材料和很多實(shí)際建立和測(cè)試的模型。但是,我相信的是,使用這里的資源可以幫你在這樣一個(gè)路徑下開始。
第一步:介紹深度學(xué)習(xí)
如果你正在讀這個(gè)并且對(duì)這個(gè)課題感興趣,你可能已經(jīng)對(duì)深度神經(jīng)網(wǎng)絡(luò)已經(jīng)熟悉,甚至在一個(gè)很基礎(chǔ)的層次。神經(jīng)網(wǎng)絡(luò)有一個(gè)故事性的歷史,但是我們將不會(huì)深入。但是,我們需要如果在開始就有一個(gè)普遍高層次的理解。
首先,看看DeepLearning .tv精彩的介紹視頻。在 寫完這個(gè)的時(shí)候已經(jīng)有14個(gè)視頻了;如果你喜歡看完他們,但是一定要看前五個(gè),包含了神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)和一些更常見的結(jié)構(gòu)。
然后,仔細(xì)閱讀Geoff Hinton,Yoshua Bengioh和Yann LeCun的NIPS 2015 Deep Learning Tutorial,一個(gè)稍微更低層次的介紹。
完成我們的第一步,讀the first chapter of Neural Networks and Deep Learning,這個(gè)由Michael Nielden寫的精妙的,不斷更新的在線書,這會(huì)更近一步但是依然很粗淺。
第二步:學(xué)習(xí)技術(shù)
深度神經(jīng)網(wǎng)絡(luò)依賴代數(shù)和微積分的數(shù)學(xué)基礎(chǔ)。然而這篇博客不會(huì)產(chǎn)生任何理論上的數(shù)學(xué),在繼續(xù)之前有一些理解將會(huì)很有幫助。
第一,看Andrew Ng的linear algebra review videos。但是不是絕對(duì)的必要,想要對(duì)線性代數(shù)了解更深的話,從Ng的斯坦福課程看看Zico Kolter 和Chuong Do寫的Linear Algebra Review and Reference.
然后看看Professor Leonard的Introduction to the Derivative of a Function. 視頻是很簡(jiǎn)潔的,例子是很清晰的,并且提供了從數(shù)學(xué)的視角來看在反向傳播的過程中到底發(fā)生了什么。一會(huì)兒會(huì)更多。
接下來迅速瀏覽下維基Sigmoid function的詞條,一個(gè)在神經(jīng)網(wǎng)絡(luò)中經(jīng)常通過單個(gè)神經(jīng)元應(yīng)用的邊界差分函數(shù)。
最后,從數(shù)學(xué)上休息下閱讀谷歌研究科學(xué)家 Quoc Le的Deep Learning Tutorial.
第三步:反向傳播和梯度下降
神經(jīng)網(wǎng)絡(luò)包括現(xiàn)代深度構(gòu)架重要的一部分是反向傳播算法的錯(cuò)誤,使用離輸入更近的神經(jīng)元通過網(wǎng)絡(luò)更新權(quán)重。非常坦率的說,這就是神經(jīng)網(wǎng)絡(luò)繼承他們”力量“(缺乏更好的術(shù)語)的地方。反向傳播和一個(gè)隨后分布式的最小化權(quán)重的優(yōu)化方法,為了最小化損失函數(shù)。在深度學(xué)習(xí)中一個(gè)常見的優(yōu)化方法是梯度下降。
首先,看看這些斯圖加特大學(xué)Marc Toussaint 寫的關(guān)于梯度下降的介紹筆記。
然后,看看Matt Mazur寫的this step by step example of backpropagation in action.
繼續(xù),閱讀Jeremy Kun關(guān)于 coding backpropagation in Python的信息博客。仔細(xì)看看完整代碼也是建議的,嘗試自己寫一遍代碼。
最后,讀Quoc Le寫的Deep Learning Tutorial的第二部分,為了獲取一些更具體更常見的深度結(jié)構(gòu)和他們用途的介紹。
第四步:實(shí)踐
具體的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的下一步介紹將會(huì)使用在現(xiàn)在研究中最流行的python深度學(xué)習(xí)庫(kù)包括實(shí)際執(zhí)行。在一些情況下,一些不同的庫(kù)的優(yōu)化是為了某個(gè)特定的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),并且已經(jīng)在某些特定的領(lǐng)域立足,我們將會(huì)使用三個(gè)不同的深度學(xué)習(xí)庫(kù)。這不是多余的,在特定領(lǐng)域的實(shí)踐中與最新的庫(kù)保持一致時(shí)學(xué)習(xí)時(shí)很重要的一步。接下來的訓(xùn)練也將會(huì)讓你自己評(píng)價(jià)不同的庫(kù),并且形成一個(gè)在哪些問題上用哪個(gè)的直覺。
現(xiàn)在歡迎你選擇一個(gè)庫(kù)或者聯(lián)合庫(kù)進(jìn)行安裝,是否繼續(xù)那些教程取決于你的選擇。如果你希望嘗試一個(gè)庫(kù)并且使用它來執(zhí)行接下來步驟的教程,我會(huì)推薦TensorFlow,原因如下,我會(huì)提到最相關(guān)的(至少是在我的眼中):它執(zhí)行自動(dòng)分化(autodifferentiation),意味著你不需要擔(dān)心從頭執(zhí)行反向傳播,更可能使代碼更容易理解(尤其是對(duì)一個(gè)初學(xué)者來說)。
我寫關(guān)于TensorFlow的文章是在剛出來的時(shí)候TensorFlow Disappoints – Google Deep Learning Falls Shallow,這個(gè)標(biāo)題暗示著比在實(shí)際中更失望;我最初關(guān)注的是它缺少GPU集叢的網(wǎng)絡(luò)訓(xùn)練(很可能很快會(huì)有它自己的方式).無論如何,如果你沒有看列在下面的白皮書但是想看更多關(guān)于TensotFlow的材料,我建議讀我原始的文章,然后跟著Zachary Lipton's 寫的很好的部分,TensorFlow is Terrific – A Sober Take on Deep Learning Acceleration.
TensorFlow
Google的TensorFlow是基于數(shù)據(jù)流圖展現(xiàn)的一個(gè)通用的機(jī)器i學(xué)習(xí)庫(kù)。
安裝TensorFlow在這里
查看白皮書
嘗試它的
文檔
Theano
Theano是被蒙特利爾大學(xué)的LISA group積極開發(fā)的。
安裝Theano在這里
介紹教程
文檔
Caffe
Caffe是由加州大學(xué)伯克利分校的BVLC開發(fā)的。Theano和Tensorflow可以認(rèn)為是通用的深度學(xué)習(xí)庫(kù),Caffe是由一個(gè)計(jì)算機(jī)視覺的組開發(fā)的,主要考慮的解決那樣的問題;但是,它也是一個(gè)通用的庫(kù)為了為不同領(lǐng)域建立不同的深度學(xué)習(xí)框架。
在這里安裝Caffe
閱讀來進(jìn)行熟悉
同時(shí)看看文檔
記住這些并不僅僅是現(xiàn)在流行的庫(kù)。事實(shí)上,還有很多很多可以選擇,這些選擇是基于教程的流行性,文檔和總體上研究上的接受程度。
其他的深度學(xué)習(xí)庫(kù)選擇包括:
Keras---一個(gè)用于Theano和TensorFlow高層、極簡(jiǎn)Python神經(jīng)網(wǎng)絡(luò)庫(kù)
Lasagne---Theano頂上的輕量級(jí)python庫(kù)
Torch---Lua機(jī)器學(xué)習(xí)算法庫(kù)
DeepLearning4j---Jaav和Scala開源、分布式深度學(xué)習(xí)庫(kù)
Chainer---一個(gè)靈活的、直觀的python神經(jīng)網(wǎng)絡(luò)庫(kù)
Mocha---Juliade的一個(gè)深度學(xué)習(xí)框架
安裝好這些庫(kù),現(xiàn)在我們可以繼續(xù)實(shí)踐。
第五步:卷積神經(jīng)網(wǎng)絡(luò)和計(jì)算機(jī)視覺
計(jì)算機(jī)視覺解決處理和理解圖片和它的符號(hào)信息。大部分領(lǐng)域最近的突破都是來自于深度神經(jīng)網(wǎng)絡(luò)的使用。特別的,卷積神經(jīng)網(wǎng)絡(luò)在最近扮演一個(gè)很重要的角色。
首先,讀Yoshua Bengio的deep learning with computer vision,為了對(duì)這個(gè)課題有一個(gè)理解。
然后。如果你安裝好了TensorFlow,閱讀并執(zhí)行這個(gè)教程,這個(gè)是用卷積i神經(jīng)網(wǎng)絡(luò)分類CIFAR-10圖片。如果你安裝了Caffe,對(duì)于上一個(gè)教程的替代,執(zhí)行Caffe中的卷積神經(jīng)網(wǎng)絡(luò)分類MNIST數(shù)據(jù)集圖片。
這里是一個(gè)粗略等同于Caffe 的練習(xí)Theano tutorial.
然后,讀Krizhevsky, Sutskever和Hinton的seminal convolutional neural network paper增加額外的視野。
第六步:遞歸網(wǎng)和語言處理
自然語言處理(NLP)是收益與深度學(xué)習(xí)的另一個(gè)領(lǐng)域。關(guān)心理解自然語言,NLP通過運(yùn)用遞歸神經(jīng)網(wǎng)絡(luò)(RNN)有很多最新的成功。
Andrej Karpathy有一篇很贊的博客,題目是The Unreasonable Effectiveness of Recurrent Neural Networks,列出了RNN在訓(xùn)練字符級(jí)語言模型的有效性的大綱。它提到的代碼是通過Torch用Lua寫的,所以你可以跳過;這個(gè)在純理論層次上依舊很有用。
這個(gè)教程為語言處理在TensorFlow上執(zhí)行RNN.
你也可以用Theano并且用這個(gè)教程嘗試,用文字嵌套執(zhí)行了一個(gè)RNN.
最后,你可以讀Yoon Kim的Convolutional Neural Networks for Sentence Classification,這是CNN在語言處理上的又一個(gè)應(yīng)用。Denny Britz 有一篇博客,題目是Implementing A CNN For Text Clasification in TensorFlow,使用的是電影的評(píng)論數(shù)據(jù)。
第七步:更深入的課題
上面的步驟在深度學(xué)習(xí)已經(jīng)從理論上進(jìn)步到實(shí)踐。通過在前兩步執(zhí)行卷積神經(jīng)網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò),希望的是對(duì)它們力量和功能性的預(yù)先感知。與CNN和RNN一樣普遍的有很多其他隨著基礎(chǔ)研究出現(xiàn)的已經(jīng)存在的深度結(jié)構(gòu)。
有很多超過前面理論步驟展現(xiàn)的其他的考慮,同樣的,下面是這些另外結(jié)構(gòu)和考慮的快速的調(diào)研。
為了更深的理解適合時(shí)間序列預(yù)測(cè)的特定類型的RNN,長(zhǎng)短項(xiàng)記憶網(wǎng)絡(luò),讀Christopher Olah寫的這篇文章。
Denny Britz寫的這篇文章是用LSTM和GRUs的 很好的一個(gè)關(guān)于RNN的教程??催@篇論文更深地討論GRUs和LSTMs.
很顯然這沒有包含所有的深度學(xué)習(xí)構(gòu)架。限制波爾茲曼機(jī)是一個(gè)腦中很明顯需要排除的,正如antoencoders,和一系列產(chǎn)生的相關(guān)的模型包括Generative Adversarial Networks. 但是,必須在某處畫一條線,不然這篇將會(huì)一直下去。
對(duì)那些感興趣其他深度學(xué)習(xí)構(gòu)架的,我建議看看Yshua Bengio的ftml.
對(duì)于我們的最終目標(biāo)和有一些不同的東西,看看Google DeepMindShakir Mohamed的 A Statistical Analysis of Deep Learning。這個(gè)比我們平常看到的材料更理論一些,但是值得用另一種方法看我們熟悉的事物。Shakir對(duì)6個(gè)月的課程寫了一系列文章,展現(xiàn)測(cè)試wide-held beliefs,增強(qiáng)數(shù)據(jù)的連接,并且深度學(xué)習(xí)中要隱藏的東西。有一個(gè)所有發(fā)布的PDF集合.
希望足夠的信息已經(jīng)展現(xiàn),能夠給讀者一個(gè)對(duì)深度神經(jīng)網(wǎng)絡(luò)介紹性的綜述,并且提供一些想對(duì)這個(gè)課題繼續(xù)研究的熱情。
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4726瀏覽量
100323 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8325瀏覽量
132194 -
深度學(xué)習(xí)
+關(guān)注
關(guān)注
73文章
5441瀏覽量
120798
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論