深度學習,是人工智慧領域的一個突出的話題,被眾人關注已經有相當長的一段時間了。它備受關注是因為在電腦視覺( Computer Vision )和遊戲( Alpha GO )等領域有超越人類能力的突破 。自上一次調查以來,對於深度學習的關注又出現了大幅增加的趨勢。
是Google趨勢向我們所展示的:
如果你對這個話題感興趣的話,本文是一個很好的非技術性的介紹。如果你有興趣瞭解關於深度學習的最新趨勢,本文是一個很全面的匯總。
在這裡,我們的目標是為新手和想進一步探索深度學習的人們提供一個學習路徑。那麼,你準備好踏上征服深度學習的征程了嗎?我們上路吧。
步驟 0 :出征準備
建議在進入深入學習領域之前,應該瞭解機器學習的基本知識。“機器學習的學習路徑”是一個完整的資源,讓你開始瞭解該領域。
如果你想要一個較短的版本,請看下面:
基礎數學,資源 1 :“數學 | 可汗學院”(尤其是微積分、機率論和線性代數)
Python 基礎,資源:“電腦科學入門”, EDX課程
統計學基礎,資源:“統計入門”,Udacity 的課程
機器學習基礎,資源:“機器學習入門”, Udacity 的課程
時間:建議 2-6 個月
步驟 1 :設定好你的機器
在繼續下一步之前,請確保有支撐硬體。一般建議應該至少有:
一個足夠好的 GPU ( 4+ GB ),最好是 Nvidia 的
一個夠用的 CPU (如英特爾酷睿 i3 可以,而英特爾 Pentium 不行)
4GB 記憶體或取決於資料集。
如果仍然不確定,可以看一下這個硬體指南
PS :如果你是一個鐵杆遊戲玩家(當然不只是糖果粉碎機玩家!),你可能已經有了所需 硬體。
如果沒有所需硬體,可以購買或租用一個亞馬遜網頁服務( AWS )。這裡有個利用 AWS 進行深度學習的好指南。
注意:在這個階段不用安裝任何深度學習的學習庫,這些在步驟 3 中做。
步驟 2 :嘗試一下
現在有了足夠的預備知識,可以進一步瞭解深度學習了。
按照個人喜好,可以關註:
部落格: (資源 1 :“深度學習的基礎” 資源 2 :“駭客的神經網路指南” )
視頻:“簡化的深度學習”
教科書:《神經網路和深度學習》
除了這些先決條件,還應該知道流行的深度學習程式庫和運行它們的語言。這是一個(非全面)列表(更全面的列表請查看維基頁面):
Caffe
DeepLearning4j
Tensorflow
Theano
Torch
其他一些著名的庫包括:
Mocha
neon
H2O
MXNet
Keras
Lasagne
Nolearn
這裡有一個根據語言分類的深度學習庫列表
建議看斯坦福的 cs231n 課程第 12 講:流行的深度學習庫概述
時間:建議 1-3 周
步驟 3 :選擇你自己的探險之路
現在有趣的部分來了!深度學習已被應用在各個領域並帶來了最先進成果。為了進入到這個領域,你,讀者,需要選擇一條合適自己的路走。這應該是個實踐經驗,那樣你就可以在目前所理解的之上獲得一個合適的基礎。
注意:每條路徑包含一個入門簡介的部落格,一個實踐項目,項目所需的深度學習的程式庫和輔助課程。首先理解簡介,然後安裝所需的程式庫,開始項目工作。如果你在這其中遇到任何困難,利用相關的課程以獲得支援。
深度學習之電腦視覺
入門簡介:“ DL forComputer Vision ”電腦視覺部落格
項目:“ FacialKeypoint Detection ”人臉關鍵點檢測教程
所需程式庫: Nolearn
相關課程:“ cs231n : 卷積神經網路視覺識別”
深度學習之自然語言處理
入門簡介:“ DeepLearning, NLP, and Representations ”(“深度學習,自然語言處理與呈現”部落格)
項目:“深度學習聊天機器人”:
“第一部分”
“第二部分”
所需程式庫: tensorflow
相關課程:“ cs224d :深度學習在自然語言處理方面的應用”
深度學習之語音 / 音頻識別
入門簡介:“深度演講:深度學習的經驗教訓”新聞和相應的視頻。
項目:“用 Magenta 產生音樂( tensorflow )”
所需程式庫: Magenta ,
相關課程:“深度學習( 2016 春季), cilvr 實驗室 @ 紐約
深度學習之強化學習
入門介紹與項目:“深度強化學習:來自 Pixels 的乒乓球遊戲”
所需程式庫:沒有要求。但是需要 openAI gym 來測試你的模型。
相關課程:“ cs294 :深度強化學習”
時間:建議 1-2 個月
步驟 4 :深入深度學習
現在(幾乎)能夠在深度學習名人堂上佔一個坑!前面的道路是漫長的和深刻的(雙關語),其實主要是還未探索過的。現在是靠你自己熟悉和使用這個新技能的時候。這裡有一些技巧,可以提升你的技能。
選擇一個不同的路徑重複上述步驟。
深度學習之以上沒提到的!(例如:交易的深度學習,為最佳化能源效率的深度學習)
使用你新學到的技能來建立一個東西(請記得,力量越大,責任越大, )
測試你的深度學習技能(如 Kaggle )
參與深度學習社區(如Google群)
關注最新的研究成果及研究人員。(如“ RE.WORK DL Summit ”)
時間:建議——無上限!
具體來說說用python開發或學習機器學習,深度學習的重要模組!應該說是必不可少的模組!
1. 前期準備, 你多多少少需要懂python科學運算,資料整理還有出映像結果的模組,這三個必不可少:numpy, pandas, matplotlib.
2. 進階準備,在機器學習方面,scikit learn 是彙集了眾多機器學習方法的模組,它支援各種各樣的機器學習方法。你總能找到適合你項目的。
3. 同樣是進階的,在神經網路方面有著巨大貢獻的tensorflow,這個是Google開發,而且挖了挺多theano的開發人員。我覺得神經網路的開發沒有比tensorflow更牛的了。而且你想Google這大公司,更新推進的速度肯定也不會慢。看好它。
4. 如果想方便快捷地搭建神經網路, Keras 這個模組很不錯, 他的底層是 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 Scipy
2、Keras(深度學習)
Keras是基於Theano的一個深度學習架構,它的設計參考了Torch,用Python語言編寫,是一個高度模組化的神經網路程式庫,支援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
Retrieve semantically similar documents