“一天搞懂深度学习”笔记
“一天搞懂深度學習”筆記
1. A brief Introduction of Deep Learning
1.1 Introduction of Deep Learning
- Neuron
權重和偏置稱為神經元的參數,區別于神經網絡結構參數,如神經元個數,隱含層層數,網絡連接方式等,網絡結構參數是超參之一, 需要人為根據經驗設置。
- 全連接前饋神經網絡
深度意味神經網絡具有多個隱含層。
神經網絡結構確定了一個函數集(函數空間),特定的神經元參數確定了函數集中一個函數。
- soft max 輸出層
softmax 輸出層將網絡輸出值歸一化到[0,1), softmax 層的輸出可解釋成輸入vector 屬于不同類的概率值。
- loss function
loss 可以衡量網絡輸出和期望輸出的距離。在網絡結構超參確定的情況下,我們的目標就是尋找一個使loss最小的函數,最終目標轉化為:通過訓練數據,以最小化 loss 函數為目標,尋找最佳神經元參數。
- 網絡優化算法:尋找最佳神經元參數
基于梯度下降法的BP算法
1.2 why deep ?
實驗證明,網絡參數的增多,網絡性能提升。
任何復雜函數均能由單隱含層的網絡擬合出來。
網絡參數的增多可以通過“廣度學習”和“深度學習”的方式實現,哪一種方式更好呢?
在編程中,我門通過定義子函數,實現復雜函數模塊化,模塊化的好處是子模塊實現簡單、子模塊可以共用、高層調度實現復雜功能且形式簡潔高效(main 函數形式通常是elegant的).類似的,我們說深度學習實現了模塊化Modularization
假設我們有一個圖像分類任務,若按照上圖方式訓練各個分類器,則因為長發男數據較少,則 Classifier 2 的性能就較為 weak.
若我們先訓練兩個基分類器,則兩個基分類器因為有足夠數據,可以訓練得相當好。然后將它們視作module,第二層的每個分類器只需去 call 第一層的兩個共用 modules 的 output ,就可以實現每個分類器的任務。所以雖然長頭發男生的數據依然較少,此時 Classifier 2 的性能卻比較 strong.
在 Deep learnin 中,第一層的每個神經元是最 basic 的 classifier ,第二層 將第一層的 classifier 當做 module 去實現復雜的 classifier ,以此類推。
故 deep learning 的好處是: 實現模組化后,每個模塊會變得簡單,所需訓練數據較少。(這與人們津津樂談的 AI = 深度學習+人工智能 的說法不同)
關于why deep 的直觀實例,可以參看油管上一個很好的視頻:
But what is a Neural Network? | Chapter 1, deep learning
2.Tips for Training Deep Neural Network
當我們訓練兩個分別為56層和20層的網絡時,在測試集上的表現如右圖所示,我門無法根據 20-layer 的損失曲線在 56-layer 的下方 ,就得出56-layer 的網絡已經過擬合了。因為觀察左圖兩者在訓練集上的損失曲線,我們發現,56 layer 的網絡性能居然弱于 20-layer, 這是不合理的,因為我們只要將56- layer 的網絡前20 層參數與 20-layer保持一致,則損失曲線便與20-layer identity . 所以根據在訓練集上的損失曲線表現看,我們對56-layer 的網絡訓練得還不夠好,可能落入了局部最優。
所以我們得根據網絡在訓練集上的表現和在測試集上的表現,對癥下藥。例如drop out 就是針對網絡在測試集上的表現較差使用的技術。
2.1 train set: choosing proper loss
當我們使用softmax輸出層時,我們傾向于使用交叉熵損失函數。原因是:相較平方損失函數,交叉熵損失函數的地貌更加陡峭,梯度更大,更不容易陷入局部最優。
[圖片上傳中...(image.png-60b999-1518163976905-0)]
2.2 train set: Mini-batch
若batchsize 為1,就成為了隨機梯度下降。
但我們一般不將batchsize 設為1.從上面PPT 可以看出,在使用GPU 進行并行運算后,在相同時間內,batchsize = 1和batchsize =10,參數的更新總次數是相近的,但是batchsize = 10 時更穩定,收斂地更快。
當batchsize 過大時,則一方面超出了GPU硬件并行能力,另一方面,此時去train 網絡時會經常進入鞍點或局部極小值而無法逃離,訓練過程中止,performance 下降,所以引入隨機性是必要的,有助于逃離局部最優和鞍點。
2.3 train set: New activation function
- ReLU
使用ReLU的好處是:
計算快速,激活機制與生理類似,相當于無窮多個加權sigmoid函數加權,可以防止梯度消失。
使用ReLU后,網絡變成輕量的線性網絡,并且這個線性網絡隨著輸入input的不同而不同,相當于用多個線性網絡去逼近一個復雜網絡
- Maxout
Maxout 方法認為每個神經元的激活函數是可以學習的
在maxout 的隱層中的一個神經元(圖中的紅色框)需要比普通網絡的神經元多學習一倍參數,或者多倍(取決于在一個group 中的元素個數,一個group 中的元素個數人為指定)
上圖指出,ReLU是maxout學習到的激活函數中的一個特例, 即在Maxout 中學習到的參數為w,b,0,0時,則此時神經元的激活函數就等于ReLU。
學習到一個神經元的參數都非零時,則激活函數為上圖形式。
maxout 可以學習到的激活函數為任意的分段線性凸函數,分段數目取決于一個group中的elementshumu
與ReLU一樣,給定一個input,網絡將變成一個線性網絡,并且這個線性網絡隨著input的不同而改變。給定一個input,我們可以對這個線性網絡進行訓練,更新部分參數,再給定一個input,我們可以對產生的另一個線性網絡進行訓練,更新部分參數。所以雖然max操作不好求導,但是采用maxout的網絡仍然是可以train 的。
2.4 train set: Adaptive Learning Rate
- Adagrad
- RMSprop
與Adagrad 只有略微的不同,RMSprop對過去梯度平方和做了加權衰減。
- Momentum
- Adam
2.6 test set: early stopping
early stopping其實是在控制epochs的大小
2.7 test set : Regularization
在神經網絡優化中,正則項技術其實與early stopping 的功能是近似重疊的。考慮網絡參數初始化為接近零的值,隨著更新次數的增加,參數會越來越偏離0。所以如果參數更新次數較小,參數偏離0的程度下降,而early stopping 就是為了控制epochs 的大小。正則化技術目的也是希望參數越接近零越好。所以說兩者的功能是近似的。
2.8 test set: Dropout
dripout 有效性的解釋:
3.Variants of Neural Network
3.1 Convolutional Neural Network (CNN)
3.2 Recurrent Neural Network (RNN)
4.Next Wave
4.1Supervised Learning
4.1.1 Ultra Deep Network
4.1.2 Attention Model
4.2 Reinforcement Learning
4.3 Unsupervised Learning
4.3.1 Image: Realizing what the World Looks Like
4.3.2 Text: Understanding the Meaning of Words
4.3.3 Audio: Learning human language without supervision
參考資料
一天搞懂深度學習
</div></div> </div>總結
以上是生活随笔為你收集整理的“一天搞懂深度学习”笔记的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 组件传参
- 下一篇: 一文搞懂深度学习中常用的优化算法