深度學習建模訓練總結(二) 回顧全連線層和卷積層

2021-10-09 08:29:00 字數 1575 閱讀 4562

最近秋招要準備面試,所以我就想著回顧一下之前學過的內容,同時也想結合這些內容,談談如何構建模型和訓練優化模型。

之前簡單介紹了一下如何訓練模型,最後提到如果模型無法收斂,可能就要回到模型的結構進行分析,對於模型結構的分析,我認為有兩點需要考慮的,第一,我們的場景、問題有什麼需求,在構建模型的過程中是否需要根據這些需求設計合理的結構,第二,如何讓模型降低損失、提高測試集準確率。

當我們談論神經網路的結構時,有四個最經典也是最常用的結構:全連線層、卷積層、rnn和lstm,這次我就想談談我對全連線層和卷積層的一些想法。

對於全連線層,我覺得這真的是最簡單但是又最常用到的結構,用途很廣泛,比如做影象分類的時候,可以先從cnn提取特徵,最後壓成一維向量再用全連線層做分類,比如我最近做的生物資訊專案,我就用了全連線層對生物實體進行embedding。

在用到全連線層的時候,我主要考慮的問題就是,到底每一層的神經元數量怎麼設定,要設定多少神經層(隱藏層),關於這點,我想先展示幾個例子。

首先,我想介紹一下cover定理:將複雜的模式分類問題非線性地投射到高維空間將比投射到低維空間更可能是線性可分的。乙個很經典的例子:

對於左圖,我們是沒辦法用一條直線進行分類的,但是右圖我們可以用乙個平面實現效果較好的分類(不要誤認為線性可分就是用一條直線分類,應該是用x=3之類的式子作為乙個分類的依據,而x=3在二維空間表示為直線,在三維空間則表示為平面)。從這個例子我們就能看到,如果我們設定神經層的神經元數量比輸入層的數量少,模型的層數可能就需要設定更多,才能達到較好的效果,相反,可能如果我們設定神經元的數量多於輸入,就可能只需要一兩層就能實現較好的分類效果。

第二個例子,我想說的是word2vec,這是乙個word embedding演算法,詳細說比較麻煩,我們只需要知道它的輸入是乙個尺寸非常大的向量,比如10000,而第一層神經層,他設定的神經元數量一般是300,很明顯,它的乙個目的就是為了降維(除此之外還有其他目的)。

綜合上面兩個例子就能看出,其實用多少神經元,有時候是和實際情況相關的,也就是我一開始提到的,需要分析實際的場景、問題,根據實際情況進行判斷。而對於模型的層數,我一般會從模型收斂的效果出發進行調整,一般來說,我會先簡單寫幾層網路,看訓練效果,再調整、對比,觀察模型的損失、收斂的快慢、測試集的準確率等等指標,再進行分析判斷。

說完全連線層,再來看看卷積層,和全連線層相比,卷積層既能處理一維資料(使用1*n的卷積核),也能處理高維資料,所以一般來說,對於一維以上的資料我都是使用卷積層處理分析,但是卷積層也有他的缺點,和全連線層相比,全連線層處理的是完整的輸入,而卷積核每次計算的都是區域性的資料,這就導致了,卷積核對於全域性特徵的提取能力較弱(關於這一點之前的文章我有詳細的介紹,當然,也可以構建深層網路,但是也要考慮訓練資料是否足夠,是否存在梯度消失等問題),除此之外,我覺得更直觀的乙個問題是使用了卷積層會導致訓練和推理的速度變慢,而且隨著層數增多越明顯。

對於全連線層和卷積層,能夠深入**的內容不多,但我認為這兩個結構真的可以稱得上是神經網路的起點和精髓,後續的發展,其實目的只要有兩個,乙個是改善多層神經網路的梯度**(消失)問題,另乙個是對於某些問題,需要修改模型的結構才能進行分析(比如變長序列的處理、目標檢測)。

機器學習第二回 矩陣部分總結

感覺這一回的前半部分還很簡單,屬於矩陣的基本操作,所以進行乙個簡單的總結,可能隨著學習的深入還會補充 矩陣 通常用大寫字母表示,而數字的表示通常使用小寫字母 在本課程中,下標都從1開始。向量 單列矩陣,通常是n 1階,向量的行數也稱為維數。對應序號位置的元素相加即可 做加法的兩個矩陣的維數必須相同 ...

學生資訊管理系統總結(二) 回首需求分析,建模

在敲學生的過程中沒有好好總結,一開始也不知道該怎麼總結才好,所以總結的就特別亂,不過在後面又看到同學們的部落格,總結的都很好,期中包括遇到的錯誤,還有優化過程的總結,茅塞頓開的感覺,站在巨人的肩膀上學習,會看的更遠。下面是我在敲機房的過程中,再回頭看學生資訊管理系統的時候的理解,感覺so easy ...

JS學習筆記 (二)回流和重繪

在搞清楚回流和重繪的概念之前,我們要清除瀏覽器的渲染過程。解析生成dom tree 此時包含所有節點,包括display none 根據css object module ccssom 計算節點的幾何屬性 座標和大小 margin,pading,height,width等 生成render tree...