當前位置:
首頁 > 最新 > 為網路新人而準備——七步理解深度學習

為網路新人而準備——七步理解深度學習

GIF/184K

導讀:上一期給大家介紹讓你成為優秀數據科學家的42個步驟。深入掌握數據準備,機器學習,SQL數據科學等。今天我們從細節上來把握,七步進入深度學習(文末更多往期譯文推薦)

網上有很多的深度學習的免費學習資源,但是可能會對從哪裡開始有些困惑。七步內從對深度神經網路的模糊理解到知識淵博的從業者(knowledgeable practitioner)!

深度學習是機器學習的一個分支,擁有很多的相似性,但是卻也不同,深度神經網路結構在自然語言處理、計算機視覺、生物信息學和其他領域解決了各種各樣的問題。深度學習經歷了一場巨大的最近研究的重現,並且在很多領域中已經展現出最先進的成果。

本質上,深度學習是超過一層隱藏神經元的神經網路的執行。但是,這是對深度學習的一個簡單的看法,並且不是一個沒有爭議的觀點。這些深層構架也非常不同,對不同任務或目標優化會有不同的執行。在這樣一個恆定速率進行著的大量研究在以史上未有的速度展現新的和創新的深度學習模型。

最近的一個白熱化的研究課題,深度學習似乎影響著機器學習的所有領域,相關的還有數據科學。粗略看看相關arXiv目錄下最近的論文,很容易看出大量正在被發表的論文都是深度學習相關的。鑒於已經產生的令人驚嘆的成果,很多研究者,從業者和外行都在想深度學習是否是真正的人工智慧的邊界。

這系列的閱讀材料和教程旨在給深度神經網路的新人提供一條路徑去理解這個巨大而複雜的課題。儘管我不假設對神經網路和深度學習真正的理解,但是我假設你對一般的機器學習理論和實踐具有某種程度的熟悉度。為了克服在一般機器學習理論和實踐的不足,你可以看看最近KDnuggets發布的7 Steps to Mastering Machine Learning With Python。由於我們也看用Python寫的例子的執行,對語言有些熟悉會很有用。介紹和綜述的資源在previodsly mentioned post也是提供的。

這篇文章將以緊密結合的順序使用網路上免費提供的材料在理論層面上獲得對深度神經網路的一些理解,然後繼續轉向一些實際的執行。同樣的,借鑒過來的引用材料只屬於創建者,跟資源會一起被標註。如果你看到有人因為他們的工作沒有被正確引用,請告知我,我會很快修改的。

一個完全誠實的免責申明:深度學習是一個複雜而在廣度和深度(pun unintended?)變化很快的領域,因此這篇博客不保證包括所有成為深度學習專家的手冊;這樣的一個轉化將會需要更多的時間,很多附加材料和很多實際建立和測試的模型。但是,我相信的是,使用這裡的資源可以幫你在這樣一個路徑下開始。

第一步:介紹深度學習

如果你正在讀這個並且對這個課題感興趣,你可能已經對深度神經網路已經熟悉,甚至在一個很基礎的層次。神經網路有一個故事性的歷史,但是我們將不會深入。但是,我們需要如果在開始就有一個普遍高層次的理解。

首先,看看DeepLearning .tv精彩的介紹視頻。在 寫完這個的時候已經有14個視頻了;如果你喜歡看完他們,但是一定要看前五個,包含了神經網路的基礎和一些更常見的結構。

然後,仔細閱讀Geoff Hinton,Yoshua Bengioh和Yann LeCun的NIPS 2015 Deep Learning Tutorial,一個稍微更低層次的介紹。

完成我們的第一步,讀the first chapter of Neural Networks and Deep Learning,這個由Michael Nielden寫的精妙的,不斷更新的在線書,這會更近一步但是依然很粗淺。

第二步:學習技術

深度神經網路依賴代數和微積分的數學基礎。然而這篇博客不會產生任何理論上的數學,在繼續之前有一些理解將會很有幫助。

第一,看Andrew Ng的linear algebra review videos。但是不是絕對的必要,想要對線性代數了解更深的話,從Ng的斯坦福課程看看Zico Kolter 和Chuong Do寫的Linear Algebra Review and Reference.

