深度學習導論 - 讀李巨集毅《1天搞懂深度學習》
先引用他人關於李巨集毅教授關於深度學習導論的PPT,應該非常容易入門。
”《1天搞懂深度學習》,300多頁的ppt,臺灣李巨集毅教授寫的,非常棒。不誇張地說,是我看過最系統,也最通俗易懂的,關於深度學習的文章。“
這是slideshare的連結:
http://www.slideshare.net/tw_dsconf/ss-62245351?qid=108adce3-2c3d-4758-a830-95d0a57e46bc&v=&b=&from_search=3
沒梯子的同學,可以從我的網盤下:
連結:http://pan.baidu.com/s/1nv54p9R
![](http://images2015.cnblogs.com/blog/746857/201702/746857-20170227234910579-838357543.png)
深度學習概論
介紹深度學習
作者非常淺顯的指出機器(深度)學習過程非常簡單,分為定義方法、判斷方法的優劣、挑選出最佳的方法。
對於深度學習,首先第一步定義方法 - 神經網路。深度學習顧名思義是指多層的神經網路。
神經網路的思想來源於對於人腦的生理上的研究,人腦由數億個神經元組成,神經元通過軸突互相連線通訊。神經網路和人腦類似,存在多個層級(layer),每個層級都有多個節點(神經元),層級和層級之間相互連線(軸突),最終輸出結果。
對於神經網路的計算能力可以理解為通過一層層Layer的計算歸納,逐步的將抽象的原始資料變的具體。以圖片識別為例,輸入是一個個畫素點,經過每層神經網路,逐步變化成為線、面、物件的概念,然後機器有能力能夠識別出來。
藍色Neuron的output都接給紅色的Neuron,紅色的都接給綠色,綠色成為整個network 輸出,藍色前面是整個network的輸入。
network structure設定不同的引數,得到不同的function,把可能得function集合起來,得到一個function set。
黃色矩陣為Weight,藍色矩陣為vector,綠色為bias,再通過δ
所有的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?
作者首先指出越多的引數往往帶來越好的預測能力,所以神經網路往往引數越多越好。那麼如果是同樣的引數情況下,為什麼層級較多的表現會更好呢?
作者認為深度網路可以帶來模組化的好處,隨著網路的層級,神經網路會將畫素元素逐漸歸納出一些基本的特徵,進而變成紋理,進而變成物件。
訓練方法
![](http://images2015.cnblogs.com/blog/746857/201703/746857-20170301220625141-387786433.png)
作者總結下來訓練過程中會發現了兩種情況:
1. 沒有辦法得到很好的訓練結果 ---》 重新選擇訓練方式
2. 沒有辦法得到很好的測試結果 ---》 往往由於過度擬合導致,需要重新定義方法
![](http://images2015.cnblogs.com/blog/746857/201703/746857-20170301221734751-771825099.png)
優化訓練方法的手段:
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. 無需人工介入理解文字的含義