【第一部分】視頻學習心得及問題總結
1.視頻學習心得
藺一迪:老師在第一節中首先介紹了深度學習的一些數學基礎包括線性代數中矩陣線性變化、秩的概念,以及低秩近似等內容,還講述了損失函數、誤差函數等內容。
第二節中,講述了卷積網絡。新的神經網絡的提出必然能夠解決一些現有問題,因為傳統神經網絡權重矩陣的參數過多,會導致過擬合現象,因此提出了卷積神經網絡。卷積網絡由卷積層、池化層以及全連接層組成。而卷積網絡有很多層,層數越深,就越抽象,不同卷積層關注不同的地方。總體感覺是隨着深度的增加,成一個從大到小 從整體到部分的趨勢。之后講述了幾個典型的卷積網絡,這里我想主要理解Alexnet,Alexnet基於之前的網絡有以下幾個優點:
1 防止過擬合:dropout隨機關閉部分神經元
2 解決梯度消失問題:ReLU激活函數收斂速度快,可以解決Sigmoid函數帶來的梯度消失問題
3 數據增強:通過平移、翻轉、對稱等方法將樣本倍增,從而擁有更多數據
盧浩:1.卷積是對兩個實變函數的一種數學操作;2.卷積不易過擬合;3.分類任務中往往最大值池化比平均值池化效果好。
俞子君:卷積網絡神經是圖像處理方面的核心算法之一。比起傳統神經網絡來說,卷積神經網絡有更多層組成,不同層之間關注地方不同,提高了學習的精確度,同時也提升了學習的效果。在聽的過程中,對於思想有一定了解,但對於具體函數,理解起來還是有些困難。
李劍飛:通過本次視頻的學習,我了解到了深度學習是需要通過概率學來得到規律,通過數據結構來優化模型。所以如果想要專研深度學習,需要具備很好的數學基礎。第二個視頻是關於卷積神經網絡的,它不僅解決了我上一次作業中對於卷及神經相關的問題,同時讓我了解了CNN的原理和基礎結構:由卷積和池化互相交替,最后加上全連接(大部分參數量都在全連接中)。同時讓我了解到了典型網絡結構的發展史和各個階段代表結構的原理(從AlexNet到VGG又到GoogleNet再到ResNet),在層數不斷增加的情況下仍然能保證不會出現梯度消失的情況,並且將top5的誤差率從16.7%下降到最后的3%左右。不得不再一次佩服這些大佬的智慧。
林思源:對神經網絡的實現原理有了基本的理解,對卷積神經網絡和傳統神經網絡的異同和優缺點也有了了解。對於卷積神經網絡,我的理解是相對於傳統的全連接神經網絡,卷積神經網絡相對於是做了優化,通過池化的操作提取出特征信息的同時還減少了參數,加快了訓練速度,而且對於防止過擬合有一定的作用。
2.問題總結
俞子君:過擬合的出現原因。
藺一迪:1 為什么參數越多,就會過擬合(我的理解是:參數越多,考慮的細節也就越多,比如課程中講到訓練圖像是哈士奇,但是測試集放入金毛時就推出不是狗的結果,因為過於細節化,不夠泛化)
2 該怎樣設置步長stride呢?(是按照往常經驗亦或有什么規律)
李劍飛:越深的網絡越難訓練嗎?如果用Resnet的方法來解決梯度消失的問題,是不是可以無限制的加深層數?
林思源:卷積神經網絡結構的結構及其作用,結構的變化對最終的訓練結果會造成什么差異。
李瑞濤:
AlexNet分層解析這部分有點梳理不清
【第二部分】代碼練習
俞子君:
1.卷積神經網絡
可以明顯看出來在卷積神經網絡上的訓練要好於在小型全連接網絡上的訓練。
但是打亂像素順序后,可以看出卷積神經網絡的卷積和池化難以發揮他該有的作用,甚至比小型犬連接網絡的訓練效果還差。
2.數據分類
有一個識別錯誤,准確率尚可
3.用VGG16進行分類
用VGG網絡后,准確率確實提高了。
李劍飛:
*1.MNIST 數據集分類*
*1.3.在小型全連接網絡上訓練*
*1.4.在卷積神經網絡上訓練*
通過上面的測試結果,可以發現:含有相同參數的 CNN 效果要明顯優於簡單的全連接網絡。(卷積和池化)
*1.5.打亂像素順序再次在兩個網絡上訓練與測試*
在全連接網絡上訓練與測試:
在卷積神經網絡上訓練與測試:與上面相比較可以看出,在打亂順序之后的訓練和測試中全連接網絡的效果更好。
*2.CIFAR10 數據集分類*
*2.3.測試*
從測試集中取出8張圖片:
把圖片輸入模型,看看CNN對圖片的識別結果:
看看網絡在整個數據集上的表現:(准確率還可以,通過改進網絡結構,性能還可以進一步提升)
3. *使用 VGG16 對 CIFAR10 分類*
*3.3.網絡訓練*
使用一個簡化版的 VGG 網絡,就能夠顯著地將准確率由 63%,提升到 83.94%:
*4.感受和總結:*
通過三個實驗,讓我們體驗到了從最簡單的全連接網絡到卷積神經網絡到VGG16的實施以及效率逐步提升。讓我對於之前的視頻學習有了一個更具體形象的理解,能大概理解代碼的意思和內容,但是靠自己依然無法寫出(很多庫和函數的調用並不是很會)。希望能夠慢慢進步!
盧浩:
- 卷積神經網絡
通過卷積和池化,卷積神經網絡的效果明顯優於簡單的全連接網絡
打亂后卷積神經網絡的性能明顯下降,兒全連接網絡性能幾乎沒有變化
-
CIFAR10 數據集分類
考慮到這些圖片連我都認不出來,這些識別結果還不錯
3.使用 VGG16 對 CIFAR10 分類
太對辣!真的顯著提高了准確率
藺一迪:
*1. MINIST數據集分類*
1 觀察CNN網絡結構,發現是以下結構:卷積conv1-relu函數-池化pool、卷積conv2-relu函數-池化pool、全連接層-relu、全連接層-softmax
2 transforms.Normalize((0.1307,),(0.3081,))])),batch_size=1000,shuffle=True)
這是標准化的過程,需要將數據加工成:(Data-均值)/標准差,從而加快神經網絡訓練其中均值為0.1307,方差為0.3081。
3 代碼的步驟總結
1)通過train_loader = torch.utils.data.DataLoader下載數據
2)通過class CNN(nn.Module):創建一個CNN網絡,將卷積、全連接、池化連接起來
3)訓練函數def train(model):以及測試函數def test(model):在訓練函數中計算梯度、損失函數;在測試函數中得到正確預測結果的數量
4)分別在小型全連接網絡與卷積神經網絡中訓練函數,最終得到訓練效果
5) 加入data = perm_pixel(data, perm)函數打亂數字順序再進行訓練
4 對比小型全連接網絡與卷積神經網絡,我們可以看出卷積神經網絡有明顯的優勢,loss值更小,訓練效果更好。
小型全連接網絡loss值
卷積神經網絡loss值
*2.CIFAR10數據集分類*
3 訓練效果
給出一組圖片及其標簽
網絡得到的結果,仍有一些差距,最終在整個數據集中正確率達64%。
*3.使用 VGG16 對 CIFAR10 分類*
這里代碼出現了兩個錯誤
首先是定義self.cfg在函數VGG內部,其實應該在外部
其次報錯RuntimeError: mat1 dim 1 must match mat2 dim 0,發現是圖像大小不一樣的原因
最后解決錯誤后得到最終結果,正確率為83.49%。
林思源:
1.MNIST數據集分類:
小型全連接網絡上訓練正確率達到89%
卷積神經網絡上訓練正確率達到95%,以上說明卷積網絡相對於全連接網絡的提征和泛化能力更好。
在打亂像素之后,全連接神經網絡正確率浮動不大,基本保持一致。
卷積神經網絡正確率下降較多,是因為在打亂像素后,訓練集相較之前的特征性弱了很多。但全連接網絡仍然能最大程度提取像素關系,而卷積網絡只能利用較弱的像素局部關系。
2.CIFAR10數據集分類:
經過訓練之后,實際上錯誤率還是比較高,預測的八個選集中錯了三個。
最終的正確率是61%。
3.VGG16對CIFAR10分類:
由於連不到GPU,又到了ddl,暫且認為實驗結果和預期一樣,正確率達到84%左右。
相較於CNN結構的分類,VGG16在正確率上有顯著提升,由上所述,對於網絡結構對結果的影響還不太明白,所以不知道為什么。
李瑞濤: