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