1. 程式人生 > >深度學習導論 - 讀李巨集毅《1天搞懂深度學習》

深度學習導論 - 讀李巨集毅《1天搞懂深度學習》


 

先引用他人關於李巨集毅教授關於深度學習導論的PPT,應該非常容易入門。

”《1天搞懂深度學習》,300多頁的ppt,臺灣李巨集毅教授寫的,非常棒。不誇張地說,是我看過最系統,也最通俗易懂的,關於深度學習的文章。“

這是slideshare的連結:

沒梯子的同學,可以從我的網盤下:
連結:

 密碼:3mty

廢話少說,先上乾貨,整個PPT的思維導圖如下:  

深度學習概論

介紹深度學習

作者非常淺顯的指出機器(深度)學習過程非常簡單,分為定義方法、判斷方法的優劣、挑選出最佳的方法。

對於深度學習,首先第一步定義方法 - 神經網路。深度學習顧名思義是指多層的神經網路。

神經網路的思想來源於對於人腦的生理上的研究,人腦由數億個神經元組成,神經元通過軸突互相連線通訊。神經網路和人腦類似,存在多個層級(layer),每個層級都有多個節點(神經元),層級和層級之間相互連線(軸突),最終輸出結果。

對於神經網路的計算能力可以理解為通過一層層Layer的計算歸納,逐步的將抽象的原始資料變的具體。以圖片識別為例,輸入是一個個畫素點,經過每層神經網路,逐步變化成為線、面、物件的概念,然後機器有能力能夠識別出來。


藍色Neuron的output都接給紅色的Neuron,紅色的都接給綠色,綠色成為整個network 輸出,藍色前面是整個network的輸入。

network structure設定不同的引數,得到不同的function,把可能得function集合起來,得到一個function set。

 

黃色矩陣為Weight,藍色矩陣為vector,綠色為bias,再通過δ

函式(例如δ是行為function)得到最後的結果

 所有的x(vector)、weight、bias各自組成一個矩陣,再通過δ函式得到a1,a1作為一個output(成為x的位置)重複這樣的運算到最後一層,得到整個network的輸出。


Neural Network實際上做的事情是,一連串的矩陣運算,寫出這樣的好處是可以用GPU加速。


把一個x通過很多個Hidden Layers,把最後一個Hidden Layers的output想成一組新的feature,而output Layer

做的事情是multi-class classifier(多類分類器)——拿前一個Layer的Output當作feature,x經過很多個Hidden Layers和 複雜的轉換後,抽出一組特別好的feature



假定做數字圖片的識別,定一個圖片是16*16=256個vector,通過network輸出我們y1~y10,它們對應1~10(output多少個,設定多少個neuron和layers?)

第二步,評估方法的優劣。

Loss function是用於評估方法優劣,通常我們用學習出來的引數對測試資料進行計算,得出對應的預測(y)然後和真實的測試資料的目標值(t)進行比對,y和t之間的差距往往就是Loss。那麼評估一個演算法的好壞,就是要儘可能的降低Loss。

 

第三步,如何獲得最佳的學習方法

獲得最佳的學習是採用梯度下降演算法,作者也提到梯度下降演算法存在區域性最優解的問題。人們往往認為機器無所不能,實際上更像是在一個地圖上面拓荒,對周邊一無所知。神經網路計算梯度的演算法是反向傳播演算法,簡稱BP。

 

Why Deep?

作者首先指出越多的引數往往帶來越好的預測能力,所以神經網路往往引數越多越好。那麼如果是同樣的引數情況下,為什麼層級較多的表現會更好呢?

 

作者認為深度網路可以帶來模組化的好處,隨著網路的層級,神經網路會將畫素元素逐漸歸納出一些基本的特徵,進而變成紋理,進而變成物件。

 

訓練方法

 

作者總結下來訓練過程中會發現了兩種情況:

1. 沒有辦法得到很好的訓練結果 ---》 重新選擇訓練方式

2. 沒有辦法得到很好的測試結果 ---》 往往由於過度擬合導致,需要重新定義方法

 

 

優化訓練方法的手段:

1. 選擇合適的Loss function:使用Cross Entropy效果要優於Mean Square Error

2. Mini-batch: 每次訓練使用少量資料而不是全量資料效率更高

3. Activation Function:使用ReLU替代Sigmoid可以解決梯度消失的問題,可以訓練更深的神經網路

4. Adaptive Learning Rate:可以隨著迭代不斷自我調整,提高學習效率

5. Momentum: 可以一定程度上避免陷入區域性最低點的問題

 

避免過度擬合(overfitting)的方法:

1. Early Stopping:使用cross validation的方式,不斷對validation data進行檢驗,一旦發現預測精度下降則停止。

2. Weight Decay:引數正則化的一種方式?

3. Dropout:通過隨機去掉一些節點的連線達到改變網路形式,所以會產生出多種網路形態,然後彙集得到一個最佳結果

4. Network Structure: 例如CNN等其他形態的網路

 

神經網路變體

Convolutional Neural Network (CNN)

通常情況下,一個CNN包含多次的卷積、池化,然後Flatten,最終再通過一個深度神經網路進行學習預測。CNN在影象、語音識別取得非常好的成績,核心的想法在於一些物體的特徵往往可以提取出來,並且可能出現在圖片的任何位置,而且通過卷積、池化可以大大減少輸入資料,加快訓練效率。

 

Recurrent Neural Network (RNN)

RNN的想法是可以將hidden layer的資料儲存下來,然後作為輸入給下一個網路學習。這種網路的想法可以解決自然語言中前後詞語是存在關聯性的,所以RNN可以把這些關聯性放到網路中進行學習。

 

其他前沿技術

Ultra Deep Network:2015年出現了152層的Residual Net實現了圖片3.57%錯誤率

 

Reinforcement Learning: 通過獎勵機制強化學習,並且做出相應的動作

Unsupervised Learning:

1. Deep Style

2. 生成圖片

 

3. 無需人工介入理解文字的含義