① 卷積神經網路演算法是什麼
一維構築、二維構築、全卷積構築。
卷積神經網路(Convolutional Neural Networks, CNN)是一類包含卷積計算且具有深度結構的前饋神經網路(Feedforward Neural Networks),是深度學習(deep learning)的代表演算法之一。
卷積神經網路具有表徵學習(representation learning)能力,能夠按其階層結構對輸入信息進行平移不變分類(shift-invariant classification),因此也被稱為「平移不變人工神經網路(Shift-Invariant Artificial Neural Networks, SIANN)」。
卷積神經網路的連接性:
卷積神經網路中卷積層間的連接被稱為稀疏連接(sparse connection),即相比於前饋神經網路中的全連接,卷積層中的神經元僅與其相鄰層的部分,而非全部神經元相連。具體地,卷積神經網路第l層特徵圖中的任意一個像素(神經元)都僅是l-1層中卷積核所定義的感受野內的像素的線性組合。
卷積神經網路的稀疏連接具有正則化的效果,提高了網路結構的穩定性和泛化能力,避免過度擬合,同時,稀疏連接減少了權重參數的總量,有利於神經網路的快速學習,和在計算時減少內存開銷。
卷積神經網路中特徵圖同一通道內的所有像素共享一組卷積核權重系數,該性質被稱為權重共享(weight sharing)。權重共享將卷積神經網路和其它包含局部連接結構的神經網路相區分,後者雖然使用了稀疏連接,但不同連接的權重是不同的。權重共享和稀疏連接一樣,減少了卷積神經網路的參數總量,並具有正則化的效果。
在全連接網路視角下,卷積神經網路的稀疏連接和權重共享可以被視為兩個無限強的先驗(pirior),即一個隱含層神經元在其感受野之外的所有權重系數恆為0(但感受野可以在空間移動);且在一個通道內,所有神經元的權重系數相同。
② 看完還不懂卷積神經網路「感受野」那你來找我
「感受野」的概念來源於生物神經科學,比如當我們的「感受器」,比如我們的手受到刺激之後,會將刺激傳輸至中樞神經,但是並不是一個神經元就能夠接受整個皮膚的刺激,因為皮膚面積大,一個神經元可想而知肯定接受不完,而且我們同時可以感受到身上皮膚在不同的地方,如手、腳,的不同的刺激,如痛、癢等。這說明皮膚感受器是由很多不同的神經元控制的,那麼每一個神經元所能夠反映的那塊感受器的區域就稱之為「感受野」,感受野即每一個神經元所支配的區域,也可以說這個神經元的活動受到那一塊區域的影響。
在卷積神經網路中,整個卷積運算的過程正好和上面的皮膚刺激過程類似,我們可以將原始圖像對應看成感受器(皮膚),將最終的輸出看成是做出反應的那個神經元。最終輸出到底是什麼狀態(神經元的狀態)所受到的初始圖像哪一塊區域的影響(受到那一塊皮膚的刺激)不正是上面所描述的過程嗎?於是我們給出感受野的定義如下:
卷積神經網路每一層輸出的特徵圖(feature map)上的像素點在原始圖像上映射的區域大小;通俗點說,就是圖像的最終輸出的每一個特徵(每一個像素)到底受到原始圖像哪一部分的影響。
為了更好地說明整個卷積神經網路的工作過程,下面以一個例子說明,原始圖像的大小為10x10,一共設計了5個網路層,前面4個是卷積層,卷積核的大小為3x3,最後一個是池化層,大小為2x2,為了較簡單的說明,本次所有的步幅stride均為1.
注意:感受野在計算的時候不考慮「邊界填充」,因為填充的邊界已經不是原始圖像本身的內容了,感受野描述的是輸出特徵到原始圖像的映射關系,故而不考慮padding 。實際建模過程中可能需要填充邊界,原理一樣,只是計算稍微復雜點。
從上面可以看出:第一層網路輸出的圖像中,輸出結果為8x8,output1輸出的每一個特徵(即每一個像素)受到原始圖像的3x3區域內的影響,故而第一層的感受野為3,用字母表示為
RF1=3 (每一個像素值與原始圖像的3x3區域有關)
從上圖可以看出,經歷兩次卷積運算之後,最終的輸出圖像為6x6,output2輸出的每一個特徵(即每一個像素)受到output1的范圍影響為3x3,而output1中的這個3x3又收到原始圖像的5x5的范圍的影響,故而第二層的感受野為5,即
RF2=5 (每一個像素值與原始圖像的5x5區域有關)
從上圖可以看出,經歷三次卷積運算之後,最終的輸出圖像為4x4,output3輸出的每一個特徵(即每一個像素)受到output2的范圍影響為3x3,而output2中的這個3x3又受到output1的5x5的范圍的影響,而output1中的這個5x5又受到原始圖像的7x7的范圍的影響,故而第三層的感受野為7,即
RF3=7 (每一個像素值與原始圖像的7x7區域有關)
從上圖可以看出,經歷四次卷積運算之後,最終的輸出圖像為2x2,output4輸出的每一個特徵(即每一個像素)受到output3的范圍影響為3x3,而output3中的這個3x3又受到output2的5x5的范圍的影響,而output2中的這個5x5又受到output1的7x7的范圍的影響,而output1中的這個7x7又受到原始圖形的9x9的范圍的影響,故而第四層的感受野為9,即
RF4=9 (每一個像素值與原始圖像的9x9區域有關)
從上圖可以看出,經歷四次卷積運算和一次池化運算之後,最終的輸出圖像為1x1,output5輸出的每一個特徵(即每一個像素)受到output4的范圍影響為2x2,而output4中的這個2x2又受到output3的4x4的范圍的影響,而output3中的這個4x4又受到output2的6x6的范圍的影響,而output2中的這個6x6受到output1的8x8的范圍的影響,而output1中的這個8x8受到原始圖像的10x10的范圍的影響,故而第五層的感受野為10,即
RF5=10 (每一個像素值與原始圖像的10x10區域有關)
從上面的過程可以看出,感受野的推導是一個遞推的過程,下面將展示這一過程。
RF1=3 k1(第一層的感受野,永遠等於第一個卷積核的尺寸大小)k表示第幾個卷積層
RF2=5 k1 + (k2-1) RF1+ (k2-1)
RF3=7 k1 + (k2-1) + (k3-1) RF2+ (k3-1)
RF4=9 k1 + (k2-1) + (k3-1) + (k4-1) RF3+ (k4-1)
RF4=10 k1 + (k2-1) + (k3-1) + (k4-1) + (k5-1) RF4+ (k5-1)
但是上面的所有步長均為 1 ,如果每一次卷積運算的步長 stride 不為1呢,同理,這里直接給出遞推公式:
其中stride_n表示的是第n次卷積的移動步幅stride。
求解過程是從RF1開始的。
③ 論文筆記-卷積神經網路中的感受野
感受野(receptive field或者field of view)是卷積神經網路中的一個基本概念。與全連接層中每個輸出值都與全部輸入特徵值有關不同的是,卷積層的一個輸出值只與一部分的輸入特徵值有關。輸入特徵值中與輸出特徵值有關的部分就是它的感受野。
對於處於中心位置的特徵值,對於輸出的影響會更大,根據實驗結果在一個接受野的影響分布是高斯分布。由此也引入了一個 有效感受野 的概念,因為高斯分布在中心位置強度更高,然後逐漸向周圍遞減。
我們想用數學的方法來描述一個接收野中的每個輸入像素對網路上一個單元層的輸出的影響程度,並研究這種影響是如何在輸出單元的接收野內分布的。為了簡化符號,我們只考慮每層上的一個信道,但是對於具有更多輸入和輸出的卷積層,可以很容易地得到類似的結果通道。
假設每層上的像素用(i,j)索引,其中心位於(0,0)。表示第層的第(i,j)個像素為 ,其中 作為網路的輸入, 作為第n層的輸出。我們要測量每個 對 貢獻了多少。我們將這個中央輸出單元的有效感受野(ERF)定義為包含任何輸入像素且對其影響不可忽略的區域單位。
本文採用偏導數 ,j來度量 隨 有多大的變化;因此,它是 相對於 重要性的自然度量。然而,這種度量不僅取決於網路的權值,而且在大多數情況下也依賴於輸入,因此我們的大多數結果都是期望值大於輸入分布。
偏導數 可以用反向傳播法計算。在標准設置中,反向傳播傳播相對於某個損耗函數的誤差梯度。假設我們有一個任意的損失函數l,根據鏈式規則,我們有
我們可以設置誤差梯度 和 ,然後將這個梯度從那裡傳播回網路。得到的 ,相當於期望的partial{y_{0,0}}}{partial {x^0_{i,j}}。這里我們使用無顯式損失函數的反向傳播過程,並且該過程可以用標准神經網路輕松實現工具。
在下面我們首先考慮線性網路,其中這個導數不依賴於輸入,而純粹是網路權重和(i,j),它清楚地顯示了感受野中像素的影響是如何分布的。然後我們繼續考慮更現代的架構設計,並討論非線性激活、dropout、子采樣、空洞卷積和跳躍連接對ERF的影響。
2.1最簡單的情況:權值都等於1的卷積層
考慮使用k×k卷積核的步長為1的卷積層的情況,每層一個單通道,無非線性,疊加成一個深線性CNN。在這個分析中,我們忽略了所有層上的偏差。我們首先分析權值都等於1的卷積核。(推理過程公式好多,看原文吧……)
在本節中,我們將實證研究各種深層CNN架構的ERF。我們首先使用人工構造的CNN模型來驗證我們分析中的理論結果。然後,我們提出了在實際數據集上訓練深層cnn時ERF如何變化的觀察結果。對於所有ERF研究,我們在輸出平面的中心放置一個梯度信號1,在其他任何地方放置0,然後通過網路反向傳播該梯度,得到輸入的梯度。
3.1驗證理論結果
我們首先在人工構建的CNN中驗證我們的理論結果。為了計算ERF我們使用隨機輸入,對於所有隨機權重網路,我們進行適當的隨機初始化。在本節中,我們驗證以下內容結果:
ERF是高斯分布的 。如圖所示在圖1中,我們可以觀察到均勻加權卷積核和隨機加權,沒有非線性激活卷積核的完美高斯形狀,以及隨機加權非線性激活的卷積核的近似高斯形狀。加上ReLU非線性使得分布的高斯性變小,因為ERF的分布也取決於輸入。另一個原因是ReLU單元的一半輸入輸出正好為零,而且很容易為輸出平面上的中心像素設置零輸出,這意味著感受野的路徑無法到達輸出,因此梯度都為零。在這里,ERF在不同的傳輸種子下平均運行20次。下圖顯示了具有20層隨機權值、具有不同非線性的網路的ERF。在這里,結果是不同的隨機權重以及不同的隨機輸入平均運行的100次的結果。在這種情況下,感受野更像高斯分布。
絕對增長和 相對收縮 。圖2中,我們給出了ERF尺寸的改變和ERF相對於理論RF的比例隨卷積層數的變化。ERF大小的最佳擬合線在對數域的斜率為0.56,而ERF比值的擬合線斜率為-0.43。這表明ERF大小對於 呈線性增長,ERF比率對於 呈線性縮小。注意這里我們使用2個標准偏差作為ERF大小的測量值,即任何大於中心點1−95.45%的像素都被視為ERF。ERF大小由ERF中像素數目的平方根表示,而理論RF大小是平方的邊長,在該邊長中,所有像素對輸出像素的影響都是非零的,無論多麼小。所有實驗是在超過20次的結果上平均得到的。
3.2在訓練過程中ERF是如何演變的
在這一部分中,我們將研究分類CNN和語義分割CNN最頂層的單元ERF在訓練過程中是如何演變的。對於這兩個任務,我們採用了 ResNet架構,它廣泛地使用了skip-connection。分析表明,該網路的ERF應明顯小於理論感受野。這是我們最初觀察到的。有趣的是,隨著網路的學習,ERF變得更大,並且在訓練結束時,ERF明顯大於初始ERF。
對於分類任務,我們在CIFAR-10數據集上訓練了一個包含17個殘差塊的ResNet。在訓練結束時,該網路的測試准確率達到89%。請注意,在這個實驗中,我們沒有使用池或降采樣,而是專門關注具有跳過連接的體系結構。網路的精確度雖然不是最先進的,但仍然相當高。在圖3中,我們顯示了在訓練開始時(隨機初始化權重)和訓練結束時,當達到最佳驗證精度時,32×32圖像空間上的有效感受野。請注意,我們網路的理論接收場實際上是74×74,大於圖像大小,但是ERF仍然可以完全填充圖像。比較訓練前後的結果,我們發現有效感受野有所增加很明顯。
對於語義分割任務利用CamVid數據集進行城市場景分割。我們訓練了一個「前端」模型,它是一個純粹的卷積網路,它預測輸出的解析度略低。該網路與VGG網路在許多以前的著作中所起的作用相同。我們訓練了一個ResNet,16個殘差塊交錯,每個子采樣操作的因子為2。由於這些子采樣操作,輸出是輸入大小的1/16。對於這個模型,頂層卷積層單元的理論感受野為505×505。然而,如圖3所示,在訓練開始時,ERF只得到直徑為100的部分。我們再次觀察到,在訓練過程中,ERF的尺寸增大,最後達到直徑約為150的直徑。
上述分析表明ERF只佔理論接收野的一小部分,這對於需要較大接收能力的任務是不可取的領域。
新的初始化。 一增加有效感受野的簡單方法是控制初始權重。我們提出了一種新的隨機權值初始化方案,使得卷積核中心的權值具有較小的尺度,而外部的權值較大,這使得中心的集中度向外圍擴散。實際上,我們可以用任何初始化方法對網路進行初始化,然後根據中心低標度、外標度高的分布來調整權重。
在極端情況下,我們可以優化w(m)以使ERF大小最大化,或者等價地使等式(前面推公式部分里的公式)中的方差最大化。解決這個優化問題的結果是在卷積核的4個角上平均地設置權重,而其他地方都是0。但是,使用此解決方案進行隨機權重初始化過於激進,並且將大量權重保留為0會使學習變慢。這種想法的溫和版本通常是有效的更好。
我們用這種初始化方法訓練了一個用於CIFAR-10分類任務的CNN,使用了幾種隨機種子。在一些情況下,與更標準的初始化相比,我們的訓練速度提高了30%。但總的來說,這種方法的好處並不總是如此很重要。
我們請注意,無論我們如何改變w(m),有效感受野仍然是高斯分布的,因此上述建議只解決了問題部分。
改變構架。 一個潛在的更好的方法是對cnn進行架構上的更改,這可能會改變在更基本的方面。例如,我們不用將CNN中的每個單元連接到本地矩形卷積窗口,而是可以使用相同的連接數將每個單元稀疏地連接到下層的一個較大區域。空洞卷積屬於這一類,但我們可以進一步推進,並使用不類似網格的稀疏連接。
與生物神經的聯系網路。 在我們的分析表明,深部CNN中的有效接收場實際上比我們以前想像的要慢得多。這表明即使經過許多卷積層,仍然保留了許多局部信息。這一發現與深層生物網路中一些長期持有的相關概念相矛盾。哺乳動物視覺系統的一個普遍特徵是分為「什麼」和「哪裡」路徑。沿著what或where路徑進行,連通性的性質逐漸改變:感受野大小增加,空間組織變得鬆散,直到沒有明顯的視網膜色素組織;視網膜脫離意味著單個神經元對視野中的面部等物體做出反應。然而,如果ERF比RF小,這表明表示可以保留位置信息,同時也提出了一個有趣的問題,即這些區域在發育過程中的大小變化。
我們的分析的第二個相關影響是,它表明卷積網路可能會自動地產生一種中心凹表現形式。人類視網膜中央凹只在中心像素附近提取高解析度信息。等解析度的子場的排列使得它們的大小隨著距中心的距離而增大固定。在視網膜的外圍,低解析度的信息是從圖像的較大區域提取的。一些神經網路已經明確地構造了這種形式的表示。然而,由於卷積網路形成高斯感受野,其底層表示自然會有這種感受野特性。
與之前研究的聯系。 雖然CNN中的感受野尚未得到深入研究,一些人在計算方差如何通過網路演化方面進行了類似的分析。他們開發了一個很好的卷積層初始化方案,遵循的原則是方差在經過網路。
研究人員為了理解神經網路是如何工作的,我們還利用了可視化技術。[14] 展示了使用自然圖像先驗的重要性,以及卷積層的激活將代表什麼。[22]使用反褶積網路來顯示圖像中像素點與被激活神經元之間的關系。[23]對感受野進行了實證研究,並將其作為定位的提示。也有可視化研究使用梯度上升技術[4]產生有趣的圖像,如[15]。這些都集中在單位激活或特徵圖上,而不是我們在這里研究的有效感受野。
本文對CNN的感受野進行了細致的研究,並對有效感受野大小進行了初步探討。特別地,我們已經證明了在感受野內的影響分布是漸近高斯的,有效感受野只佔整個理論感受野的一小部分。實證結果與我們建立的理論相呼應。我們認為這只是有效感受野研究的一個開始,它為深入了解CNN提供了一個新的視角。在未來的研究中,我們希望更多地研究在實踐中影響有效感受野的因素以及如何更好地控制這些因素。
④ Attention(注意力)機制
Attention(注意力)機制其實來源於人類的認識認知能力。比如當人們觀察一個場景或處理一件事情時,人們往往會關注場景的顯著性物體,處理事情時則希望抓住主要矛盾。注意力機制使得人類能夠關注事物的重要部分,忽略次要部分,更高效的處理所面臨的各種事情。
注意力機制在NLP領域被真正的發揚光大,其具有參數少、速度快、效果好的特點,如2018年的BERT、GPT 領跑各項 NLP 任務效果。由此在此領域,transformer和attention結構受到了極大的重視。
第二步:使用權重對Value進行加權求和從而得到Attention Value。
注意力是一種機制,或者方法論,並沒有嚴格的數學定義。比如,傳統的局部圖像特徵提取、顯著性檢測、滑動窗口方法等都可以看作一種注意力機制。在神經網路中,注意力模塊通常是一個額外的神經網路,能夠硬性選擇輸入的某些部分,或者給輸入的不同部分分配不同的權重。
根據權重在特徵空間和通道上的應用方式不同,主要可分為
其增加了一個通道注意力模塊,學習每個通道的權重,通過抑制無關特徵提升卷積特徵的表示性能。SENet通過Squeeze模塊和Exciation模塊實現所述功能,首先通過Squeeze模塊對卷積特徵進行進行壓縮,即在通道維度上執行全局池化操作,在SENet中採用的是全局平均池化,作者提到該操作能夠使得靠近數據輸入的特徵也可以具有全局感受野,這一點在很多的任務中是非常有用的。然後是通過全連接網路進行Exciation操作,作者在全連接網路中降維操作的目的是一方面降低了網路計算量,一方面增加了網路的非線性能力。最後將得到通道attention應用到原始卷積特徵上,即通過乘法加權的方式乘到先前的特徵上,從而提升重要特徵,抑制不重要特徵。
從圖中可以看出,首先將輸入張量進行降維到C通道,與SENet不同的是採用二階pool的方式,計算得到C*C的協方差矩陣,這種計算方式引入了通道之間的相互關系,然後進行線性卷積和非線性激活的兩個連續運算,得到通道注意力。
除此之外,還有很多的注意力機制相關的研究,比如殘差注意力機制,多尺度注意力機制,遞歸注意力機制等。