Paddle帶你零基礎入門深度學習 二

2021-10-23 16:42:46 字數 3246 閱讀 5709

二、影象分類

卷積神經網路是目前計算機視覺中使用最普遍的模型結構。下面主要介紹卷積神經網路的一些基礎模組,包括:

卷積(convolution)

池化(pooling)

relu啟用函式

批歸一化(batch normalization)

丟棄法(dropout)

卷積計算

卷積是數學分析中的一種積分變換的方法,在影象處理中採用的是卷積的離散形式。這裡需要說明的是,在卷積神經網路中,卷積層的實現方式實際上是數學中定義的互相關 (cross-correlation)運算,與數學分析中的卷積定義有所不同,這裡跟其他框架和卷積神經網路的教程保持一致,都使用互相關運算作為卷積的定義,具體的計算過程如下圖所示。

輸出特徵圖上每個點的數值,是由輸入上大小為h×w的區域的元素與卷積核每個元素相乘再相加得到的,所以輸入影象上h×w區域內每個元素數值的改變,都會影響輸出點的畫素值。我們將這個區域叫做輸出特徵圖上對應點的感受野。感受野內每個元素數值的變動,都會影響輸出點的數值變化。比如3×3卷積對應的感受野大小就是3×3。

批歸一化方法(batch normalization,batchnorm)是由ioffe和szegedy於2023年提出的,已被廣泛應用在深度學習中,其目的是對神經網路中間層的輸出進行標準化處理,使得中間層的輸出更加穩定。

通常我們會對神經網路的資料進行標準化處理,處理後的樣本資料集滿足均值為0,方差為1的統計分布,這是因為當輸入資料的分布比較固定時,有利於演算法的穩定和收斂。對於深度神經網路來說,由於引數是不斷更新的,即使輸入資料已經做過標準化處理,但是對於比較靠後的那些層,其接收到的輸入仍然是劇烈變化的,通常會導致數值不穩定,模型很難收斂。batchnorm能夠使神經網路中間層的輸出變得更加穩定,並有如下三個優點:

使學習快速進行(能夠使用較大的學習率)

降低模型對初始值的敏感性

從一定程度上抑制過擬合

batchnorm主要思路是在訓練時按mini-batch為單位,對神經元的數值進行歸一化,使資料的分布滿足均值為0,方差為1。具體計算過程如下:

lenet是最早的卷積神經網路之一[1]。2023年,yan lecun第一次將lenet卷積神經網路應用到影象分類上,在手寫數字識別任務中取得了巨大成功。lenet通過連續使用卷積和池化層的組合提取影象特徵,其架構如下圖所示,這裡展示的是作者**中的lenet-5模型:

第一模組:包含5×5的6通道卷積和2×2的池化。卷積提取影象中包含的特徵模式(啟用函式使用sigmoid),影象尺寸從32減小到28。經過池化層可以降低輸出特徵圖對空間位置的敏感性,影象尺寸減到14。

第二模組:和第一模組尺寸相同,通道數由6增加為16。卷積操作使影象尺寸減小到10,經過池化後變成5。

第三模組:包含5×5的120通道卷積。卷積之後的影象尺寸減小到1,但是通道數增加為120。將經過第3次卷積提取到的特徵圖輸入到全連線層。第乙個全連線層的輸出神經元的個數是64,第二個全連線層的輸出神經元個數是分類標籤的類別數,對於手寫數字識別其大小是10。然後使用softmax啟用函式即可計算出每個類別的**概率。

隨著技術的進步和發展,計算機的算力越來越強大,尤其是在gpu平行計算能力的推動下,複雜神經網路的計算也變得更加容易實施。另一方面,網際網路上湧現出越來越多的資料,極大的豐富了資料庫。同時也有越來越多的研究人員開始專門針對神經網路做演算法和模型的優化,alex krizhevsky等人提出的alexnet以很大優勢獲得了2023年imagenet比賽的冠軍。這一成果極大的激發了產業界對神經網路的興趣,開創了使用深度神經網路解決影象問題的途徑,隨後也在這一領域湧現出越來越多的優秀成果。

alexnet與lenet相比,具有更深的網路結構,包含5層卷積和3層全連線,同時使用了如下三種方法改進模型的訓練過程:

資料增廣:深度學習中常用的一種處理方式,通過對訓練隨機加一些變化,比如平移、縮放、裁剪、旋轉、翻轉或者增減亮度等,產生一系列跟原始相似但又不完全相同的樣本,從而擴大訓練資料集。通過這種方式,可以隨機改變訓練樣本,避免模型過度依賴於某些屬性,能從一定程度上抑制過擬合。

使用dropout抑制過擬合

使用relu啟用函式減少梯度消失現象

vgg模型因為結構簡單、應用性極強而廣受研究者歡迎,尤其是它的網路結構設計方法,為構建深度神經網路提供了方向。下圖是vgg-16的網路結構示意圖,有13層卷積和3層全連線層。vgg網路的設計嚴格使用3×33\times 33×3的卷積層和池化層來提取特徵,並在網路的最後面使用三層全連線層,將最後一層全連線層的輸出作為分類的**。 在vgg中每層卷積將使用relu作為啟用函式,在全連線層之後新增dropout來抑制過擬合。使用小的卷積核能夠有效地減少引數的個數,使得訓練和測試變得更加有效。比如使用兩層3×33\times 33×3卷積層,可以得到感受野為5的特徵圖,而比使用5×55 \times 55×5的卷積層需要更少的引數。由於卷積核比較小,可以堆疊更多的卷積層,加深網路的深度,這對於影象分類任務來說是有利的。vgg模型的成功證明了增加網路的深度,可以更好的學習影象中的特徵模式。

resnet是2023年imagenet比賽的冠軍,將識別錯誤率降低到了3.6%,這個結果甚至超出了正常人眼識別的精度。

通過前面幾個經典模型學習,我們可以發現隨著深度學習的不斷發展,模型的層數越來越多,網路結構也越來越複雜。那麼是否加深網路結構,就一定會得到更好的效果呢?從理論上來說,假設新增加的層都是恒等對映,只要原有的層學出跟原模型一樣的引數,那麼深模型結構就能達到原模型結構的效果。換句話說,原模型的解只是新模型的解的子空間,在新模型解的空間裡應該能找到比原模型解對應的子空間更好的結果。但是實踐表明,增加網路的層數之後,訓練誤差往往不降反公升。

kaiming he等人提出了殘差網路resnet來解決上述問題,其基本思想如 圖6所示。

百度飛漿paddle 零基礎入門深度學習Day1

機器學習過程就是歸納和演繹的過程 機器學習演算法構成的三要素 1.假設空間 模型的假設或表示 2.優化目標 評價或損失函式 loss 3.尋解演算法 優化 求解演算法 神經網路的三要素 1.神經元 2.多層連線 3.前向計算 得到輸出 後向傳播 建模 訓練的套路 1.資料處理 完成預處理操作 2.模...

零基礎入門帶你邂逅vue專案

1.安裝node環境 node官網 檢查版本node和npm版本 安裝完成node後,npm自動就被安裝 node v 注意node版本不要太低 npm v 安裝命令 npm install g cnpm registry 2.安裝webpack 全域性安裝 npm install webpack ...

零基礎如何入門深度學習?

關於深度學習,網上的資料很多,不過貌似大部分都不太適合初學者。這裡有幾個原因 1.深度學習確實需要一定的數學基礎。如果不用深入淺出地方法講,有些讀者就會有畏難的情緒,因而容易過早地放棄。2.中國人或美國人寫的書籍或文章,普遍比較難一些。我不太清楚為什麼,不過確實是這樣子的。深度學習,確實需要一定的數...