github開源:https://nndl.github.io/
nndl作者:邱錫鵬
筆記作者:Isaac.(原創(chuàng))
深度學(xué)習(xí)(Deep Learning) 是機器學(xué)習(xí)的一個分支。
神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)并不等價。深度學(xué)習(xí)可以采用神經(jīng)網(wǎng)絡(luò)模型,也可以采用其它模型(比如深度信念網(wǎng)絡(luò)是一種概率圖模型)。
但是神經(jīng)網(wǎng)絡(luò)模型可以比較容易地解決貢獻度分配問題,因此成為深度學(xué)習(xí)中主要采用的模型。
貢獻度分配問題(Credit Assignment Problem, CAP):指樣本的原始輸入到輸出目標(biāo)之間的數(shù)據(jù)流經(jīng)過多個線性或非線性的組件(components)。因為每個組件都會對信息進行加工,并進而影響后續(xù)的組件。當(dāng)我們最后得到輸出結(jié)果時,我們并不清楚其中每個組件的貢獻是多少。
目錄結(jié)構(gòu)
1.1 人工智能
1.1.1 人工智能的發(fā)展歷史
1.1.2 人工智能的流派
1.2 神經(jīng)網(wǎng)絡(luò)
1.2.1 人腦神經(jīng)網(wǎng)絡(luò)
1.2.2 人工神經(jīng)網(wǎng)絡(luò)
1.2.3 神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史
1.3 機器學(xué)習(xí)
1.4 表示學(xué)習(xí)
1.4.1 局部表示和分布式表示
1.4.2 表示學(xué)習(xí)
1.5 深度學(xué)習(xí)
1.5.1 端到端學(xué)習(xí)
1.5.2 常用的深度學(xué)習(xí)框架
1.6 本書的組織結(jié)構(gòu)
1.7 總結(jié)和深入閱讀
1.1 人工智能
人工智能(Artificial Intelligence, AI):人工智能就是要讓機器的行為看起來就像是人所表現(xiàn)出的智能行為一樣。——約翰·麥卡錫 (John McCarthy) 1956年的達特茅斯(Dartmouth)會議
阿蘭·圖靈(Alan Turing)發(fā)表了一篇有著重要影響力的論文《Computing Machinery and Intelligence》,討論了創(chuàng)造一種“智能機器”的可能性。由于“智能”一詞比較難以定義,他提出了著名的圖靈測試 。
目前,人工智能的主要領(lǐng)域大體上可以分為以下幾個方面:
感知 即模擬人的感知能力,對外部刺激信息(視覺和語音等)進行感知和加工。主要研究領(lǐng)域包括語音信息處理和計算機視覺(CV)等。
學(xué)習(xí) 即模擬人的學(xué)習(xí)能力,主要研究如何從樣例或與環(huán)境交互中進行學(xué)習(xí)。主要研究領(lǐng)域包括模式識別(Pattern Recognition)、監(jiān)督學(xué)習(xí)(supervised learning)、無監(jiān)督學(xué)習(xí)(Unsupervised Learning)和強化學(xué)習(xí)(Reinforcement Learning)等。
認(rèn)知 即模擬人的認(rèn)知能力,主要研究領(lǐng)域包括知識表示(knowledge representation)、自然語言處理(NLP)、推理、規(guī)劃、數(shù)據(jù)挖掘(Data mining)等。
我之前沒有了解過模式識別的東西,所以看了幾篇文章,在這里附上來:
什么是模式識別?、模式識別、知乎:模式識別專欄
這里還是比較推薦知乎的一些話題的,比如強化學(xué)習(xí)、NLP、CV、數(shù)據(jù)挖掘、強化學(xué)習(xí)等。
1.1.1 人工智能的發(fā)展歷史
“推理期”,“知識期”和“學(xué)習(xí)期”[周志華, 2016]
推理期:通過人類的經(jīng)驗,基于邏輯或者事實歸納出來一些規(guī)則,然后通過編寫程序來讓計算機完成一個任務(wù)。
知識期:對于一些復(fù)雜的任務(wù),需要專家來構(gòu)建知識庫。 專家系統(tǒng)可以簡單理解為“知識庫 +推理機”,是一類具有專門知識和經(jīng)驗的計算機智能程序系統(tǒng)。
學(xué)習(xí)期:對于人類的很多智能行為(比如語言理解、圖像理解等),我們很難知道其中的原理,也無法描述出這些智能行為背后的“知識”。 研究重點轉(zhuǎn)向讓計算機從數(shù)據(jù)中自己學(xué)習(xí)。