然後看看Professor Leonard的Introduction to the Derivative of a Function. 視頻是很簡潔的,例子是很清晰的,並且提供了從數學的視角來看在反向傳播的過程中到底發生了什麼。一會兒會更多。

接下來迅速瀏覽下維基Sigmoid function的詞條,一個在神經網路中經常通過單個神經元應用的邊界差分函數。

最後,從數學上休息下閱讀谷歌研究科學家 Quoc Le的Deep Learning Tutorial.

第三步:反向傳播和梯度下降

神經網路包括現代深度構架重要的一部分是反向傳播演算法的錯誤,使用離輸入更近的神經元通過網路更新權重。非常坦率的說,這就是神經網路繼承他們」力量「(缺乏更好的術語)的地方。反向傳播和一個隨後分散式的最小化權重的優化方法,為了最小化損失函數。在深度學習中一個常見的優化方法是梯度下降。

首先,看看這些斯圖加特大學Marc Toussaint 寫的關於梯度下降的介紹筆記。

然後,看看Matt Mazur寫的this step by step example of backpropagation in action.

繼續,閱讀Jeremy Kun關於 coding backpropagation in Python的信息博客。仔細看看完整代碼也是建議的,嘗試自己寫一遍代碼。

最後,讀Quoc Le寫的Deep Learning Tutorial的第二部分,為了獲取一些更具體更常見的深度結構和他們用途的介紹。

第四步:實踐

具體的神經網路結構的下一步介紹將會使用在現在研究中最流行的python深度學習庫包括實際執行。在一些情況下,一些不同的庫的優化是為了某個特定的神經網路結構,並且已經在某些特定的領域立足,我們將會使用三個不同的深度學習庫。這不是多餘的,在特定領域的實踐中與最新的庫保持一致時學習時很重要的一步。接下來的訓練也將會讓你自己評價不同的庫,並且形成一個在哪些問題上用哪個的直覺。

現在歡迎你選擇一個庫或者聯合庫進行安裝,是否繼續那些教程取決於你的選擇。如果你希望嘗試一個庫並且使用它來執行接下來步驟的教程,我會推薦TensorFlow,原因如下,我會提到最相關的(至少是在我的眼中):它執行自動分化(autodifferentiation),意味著你不需要擔心從頭執行反向傳播,更可能使代碼更容易理解(尤其是對一個初學者來說)。

我寫關於TensorFlow的文章是在剛出來的時候TensorFlow Disappoints – Google Deep Learning Falls Shallow,這個標題暗示著比在實際中更失望;我最初關注的是它缺少GPU集叢的網路訓練(很可能很快會有它自己的方式).無論如何,如果你沒有看列在下面的白皮書但是想看更多關於TensotFlow的材料,我建議讀我原始的文章,然後跟著Zachary Lipton s 寫的很好的部分,TensorFlow is Terrific – A Sober Take on Deep Learning Acceleration.

TensorFlow

Google的TensorFlow是基於數據流圖展現的一個通用的機器i學習庫。

安裝TensorFlow在這裡

查看白皮書

嘗試它的介紹教程

文檔

Theano

Theano是被蒙特利爾大學的LISA group積極開發的。

安裝Theano在這裡

介紹教程

文檔

Caffe

Caffe是由加州大學伯克利分校的BVLC開發的。Theano和Tensorflow可以認為是通用的深度學習庫,Caffe是由一個計算機視覺的組開發的,主要考慮的解決那樣的問題;但是,它也是一個通用的庫為了為不同領域建立不同的深度學習框架。

在這裡安裝Caffe

閱讀介紹教程展示來進行熟悉

同時看看文檔

記住這些並不僅僅是現在流行的庫。事實上,還有很多很多可以選擇,這些選擇是基於教程的流行性,文檔和總體上研究上的接受程度。

其他的深度學習庫選擇包括:

Keras---一個用於Theano和TensorFlow高層、極簡Python神經網路庫

Lasagne---Theano頂上的輕量級python庫

Torch---Lua機器學習演算法庫

DeepLearning4j---Jaav和Scala開源、分散式深度學習庫

Chainer---一個靈活的、直觀的python神經網路庫

Mocha---Juliade的一個深度學習框架

安裝好這些庫,現在我們可以繼續實踐。

第五步:卷積神經網路和計算機視覺

計算機視覺解決處理和理解圖片和它的符號信息。大部分領域最近的突破都是來自於深度神經網路的使用。特別的,卷積神經網路在最近扮演一個很重要的角色。

