(三)有監督卷積神經網絡

1 使用卷積提取特徵

1.1 概述

前面的內容練習都是涉及低分辨率的圖像,如小的圖像塊和手寫字符。本節將對現實中的較大的圖像進行擴展。

1.2 全連接網絡

在稀疏的自動編碼器中,我們所做的一個設計選擇是將所有隱藏單元“全連接”到所有輸入單元。在相對較小的圖像上(例如,稀疏自動編碼器任務中8x8塊,MNIST數據集的28x28圖像),在整個圖像上全連接學習特徵在計算上是可行的。然而,使用更大的圖像(例如,96x96圖像)在整個圖像(全連接的網絡)上的計算非常耗時。大約有104個輸入單元,並且假設要學習100個特徵,那麼將有106個參數待學習。與28x28圖像相比,前饋和反向傳播計算也將減慢102倍。

1.3 局部連接網絡

該個問題的一個簡單的解決方法是限制隱單元和輸入單元之間的連接,僅允許每個隱單元連接到輸入單元的一小部分。具體來說,每個隱單元將僅連接到輸入中一個小的像素區域。(對於與圖像不同的輸入模式,通常還有一種選擇“連續組”輸入單元以連接到單個隱單元的自然方式;例如,對於音頻,隱單元可能僅連接到輸入單元,這些單元對應於輸入音頻剪輯的一定時間間隔)
這種擁有局部連接網絡的想法也吸引了早期視覺系統在生物學中的接軌。具體來說,視覺皮質中的神經元具有局部接受場(即,它們僅響應某一位置的刺激)。

1.4 卷積

自然圖像具有“靜止”的屬性,這意味着圖像的一部分的統計與任何其他部分相同。這表明我們在圖像的一個局部區域學習的功能也可以應用於圖像的其他部分,即我們可以在所有位置使用相同的功能。
更準確地說,在從較大圖像中隨機抽取的小(例如8x8)塊上學習了特徵,我們可以在圖像中的任何地方應用這個學習的8x8特徵檢測器。具體來說,我們可以將學習到的8x8特徵去“卷積”更大圖像,從而在圖像的每個位置獲得不同的功能激活值。
給出一個具體的例子,假設您已經學習了從96x96圖像採樣的8x8塊的功能。進一步假設這是用一個具有100個隱藏單位的自動編碼器完成的。爲了獲得卷積特徵,對於96x96圖像的每8x8區域,即從(1,1),(1,2),…(89,89),你可以提取8x8的塊,並通過訓練好的稀疏自動編碼器,以獲取功能激活。這將導致100組89x89卷積特徵。
ConV
在形式上,給出一些大的r×r 圖像xlarge ,我們首先從這些圖像中抽取的小的a×b 個塊xsmall 上訓練一個稀疏的自動編碼器,學習k 個特徵f=σ(W(1)xsmall)+b(1) (其中σ 是S形函數),由權重W(1) 和偏差b(1) 單位到隱藏單位。對於大圖像中的每個a×bxs ,計算fs=σ(W(1)xs)+b(1) ,給定fconvolved ,得到一個k×(ra+1)×(cb+1) 的卷積特徵矩陣。
在下一節中,我們進一步描述如何將這些功能“池化”在一起,以獲得更好的分類特徵。

2 池化

2.1 概述

在使用卷積獲得特徵後,接下來要使用它們進行分類。在理論上,可以使用所有提取的特徵用於分類,但這可能在計算上是有挑戰的。考慮例如大小爲96x96像素的圖像,並假設我們已經學習了超過8x8輸入的400個特徵。每個卷積產生大小(96-8+1)*(96-8+1)=7921的輸出,並且由於有400個特徵,這導致892*400=3,168,400的特徵向量。學習具有300萬個特徵的輸入的分類器可能是困難的,並且也容易過擬合。
爲了解決這個問題,首先回顧一下,我們決定獲取得卷積特徵,因爲圖像具有“平穩性”屬性,這意味着在一個區域中有用的特徵也可能對其他區域有用。因此,爲了描述大型圖像,一種自然的方法是在不同位置聚合這些特徵的統計。例如,可以計算圖像區域上的特定特徵的平均值(或最大值)。這些統計數據的維度要低得多(與使用所有提取的特徵相比),並且還可以提高結果(不容易過擬合)。我們的聚合操作被稱爲這個操作“pooling”,或者有時候是“平均池化”或“最大池化”(取決於應用的池化操作)。
以下圖像顯示瞭如何通過圖像的4個非重疊區域進行池化。
Pool

2.2 池化不變性

如果選擇池化區域作爲圖像中的連續區域,並且僅從相同(複製)隱藏單元生成的池特徵。然後,這些合併單位將是“平移不變”。這意味着即使圖像經歷(小)平移,相同(合併)功能也將是活動的。平移不變特徵通常是可取的;在許多任務(例如,對象檢測,音頻識別)中,即使圖像被平移,示例(圖像)的標籤也是相同的。 例如,如果您要使用MNIST數字並將其向左或向右平移,則無論最終位置如何,您都希望您的分類器仍然精確地將其分類爲相同的數字。

2.3 形式化描述

正式地,在獲得了前面所述的卷積特徵之後,我們決定了該區域的大小,例如mxn來彙總我們的卷積特徵。然後,我們將我們的卷積特徵劃分爲不相交的mxn個區域,並且在這些區域上進行平均(或最大)特徵激活以獲得合併的卷積特徵。 然後可以將這些合併的功能用於分類。
在下一節中,我們進一步描述如何將這些功能“pool”在一起,以獲得更好的分類功能。

3 優化:隨機梯度下降

3.1 概述

使用完整訓練集來計算每次迭代中參數的下一次更新的批量方法(如LBFGS)易於收斂到局部最優。由於它們具有非常少的超參數需要調整,所以他們也提供了一個很好的現成實現(例如minFunc)。然而,數據集太大可能無法載入主存,或者在實際中計算整個訓練集梯度的成本和耗時都很高。批量優化方法的另一個問題是,它們不能簡單地將新數據併入“在線”設置。隨機梯度下降(SGD)通過僅計算一個或幾個訓練樣本來優化目標解決這兩個問題。在完整的訓練集上運行反向傳播的成本較高,SGD可以克服這個成本,仍然可以快速收斂。

3.2 隨機梯度下降

標準梯度下降算法將目標J(θ) 的參數θ 更新爲,

θ=θαθE[J(θ)]

其中,上述等式中的期望值是通過評估整個訓練集上的代價和梯度來近似的。隨機梯度下降(SGD)僅使用一個或幾個訓練示例來計算參數的梯度。新的更新由給定的一對訓練樣本(x(i),y(i)) 計算得到:

θ=θαθJ(θ;x(i),y(i))

通常,SGD中的每個參數更新都是與一個樣本相對應或關於幾個訓練樣本對應。其原因有兩個:首先,這會減少參數更新的方差,並可以產生更好的收斂性;其次,這允許利用高度優化的矩陣操作來加快計算,這些矩陣操作可更好地計算成本和梯度。典型批處理大小尺寸爲256。
在SGD中,學習率α 通常遠遠小於批量梯度下降中相應的學習率,因爲更新中存在更大的差異。選擇適當的學習率和變化(即,隨着學習進度而改變學習率的值)可能相當困難。在實踐中工作良好的一種標準方法是使用足夠小的恆定學習率,在初始時期(完全通過訓練集)或兩次訓練中獲得穩定的收斂,然後當因爲收斂減慢時將學習率的值減半。一個更好的方法是在每個epoch之後評估一個固定的集合,並且當目標變化低於一個小的閾值時,降低學習率。另一個常用的方案是將每次迭代t 的學習率按t=ab+t 進行更新,其中ab 規定初始學習率。更復雜的方法包括使用回溯搜索來查找最佳更新。
關於SGD最後的一個且重要的一點是我們將數據傳送給算法的順序。如果數據以某種有意義的順序給出,則可能會導致收斂性差。通常,避免這種情況的好方法是在每個訓練epoch之前隨機打亂數據。

3.3 動量

如果目標具有長的淺溝渠的分佈,會導致兩側陡峭的牆壁,標準SGD將傾向於擺動在狹窄的溝谷上,因爲負梯度將指向一個陡峭的邊,而不是沿着山溝最佳。深層架構的目標在具最優狀態附近具有這種形式,因此標準SGD可能會導致非常緩慢的收斂,特別是在最初的陡峭增長之後。動量是沿着淺溝渠更快地推動目標的一種方法。動量更新由下式給出:

υ=γυ+αJ(θ;x(i),y(i))θ=θυ