1.1.2 人工智能的流派
符號主義(Symbolism)是通過分析人類智能的功能,然后通過計算機來實現(xiàn)這些功能。可解釋性強。
符號主義有兩個基本假設(shè):(1)信息可以用符號來表示;(2)符號可以通過顯式的規(guī)則(比如邏輯運算)來操作。人類的認(rèn)知過程可以看作是符號操作過程。在人工智能的推理期和知識期,符號主義的方法比較盛行,并取得了大量的成果。
連接主義(Connectionism),在認(rèn)知科學(xué)領(lǐng)域,人類的認(rèn)知過程可以看做是一種信息處理過程。可解釋性弱。
連接主義認(rèn)為人類的認(rèn)知過程是由大量簡單神經(jīng)元構(gòu)成的神經(jīng)網(wǎng)絡(luò)中的信息處理過程,而不是符號運算。因此,連接主義模型的主要結(jié)構(gòu)是由大量的簡單的信息處理單元組成的互聯(lián)網(wǎng)絡(luò),具有非線性、分布式、并行化、局部性計算以及適應(yīng)性等特性 。
1.2 神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)是指由很多人工神經(jīng)元構(gòu)成的網(wǎng)絡(luò)結(jié)構(gòu)模型,這些人工神經(jīng)元之間的連接強度是可學(xué)習(xí)的參數(shù) 。
1.2.1 人腦神經(jīng)網(wǎng)絡(luò)
略。
1.2.2 人工神經(jīng)網(wǎng)絡(luò)
略。
1.2.3 神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史
第一階段:模型提出 1943~1969年。MP 模型 、感知機(Perceptron)。
第二階段:冰河期 1969年~1983年。反向傳播算法(Backpropagation)未被重視。
第三階段:反向傳播算法引起的復(fù)興 1983年~1995年 。玻爾茲曼機(Boltzmann Machine) 、反向傳播算法 。
第四階段:流行度降低 1995~2006年 。支持向量機和其他更簡單的方法(例如線性分類器)在機器學(xué)習(xí)領(lǐng)域的流行度逐漸超過了神經(jīng)網(wǎng)絡(luò)。
第五階段:深度學(xué)習(xí)的崛起 隨著大規(guī)模并行計算以及GPU設(shè)備的普及,計算機的計算能力得以大幅提高。
感知機(perceptron)是二分類的線性分類模型,輸入為實例的特征向量,輸出為實例的類別(取+1和-1)。感知機對應(yīng)于輸入空間中將實例劃分為兩類的分離超平面。感知機旨在求出該超平面,為求得超平面導(dǎo)入了基于誤分類的損失函數(shù),利用梯度下降法 對損失函數(shù)進行最優(yōu)化(最優(yōu)化)。
1.3 機器學(xué)習(xí)
機器學(xué)習(xí)(Machine Learning, ML)是指從有限的觀測數(shù)據(jù)中學(xué)習(xí)(或“猜測”)出具有一般性的規(guī)律,并將這些規(guī)律應(yīng)用到未觀測樣本上的方法。