首先,讀Yoshua Bengio的deep learning with computer vision,為了對這個課題有一個理解。

然後。如果你安裝好了TensorFlow,閱讀並執行這個教程,這個是用卷積i神經網路分類CIFAR-10圖片。如果你安裝了Caffe,對於上一個教程的替代,執行Caffe中的卷積神經網路分類MNIST數據集圖片。

這裡是一個粗略等同於Caffe 的練習Theano tutorial.

然後,讀Krizhevsky, Sutskever和Hinton的seminal convolutional neural network paper增加額外的視野。

第六步:遞歸網和語言處理

自然語言處理(NLP)是收益與深度學習的另一個領域。關心理解自然語言,NLP通過運用遞歸神經網路(RNN)有很多最新的成功。

Andrej Karpathy有一篇很贊的博客,題目是The Unreasonable Effectiveness of Recurrent Neural Networks,列出了RNN在訓練字元級語言模型的有效性的大綱。它提到的代碼是通過Torch用Lua寫的,所以你可以跳過;這個在純理論層次上依舊很有用。

這個教程為語言處理在TensorFlow上執行RNN.

你也可以用Theano並且用這個教程嘗試,用文字嵌套執行了一個RNN.

最後,你可以讀Yoon Kim的Convolutional Neural Networks for Sentence Classification,這是CNN在語言處理上的又一個應用。Denny Britz 有一篇博客,題目是Implementing A CNN For Text Clasification in TensorFlow,使用的是電影的評論數據。

第七步:更深入的課題

上面的步驟在深度學習已經從理論上進步到實踐。通過在前兩步執行卷積神經網路和遞歸神經網路,希望的是對它們力量和功能性的預先感知。與CNN和RNN一樣普遍的有很多其他隨著基礎研究出現的已經存在的深度結構。

有很多超過前面理論步驟展現的其他的考慮,同樣的,下面是這些另外結構和考慮的快速的調研。

為了更深的理解適合時間序列預測的特定類型的RNN,長短項記憶網路,讀Christopher Olah寫的這篇文章。

Denny Britz寫的這篇文章是用LSTM和GRUs的 很好的一個關於RNN的教程。看這篇論文更深地討論GRUs和LSTMs.

很顯然這沒有包含所有的深度學習構架。限制波爾茲曼機是一個腦中很明顯需要排除的,正如antoencoders,和一系列產生的相關的模型包括Generative Adversarial Networks. 但是,必須在某處畫一條線,不然這篇將會一直下去。

對那些感興趣其他深度學習構架的,我建議看看Yshua Bengio的ftml.

對於我們的最終目標和有一些不同的東西,看看Google DeepMindShakir Mohamed的 A Statistical Analysis of Deep Learning。這個比我們平常看到的材料更理論一些,但是值得用另一種方法看我們熟悉的事物。Shakir對6個月的課程寫了一系列文章,展現測試wide-held beliefs,增強數據的連接,並且深度學習中要隱藏的東西。有一個所有發布的PDF集合.

希望足夠的信息已經展現,能夠給讀者一個對深度神經網路介紹性的綜述,並且提供一些想對這個課題繼續研究的熱情。

備註:相關文章鏈接,對話框中關鍵詞回復「數據科學」,即可獲取。

【燈塔大數據】微信公眾號介紹:中國電信北京研究院通過整合電信自有數據、互聯網數據和線下數據,創建了業內領先的「燈塔」大數據行業應用平台,致力於與行業合作夥伴共同打造大數據行業應用生態圈。目前我們面向市場研究、廣告、汽車、金融、人力資源等諸多行業領域,提供零售研究、消費者研究、店鋪選址、精準營銷、泛義徵信等服務,助力企業在大數據時代楊帆遠航。

微信公眾號【燈塔大數據】關鍵字信息:

【人工智慧】獲取人工智慧時代的發展思考 ppt

【半月刊】下載大數據瞭望半月刊

【網路安全】獲取國民網路安全報告全文

【23個理由】下載《大數據讓你興奮的23個理由》電子書

【思維導圖】下載12種工具的獲取方式

【 燈塔 】 查看更多關鍵字回復


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 燈塔大數據 的精彩文章:

TAG:燈塔大數據 |