前言算法
人工智能是一個最普遍的概念,人工智能的目的就是讓計算機這臺機器可以象人同樣思考,而機器學習是人工智能的分支,專門研究計算機怎樣模擬或實現人類的學習行爲,以獲取新的知識或技能,使之不斷改善自身的性能。網絡
深度學習是一種機器學習的方法,它試圖使用包含複雜結構或由多重非線性變換構成的多個處理層(神經網絡)對數據進行高層抽象的算法。框架
深度學習的目的是創建並模擬人腦進行分析學習的神經網絡,它模仿大腦的機制來解釋數據。機器學習
這是學習知識點:函數
在深度學習網絡中,每個節點層在前一層輸出的基礎上學習識別一組特定的特徵。隨着神經網絡深度增長,節點所能識別的特徵也就愈來愈複雜,由於每一層會整合並重組前一層的特徵。性能
深度學習的過程一樣是分爲訓練和推理(既「評估」)兩個過程,經過訓練過程來得到數據模型,而後用於評估新的數據。學習
數據模型分爲兩種,一種是所謂判別模型(Discriminative Model),也就是說模型能夠直接用來判別事物的。這裏所說的判別事物,最典型的就是作分類。既然直接能夠用來分類,也就是說咱們能夠在已知屬性的條件下,對該記錄進行判斷。因此,判別模型是對條件機率進行的建模,也就是p(Y|X)。這裏X就是屬性集合,實際上就是一個向量;而Y則多是一個值(此時對應分類問題), 多是一個向量(此時對應序列標註問題)。判別模型經常使用於處理分類問題(好比鑑定垃圾郵件)、圖像識別等等。人工智能
再說一說生成模型(Generativecdn
Model)。生成模型能夠描述數據的生成過程。換句話說,已知了這個模型,咱們就能夠產生該模型描述的數據。而數據由兩部分組成,也就是(X,Y),前者是特徵,後者則是類別(Y是標量)或者序列類別(Y是向量)。要描述整個數據,也就是要對p(X,Y)進行建模,因此是對聯合機率進行建模。生成模型自己不是作分類或者序列標註的,可是能夠用來解決這些問題,也能夠用於生成式問題,好比聊天機器人、好比AI譜曲等問題。對象
而機器學習能夠分紅下面幾種類別:
監督學習從給定的訓練數據集中學習出一個函數,當新的數據到來時,能夠根據這個函數預測結果。監督學習的訓練集要求是包括輸入和輸出,也能夠說是特徵和目標。訓練數據中的目標是由人標註的。常見的監督學習算法包括迴歸分析和統計分類。
無監督學習與監督學習相比,訓練集沒有人爲標註的結果。常見的無監督學習算法有聚類。
半監督學習介於監督學習與無監督學習之間。它主要考慮如何利用少許的標註樣本和大量的未標註樣本進行訓練和分類的問題。。
加強學習經過觀察來學習作成如何的動做。每一個動做都會對環境有所影響,學習對象根據觀察到的周圍環境的反饋來作出判斷。
在傳統的機器學習領域,監督學習最大的問題是訓練數據標註成本比較高,而無監督學習應用範圍有限。利用少許的訓練樣本和大量無標註數據的半監督學習一直是機器學習的研究重點。
當前很是流行的深度學習GAN模型和半監督學習的思路有相通之處,GAN是「生成對抗網絡」(Generative Adversarial Networks)的簡稱,包括了一個生成模型G和一個判別模型D,GAN的目標函數是關於D與G的一個零和遊戲,也是一個最小-最大化問題。
GAN實際上就是生成模型和判別模型之間的一個模仿遊戲。生成模型的目的,就是要儘可能去模仿、建模和學習真實數據的分佈規律;而判別模型則是要判別本身所獲得的一個輸入數據,到底是來自於真實的數據分佈仍是來自於一個生成模型。經過這兩個內部模型之間不斷的競爭,從而提升兩個模型的生成能力和判別能力。
目前主流的深度學習框架:
Caffe 由Berkeley提出
TensorFlow 由Google提出(Apache 2.0)
Torch (BSD License), facebook是主要使用者
MXNet 一個相對中立的機器學習框架(Apache 2.0), 被Amazon AWS使用
CNTK2 由Microsoft提出(MIT License)