數(shù)據(jù)預(yù)處理:經(jīng)過數(shù)據(jù)的預(yù)處理,如去除噪聲等。比如在文本分類中,去除停用詞等。 特征提取:從原始數(shù)據(jù)中提取一些有效的特征。比如在圖像分類中,提取邊緣、尺度不變特征變換(Scale Invariant Feature Transform,SIFT)特征等。 特征轉(zhuǎn)換:對特征進行一定的加工,比如降維和升維。降維包括特征抽取(Feature Extraction)和特征選擇(Feature Selection)兩種途徑。常用的特征轉(zhuǎn)換方法有主成分分析(Principal components analysis, PCA)、線性判別分析(Linear Discriminant Analysis)等。很多特征轉(zhuǎn)換方法也都是機器學(xué)習(xí)方法。 預(yù)測:機器學(xué)習(xí)的核心部分,學(xué)習(xí)一個函數(shù)進行預(yù)測。
尺度不變特征變換:是一種機器視覺的算法用來偵測與描述影像中的局部性特征,它在空間尺度中尋找極值點,并提取出其位置、尺度、旋轉(zhuǎn)不變數(shù)。
1.4 表示學(xué)習(xí)
為了提高機器學(xué)習(xí)系統(tǒng)的準(zhǔn)確率,我們就需要將輸入信息轉(zhuǎn)換為有效的特征,或者更一般性稱為表示(Representation)。
如果有一種算法可以自動地學(xué)習(xí)出有效的特征,并提高最終機器學(xué)習(xí)模型的性能,那么這種學(xué)習(xí)就是可以叫做表示學(xué)習(xí)(Representation Learning) 。
1.4.1 局部表示和分布式表示
一種表示顏色的方法是以不同名字來命名不同的顏色,這種表示方式叫做局部表示(Local Representation) ,也稱為離散表示或符號表示。局部表示通??梢员硎緸?one-hot向量的形式。
局部表示有兩個不足之處:
(1)one-hot 向量的維數(shù)很高,且不能擴展。如果有一種新的顏色,我們就需要增加一維來表示;
(2)不同顏色之間的相似度都為0,即我們無法知道“紅色”和“中國紅”的相似度要比“紅色”和“黑色”的相似度要高。
另一種表示顏色的方法是用 RGB值來表示顏色,不同顏色對應(yīng)到 R、 G、 B三維空間中一個點,這種表示方式叫做分布式表示(Distributed Representation) 。分布式表示通??梢员硎緸?strong>低維的稠密向量。
我們可以使用神經(jīng)網(wǎng)絡(luò)來將高維的局部表示空間 R|V| 映射到一個非常低維的分布式表示空間 Rd, d ? |V|。在這個低維空間中,每個特征不再是坐標(biāo)軸上的點,而是分散在整個低維空間中。在機器學(xué)習(xí)中,這個過程也稱為嵌入(Embedding)。比如自然語言中詞的分布式表示,也經(jīng)常叫做詞嵌入。
one-hot向量:這個向量只有一個特征是不為0的,其他都是0,特別稀疏。
1.4.2 表示學(xué)習(xí)
為了學(xué)習(xí)一種好的表示,需要構(gòu)建具有一定“深度”的模型,并通過學(xué)習(xí)算法來讓模型自動學(xué)習(xí)出好的特征表示(從底層特征,到中層特征,再到高層特征),從而最終提升預(yù)測模型的準(zhǔn)確率。所謂“深度”是指原始數(shù)據(jù)進行非線性特征轉(zhuǎn)換的次數(shù)。
連續(xù)多次的線性轉(zhuǎn)換等價于一次線性轉(zhuǎn)換。
1.5 深度學(xué)習(xí)
深度學(xué)習(xí)是機器學(xué)習(xí)的一個子問題,其主要目的是從數(shù)據(jù)中自動學(xué)習(xí)到有效的特征表示。

1.5.1 端到端學(xué)習(xí)
傳統(tǒng)機器學(xué)習(xí)方法需要將一個任務(wù)的輸入和輸出之間人為地切割成很多子模塊(或多個階段),每個子模塊分開學(xué)習(xí)。比如一個自然語言理解任務(wù),一般需要分詞、詞性標(biāo)注、句法分析、語義分析、語義推理等步驟。
這種學(xué)習(xí)方式有兩個問題:
一是每一個模塊都需要單獨優(yōu)化,并且其優(yōu)化目標(biāo)和任務(wù)總體目標(biāo)并不能保證一致。
二是錯誤傳播,即前一步的錯誤會對后續(xù)的模型造成很大的影響。這樣就增加了機器學(xué)習(xí)方法在實際應(yīng)用的難度。
端到端學(xué)習(xí)(End-to-End Learning),也稱端到端訓(xùn)練,是指在學(xué)習(xí)過程中不進行分模塊或分階段進行訓(xùn)練,直接優(yōu)化任務(wù)的總體目標(biāo)。
端到端學(xué)習(xí)最大的缺點就是它需要大量的數(shù)據(jù)??梢哉f是海量的數(shù)據(jù)才可以支撐起端到端的學(xué)習(xí)。
1.5.2 常用的深度學(xué)習(xí)框架
Theano、 Caffe、TensorFlow(Google)、Pytorch(Facebook)、Keras
兩篇關(guān)于pytorch和tensorflow的介紹
一文說清楚pytorch和tensorFlow的區(qū)別究竟在哪里
Pytorch VS Tensorflow
1.6 本書的組織結(jié)構(gòu)

1.7 總結(jié)和深入閱讀
略