深度學習,是人工智慧領域的一個突出的話題,被眾人關注已經有相當長的一段時間了。它備受關注是因為在電腦視覺( Computer Vision )和遊戲( Alpha GO )等領域中超越人類能力的突破 。自從上一次調查以來,對於深度學習的關注又出現了大幅增加的趨勢。
下圖是谷歌趨勢向我們所展示的:
如果你對這個主題感興趣的話,本文是一個很好的非技術性的介紹。如果你有興趣了解關於深度學習的最新趨勢,本文是一個很全面的總結。
在這裡,我們的目標是為新手和想進一步探索深度學習的人提供一個學習路徑。那麼,你準備好踏上征服深度學習的旅程了嗎?我們上路吧。
步驟 0 :出征準備
建議在進入深入學習領域之前,應該先了解機器學習的基本知識。 「機器學習的學習路徑」是一個完整的資源,讓你開始了解這個領域。
如果你想要一個較短的版本,請看下面:
基礎數學,資源 1 :「數學 | 可汗學院」(特別是微積分、機率論與線性代數)
Pyt 基礎,資源: “電腦科學入門”, EDX課程
統計學基礎,資源:“統計入門”,Udacity 的課程
機器學習基礎,資源:“機器學習入門”, Udacity 的課程
時間:建議 2-6 Udacity 的課程
時間:建議個 2-6 月
步驟 1 :設定好你的機器
在繼續下一步之前,請確保有支撐硬體。一般建議至少應該有:
一個夠好的 GPU ( 4+ GB ),最好是 Nvidia 的
一個夠用的 CPU (如英特爾酷睿 i3 數據集。
如果仍然不確定,可以看一下這個硬體指南
PS :如果你是一個鐵桿遊戲玩家(當然不只是糖果粉碎機玩家!),你可能已經有了所需 硬體。
如果沒有所需硬件,可以購買或租用一個亞馬遜網頁服務( AWS )。這裡有個利用 AWS 進行深度學習的好指南。
注意:在這個階段不用安裝任何深度學習的學習庫,這些在步驟 3 中做。
步驟 2 :試試看
現在有了足夠的預備知識,可以進一步了解深度學習了。
依照個人喜好,可以追蹤:
部落格: (資源 1 :「深度學習的基礎」 資源 2 :「駭客的神經網路指引」)
影片:「簡化的深度學習」
教科書:《神經神經神經學網路與深度學習》
除了這些先決條件,還應該知道流行的深度學習程式庫和運行它們的語言。這是一個(非全面)清單(更全面的清單請查看維基頁面):
Caffe
DeepLearning4j
Tensorflow
The
neonH2O MXNet KerasLasagneNolearn 這裡有一個根據語言分類的深度學習庫列表13753231531313131313131313335335333333講 或者講課33333333303333部分講課的深度。
時間:建議1-3 週
步驟 3 :選擇自己的探險之路
現在有趣的部分來了!深度學習已被應用在各個領域並帶來了最先進成果。為了進入到這個領域,你,讀者,需要選擇一條適合自己的路走。這應該是個實務經驗,這樣你就可以在目前所理解的之上獲得一個合適的基礎。
注意:每條路徑包含一個入門簡介的博客,一個實踐項目,項目所需的深度學習的程序庫和輔助課程。首先理解簡介,然後安裝所需的程式庫,開始專案工作。如果你在這其中遇到任何困難,請利用相關的課程以獲得支援。
深度學習電腦視覺
入門簡介:「 DL forComputer Vision 」電腦視覺部落格
專案:「 FacialKeypoint Detection 」人臉關鍵點偵測積神經網路視覺辨識」
深度學習之自然語言處理
入門簡介:「 DeepLearning, NLP, and Representations 」(「深度學習,自然語言處理與呈現」部落格)
專案:「深度學習聊天機器人」 :
「第一部分」
「第二部分」
所需程式庫: tensorflow
相關課程:「 cs224d :深度學習在自然語言處理方面的應用」
入門簡介:「深度演講:深度學習的經驗教訓」新聞和相應的影片。
計畫:「用 Magenta 產生音樂( tensorflow )」
所需程序庫: Magenta ,
相關課程:「深度學習( 2016 春季),
相關課程:「深度學習( 2016 介紹與專案:「深度強化學習:來自 Pixels 的乒乓球遊戲」
所需程式庫:沒有要求。時間:建議 1-2 個月
步驟 4 :深入深度學習
現在(幾乎)能夠在深度學習名人堂上佔一個坑!未探索過的。的!學習技能(如 Kaggle )
參與深度學習社群(如Google群組)
專注於最新的研究成果及研究人員。具體來說說用python開發或學習機器學習,深度學習的重要模組!的模組,這三個必不可少:numpy, pandas, matplotlib.
2. 進階準備,在機器學習方面,scikit learn 是匯集了眾多機器學習方法的模組,它支援各種各樣的機器學習方法。沒有比tensorflow更牛的了。是Tensorflow 和Theano, 所以在Windows, MacOS, Linux上都能用得到.5. 的確是還有很多其他的模組可以運用,不過在我個人的機器學習生涯中,主要就是運用這些了。方便大家的學習,推廣華人在機器學習領域的力量,我有自己做一套的scikit learn,Theano, Keras, 還有tensorflow的中文教學影片, 機器學習的簡介系列。國內的反應還不怎麼樣,不過在YouTube上已經很多人觀看了。希望大家支持華人的力量。
Python機器學習庫和深度學習庫總結
1. Scikit-learn(重點推薦)Scikit-learn 是基於Scipy為機器學習建造的的一個Python模組,他的特色就是多樣化的分類,回歸和聚類的演算法包括支援向量機,邏輯回歸,樸素貝葉斯分類器,隨機森林,Gradient Boosting,聚類演算法和DBSCAN。而且也設計出了Python numerical和scientific libraries Numpy and Scipy2、Keras(深度學習)
Keras是基於Theano的一個深度學習框架,它的設計參考了一個高度模組化的神經網路庫,支援GPU和CPU。
3、Lasagne(深度學習)
不只是一個美味的意大利菜,也是一個和Keras有著相似功能的深度學習庫,但其在設計上與它們有些不同。
4.Pylearn2
Pylearn是一個讓機器學習研究簡單化的基於Theano的函式庫程式。它把深度學習和人工智慧研究許多常用的模型以及訓練演算法封裝成一個單一的實驗包,例如隨機梯度下降。
5.NuPIC
NuPIC是一個以HTM學習演算法為工具的機器智慧平台。 HTM是皮質的精確計算方法。 HTM的核心是基於時間的持續學習演算法和儲存和撤銷的時空模式。 NuPIC適合於各種各樣的問題,尤其是檢測異常和預測的流資料來源。
6. Nilearn
Nilearn 是一個能夠快速統計學習神經影像資料的Python模組。它利用Python語言中的scikit-learn 工具箱和一些進行預測建模,分類,解碼,連通性分析的應用程式來進行多元的統計。
7.PyBrain
Pybrain是基於Python語言強化學習,人工智慧,神經網路庫的簡稱。 它的目標是提供靈活、容易使用並且強大的機器學習演算法和進行各種各樣的預定義的環境中測試來比較你的演算法。
8.Pattern
Pattern 是Python語言下的一個網路挖掘模組。它為資料挖掘,自然語言處理,網路分析和機器學習提供工具。它支援向量空間模型、聚類、支援向量機和感知機並且用KNN分類法進行分類。
9.Fuel
Fuel為你的機器學習模式提供資料。他有一個共享如MNIST, CIFAR-10 (圖片資料集), Google's One Billion Words (文字)這類資料集的介面。你使用他來透過很多種的方式來取代自己的數據。
10.Bob
Bob是一個免費的訊號處理和機器學習的工具。它的工具箱是用Python和C++語言共同編寫的,它的設計目的是變得更加高效並且減少開發時間,它是由處理圖像工具,音頻和視頻處理、機器學習和模式識別的大量軟體包構成的。
11.Skdata
Skdata是機器學習和統計的資料集的庫程式。這個模組對於玩具問題,流行的電腦視覺和自然語言的資料集提供標準的Python語言的使用。
12.MILK
MILK是Python語言下的機器學習工具包。它主要是在許多可取得的分類例如SVMS,K-NN,隨機森林,決策樹中使用監督分類法。 它還執行特徵選擇。 這些分類器在許多方面相結合,可以形成不同的例如無監督學習、密切關係金傳播和由MILK支持的K-means聚類等分類系統。
13.IEPY
IEPY是一個專注於關係抽取的開源性資訊擷取工具。它主要針對的是需要對大型資料集進行資訊擷取的使用者和想要嘗試新的演算法的科學家。
14.Quepy
Quepy是透過改變自然語言問題而在資料庫查詢語言中進行查詢的Python框架。他可以簡單的被定義為在自然語言和資料庫查詢中不同類型的問題。所以,你不用編碼就可以建立你自己的一個用自然語言進入你的資料庫的系統。
現在Quepy提供對於Sparql和MQL查詢語言的支援。並且計劃將它延伸到其他的資料庫查詢語言。
15.Hebel
Hebel是在Python語言中對於神經網路的深度學習的一個庫程序,它使用的是透過PyCUDA來進行GPU和CUDA的加速。它是最重要的神經網路模型的類型的工具而且能提供一些不同的活動函數的激活功能,例如動力,涅斯捷羅夫動力,信號丟失和停止法。
16.mlxtend
它是一個由有用的工具和日常資料科學任務的擴展組成的一個函式庫程式。
17.nolearn
這個程式包容納了大量能對你完成機器學習任務有幫助的實用程式模組。其中大量的模組和scikit-learn一起工作,其它的通常更有用。
18.Ramp
Ramp是一個在Python語言下制定機器學習中加快原型設計的解決方案的庫程式。他是一個輕型的pandas-based機器學習中可插入的框架,它現存的Python語言下的機器學習和統計工具(比如scikit-learn,rpy2等)Ramp提供了一個簡單的聲明性語法探索功能從而能夠快速有效地實作演算法和轉換。
19.Feature Forge
這一系列工具透過與scikit-learn相容的API,來創建和測試機器學習功能。
這個庫程式提供了一組工具,它會讓你在許多機器學習程式使用上很受用。當你使用scikit-learn這個工具時,你會感覺到受到了很大的幫助。 (雖然這只能在你有不同的演算法時起作用。)
20.REP
REP是以一種和諧、可再生的方式為指揮資料移動驅動所提供的一種環境。
它有一個統一的分類器包裝來提供各種各樣的操作,例如TMVA, Sklearn, XGBoost, uBoost等等。並且它可以在一個群體中以平行的方式訓練分類器。同時它也提供了一個互動的情節。
21.Python 學習機器樣品
用亞馬遜的機器學習建造的簡單軟體收集。
22.Python-ELM
這是一個在Python語言下基於scikit-learn的極端學習機器的實現。
23.gensim
主題模型python實作
Scalable statistical semantics
Analyze plain-text documents for semantic structure
Analyze plain-text documents for semantic structure