在上述方程中,υ 是與參數矢量θ 具有相同維度的當前速度矢量。學習率α 如上所述,但是當使用動量時,由於梯度的大小越大,所以α 可能需要較小。最後,γ(0,1] 確定先前梯度在當前更新中的迭代次數,通常將γ 設置爲0.5,直到初始學習穩定然後增加到0.9或更高。

4 卷積神經網絡

4.1 概述

卷積神經網絡(CNN)由一個或多個卷積層(通常還有一個子採樣步驟)組成,然後由標準多層神經網絡中的一個或多個全連接層組成。CNN的架構旨在利用輸入圖像(或其他2D輸入,如語音信號)的2D結構。這是通過局部連接和權重共享實現的,然後是某種形式的池化,這導致平移不變特徵。CNN的另一個優點是,它們比具有相同數量的隱單元的全連接網絡更容易訓練並且具有更少的參數。在本文中,我們將討論CNN的架構和反向傳播算法來計算相對於模型參數的梯度,以便使用基於梯度的優化。有關這些特定操作的更多詳細信息,請參閱有關卷積和池化的相關教程。

4.2 框架

CNN由多個卷積和子採樣層組成,可選擇接全連接層。卷積層的輸入是一個m×m×r 的圖像,其中m 是圖像的高度和寬度,r 是通道數,例如。RGB圖像r=3 。卷積層將具有尺寸爲n×n×qk 個濾波器(或核),其中n 小於圖像的尺寸,並且q 可以等於通道數r 或更小的值,並且每個核可能會有所不同。濾波器的大小產生了局部連接的結構,它們與圖像卷積產生大小爲mn+1k 特徵圖。然後每個圖通常採用平均池化或最大值池化,合併在p×p 大小連續區域上進行採樣,其中對於小圖像(例如MNIST),p 範圍在2之間,對於較大的輸入通常不大於5。在子採樣層之前或之後,對每個特徵圖用加性偏差和S形非線性。下圖顯示了由卷積和子採樣層組成的CNN中的各層。相同顏色的單元具有連接權重。
在卷積層之後,可能存在若干數量的全連接層。全連接層與標準多層神經網絡中的層相同。
CNN
圖1 待池化的卷積神經網絡的第一層。相同顏色的單元具有連接權重,不同顏色的單元表示不同的濾波器圖。

4.3 反向傳播

δ(l+1) 爲網絡第l+1 層的誤差項,網絡代價函數爲J(W,b;x,y) ,其中(W,b) 爲參數,(x,y) 是訓練數據和標籤對。如果第l 層全連接到l+1 層,則第l 層的誤差可通過下式計算

δ(l)=((W(l))Tδ(l+1))f(z(l))

對應梯度爲

W(l)J(W,b;x,y)=δ(l+1)(a(l))T

b(l)J(W,b;x,y)=δ(l+1)

如果第l 層是卷積和子採樣層,則誤差通過下式傳播

δ(l)k=upsample((W(l)k)Tδ(l+1)k)f(z(l)k)

其中k 爲濾波器索引,且f(z(l)k) 是激活函數的導數。上採樣upsample操作必須通過計算輸入池化層的每個單元的錯誤錯誤來傳播錯誤。例如,如果我們採用均值池化,那麼上採樣簡單地將單個池化單元的誤差均勻地分配給在上一層中供給它的單元中。在最大池中,選擇值最大的單元接收所有錯誤,因爲輸入的非常小的更改將僅通過該單元擾亂結果。
最後,爲了計算關於濾波器圖的梯度,我們再次關注於處理卷積運算的邊界,並以與卷積層中的濾波器相同的方式翻轉誤差矩陣δ(l)k

W(l)kJ(W,b;x,y)=i=1m(a(l)i)rot90(δ(l+1)k,2)

b(l)kJ(W,b;x,y)=a,b(δ(l+1)k)a,b

其中a(l) 是第l 層的輸入,a(1) 是輸入圖像。操作是第l 層的第i 個輸入與第k 個濾波器誤差之間的“有效”卷積。
/##############################################################
一個卷積和池化的神經網絡+Softmax損失前傳和後傳推理:
SimpleCNN

多個卷積和池化的神經網絡+Softmax損失前傳和後傳推理:
FullCNN
/##############################################################

發佈了35 篇原創文章 · 獲贊 36 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章