日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

“一天搞懂深度学习”笔记

發(fā)布時間:2023/12/10 pytorch 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 “一天搞懂深度学习”笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

“一天搞懂深度學(xué)習(xí)”筆記

1. A brief Introduction of Deep Learning

1.1 Introduction of Deep Learning

  • Neuron
![在這里插入圖片描述](https://img-blog.csdnimg.cn/20190109113921652.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3l1ZWd1aXpoaWxpbg==,size_16,color_FFFFFF,t_70)

權(quán)重和偏置稱為神經(jīng)元的參數(shù),區(qū)別于神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù),如神經(jīng)元個數(shù),隱含層層數(shù),網(wǎng)絡(luò)連接方式等,網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)是超參之一, 需要人為根據(jù)經(jīng)驗設(shè)置。

  • 全連接前饋神經(jīng)網(wǎng)絡(luò)

深度意味神經(jīng)網(wǎng)絡(luò)具有多個隱含層。

神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)確定了一個函數(shù)集(函數(shù)空間),特定的神經(jīng)元參數(shù)確定了函數(shù)集中一個函數(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)就是尋找一個使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 ?

實驗證明,網(wǎng)絡(luò)參數(shù)的增多,網(wǎng)絡(luò)性能提升。

任何復(fù)雜函數(shù)均能由單隱含層的網(wǎng)絡(luò)擬合出來。

網(wǎng)絡(luò)參數(shù)的增多可以通過“廣度學(xué)習(xí)”和“深度學(xué)習(xí)”的方式實現(xiàn),哪一種方式更好呢?

在編程中,我門通過定義子函數(shù),實現(xiàn)復(fù)雜函數(shù)模塊化,模塊化的好處是子模塊實現(xiàn)簡單、子模塊可以共用、高層調(diào)度實現(xiàn)復(fù)雜功能且形式簡潔高效(main 函數(shù)形式通常是elegant的).類似的,我們說深度學(xué)習(xí)實現(xiàn)了模塊化Modularization

假設(shè)我們有一個圖像分類任務(wù),若按照上圖方式訓(xùn)練各個分類器,則因為長發(fā)男數(shù)據(jù)較少,則 Classifier 2 的性能就較為 weak.

若我們先訓(xùn)練兩個基分類器,則兩個基分類器因為有足夠數(shù)據(jù),可以訓(xùn)練得相當(dāng)好。然后將它們視作module,第二層的每個分類器只需去 call 第一層的兩個共用 modules 的 output ,就可以實現(xiàn)每個分類器的任務(wù)。所以雖然長頭發(fā)男生的數(shù)據(jù)依然較少,此時 Classifier 2 的性能卻比較 strong.

在 Deep learnin 中,第一層的每個神經(jīng)元是最 basic 的 classifier ,第二層 將第一層的 classifier 當(dāng)做 module 去實現(xiàn)復(fù)雜的 classifier ,以此類推。
故 deep learning 的好處是: 實現(xiàn)模組化后,每個模塊會變得簡單,所需訓(xùn)練數(shù)據(jù)較少。(這與人們津津樂談的 AI = 深度學(xué)習(xí)+人工智能 的說法不同)

關(guān)于why deep 的直觀實例,可以參看油管上一個很好的視頻:
But what is a Neural Network? | Chapter 1, deep learning

2.Tips for Training Deep Neural Network

當(dāng)我們訓(xùn)練兩個分別為56層和20層的網(wǎng)絡(luò)時,在測試集上的表現(xiàn)如右圖所示,我門無法根據(jù) 20-layer 的損失曲線在 56-layer 的下方 ,就得出56-layer 的網(wǎng)絡(luò)已經(jīng)過擬合了。因為觀察左圖兩者在訓(xùn)練集上的損失曲線,我們發(fā)現(xiàn),56 layer 的網(wǎng)絡(luò)性能居然弱于 20-layer, 這是不合理的,因為我們只要將56- layer 的網(wǎng)絡(luò)前20 層參數(shù)與 20-layer保持一致,則損失曲線便與20-layer identity . 所以根據(jù)在訓(xùn)練集上的損失曲線表現(xiàn)看,我們對56-layer 的網(wǎng)絡(luò)訓(xùn)練得還不夠好,可能落入了局部最優(yōu)。

所以我們得根據(jù)網(wǎng)絡(luò)在訓(xùn)練集上的表現(xiàn)和在測試集上的表現(xiàn),對癥下藥。例如drop out 就是針對網(wǎng)絡(luò)在測試集上的表現(xiàn)較差使用的技術(shù)。


2.1 train set: choosing proper loss


當(dāng)我們使用softmax輸出層時,我們傾向于使用交叉熵?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)行并行運算后,在相同時間內(nèi),batchsize = 1和batchsize =10,參數(shù)的更新總次數(shù)是相近的,但是batchsize = 10 時更穩(wěn)定,收斂地更快。
當(dāng)batchsize 過大時,則一方面超出了GPU硬件并行能力,另一方面,此時去train 網(wǎng)絡(luò)時會經(jīng)常進(jìn)入鞍點或局部極小值而無法逃離,訓(xùn)練過程中止,performance 下降,所以引入隨機(jī)性是必要的,有助于逃離局部最優(yōu)和鞍點。


2.3 train set: New activation function



  • ReLU

使用ReLU的好處是:
計算快速,激活機(jī)制與生理類似,相當(dāng)于無窮多個加權(quán)sigmoid函數(shù)加權(quán),可以防止梯度消失。


使用ReLU后,網(wǎng)絡(luò)變成輕量的線性網(wǎng)絡(luò),并且這個線性網(wǎng)絡(luò)隨著輸入input的不同而不同,相當(dāng)于用多個線性網(wǎng)絡(luò)去逼近一個復(fù)雜網(wǎng)絡(luò)

  • Maxout
    Maxout 方法認(rèn)為每個神經(jīng)元的激活函數(shù)是可以學(xué)習(xí)的

在maxout 的隱層中的一個神經(jīng)元(圖中的紅色框)需要比普通網(wǎng)絡(luò)的神經(jīng)元多學(xué)習(xí)一倍參數(shù),或者多倍(取決于在一個group 中的元素個數(shù),一個group 中的元素個數(shù)人為指定)

上圖指出,ReLU是maxout學(xué)習(xí)到的激活函數(shù)中的一個特例, 即在Maxout 中學(xué)習(xí)到的參數(shù)為w,b,0,0時,則此時神經(jīng)元的激活函數(shù)就等于ReLU。

學(xué)習(xí)到一個神經(jīng)元的參數(shù)都非零時,則激活函數(shù)為上圖形式。

maxout 可以學(xué)習(xí)到的激活函數(shù)為任意的分段線性凸函數(shù),分段數(shù)目取決于一個group中的elementshumu


與ReLU一樣,給定一個input,網(wǎng)絡(luò)將變成一個線性網(wǎng)絡(luò),并且這個線性網(wǎng)絡(luò)隨著input的不同而改變。給定一個input,我們可以對這個線性網(wǎng)絡(luò)進(jìn)行訓(xùn)練,更新部分參數(shù),再給定一個input,我們可以對產(chǎn)生的另一個線性網(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對過去梯度平方和做了加權(quán)衰減。

  • Momentum


  • Adam

2.6 test set: early stopping

early stopping其實是在控制epochs的大小

2.7 test set : Regularization





在神經(jīng)網(wǎng)絡(luò)優(yōu)化中,正則項技術(shù)其實與early stopping 的功能是近似重疊的。考慮網(wǎng)絡(luò)參數(shù)初始化為接近零的值,隨著更新次數(shù)的增加,參數(shù)會越來越偏離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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。