???????
卷積神經網絡
卷積神經網絡(Convolutional Neural Network,簡稱CNN)是一種深度學習模型,特別適用于處理具有網格結構的數據。主要目的是自動地、層次化地從原始數據中學習有效的特征表示,以完成特定的任務,如圖像識別、分類、檢測、分割等。
一、畫面不變性
什么是畫面不變性呢?我們知道一個物體,不管將其如何變換旋轉都能夠將其識別為同一個物體,這就是畫面不變性。比如:
不管上圖中物體如何的變換,我們都希望所建立的網絡可以盡可能的滿足這些不變性特點。
二、圖像識別
我們知道傳統的神經網絡,訓練時會將圖形展開,使得在訓練時網絡模型的記憶比較刻板,比如下圖中,我們進行訓練時讓神經網絡記住正確的目標,但是當正確的圖形變換一個位置時就無法識別了。
那么對于傳統神經網絡該怎么解決這個問題呢?
解決辦法是:用大量物體位于不同位置的數據訓練,同時增加網絡的隱藏層個數從而擴大網絡學習這些變體的能力。
三、卷積網絡
結構
卷積神經網絡的結構:由輸入層、卷積層、激活層、池化層、全連接層、輸出層組成
1. 原理
類比自然界的動物,不同的物種有自己獨有的特征,比如小狗的叫聲是“汪汪汪”,小貓是“喵”,這就是這兩個動物的區別,我們人類也可以通過這種方法來區分二者。
同樣的,卷積神經網絡也是同樣的道理,卷積網絡將圖片劃分出幾個特征點,在識別圖片時,找尋圖片中是否有符合特征點的信息。
比如上圖中,卷積網絡如何將右邊手寫的“x”圖片識別成x?
將標準的x圖片劃分出三個特征,x圖片由上方的三個小部分組成,手寫“x”圖片中有包含第二部分的特征,沒有另外兩部分特征,那這我們怎么判斷它到底是還是不是呢?
就像是每個動物都有自己重要的特征,我們可以通過調整三個部分特征的權重,來決定所識別的圖片是否是x圖片。
所以,綜上所述:卷積就是對圖像(不同的數據窗口數據)和卷積核(一組固定的權重:因為每個神經元的多個權重固定,所以又可以看做一個恒定的濾波器filter)做內積(逐個元素相乘再求和)的操作就是所謂的『卷積』操作,也是卷積神經網絡的名字來源。
2. 卷積層
卷積操作:
卷積操作中需要注意的:
步長stride:每次滑動的位置步長。
卷積核的個數:決定輸出的depth厚度。同時代表卷積核的個數以及濾波器的個數。
填充值zero-padding:在外圍邊緣補充若干圈0,方便從初始位置以步長為單位可以剛好滑倒末尾位置,通俗地講就是為了總長能被步長整除。
對于卷積層,可以形象的將卷積核當作是每個人的眼睛,每個眼睛都能得到一個特征圖,不同的眼睛(卷積核)看到的圖片是不一樣的,這樣我們就能得到多個不同的特征圖。
尋找目標特征:
我們都知道卷積是通過與卷積核的內積得到特征圖,但是,我們如何精準的找到卷積出來的特征圖是不是我們的目標呢?
以鳶尾花為例:
我們的目標是識別圖片中的花朵是不是鳶尾花,那我們卷積時尋找的特征圖,當然得是關于鳶尾花的特征,盡量減少其余噪聲的影響。這就要通過調整卷積核中的參數來調整特征目標:
一開始的卷積核是隨機的,在最后的結果中同正確結果做比對,如果有誤差,再返回卷積層中,更新調整卷積核的參數重新計算特征圖,使得最后的特征圖是目標特征。
特征圖計算:
計算圖片經過卷積后獲得的特征圖大小。
3. 池化層
池化層的作用:
一種降采樣,減小數據的空間大小,因此參數的數量和計算量也會下降,這在一定程度上也控制了過擬合。
常見的池化層:
最大池化、平均池化、全局平均池化、全局最大池化。
平均池化(average pooling):計算圖像區域的平均值作為該區域池化后的值。
最大池化(max pooling):選圖像區域的最大值作為該區域池化后的值。是最為常見的。
通常來說,CNN的卷積層之間都會周期性地插入池化層。
我們偏常用的池化方法是最大池化,最大池化的原理分析:
最大池化的主要功能是壓縮,卻不會損壞識別結果。 這意味著卷積后的特征圖中有對于識別物體不必要的冗余信息。
觀察上圖,我們之前就提到過,卷積神經網絡可以將不同位置的相同物體給識別成同一個物體,在這里就給體現出來了。我們看到第一行三個圖片中,目標物體(黑色標注)在圖片的不同位置,它們經過卷積之后,得到了第二行的三個特征圖,我們再將特征圖進行最大池化,發現池化后的壓縮結果都為3,將其識別為了同一個特征,其余的噪聲影響都被處理了。
池化層操作方法:
與卷積層類似,池化層運算符由一個固定形狀的窗口組成,該窗口根據其步幅大小在輸入的所有區域上滑動,為固定形狀窗口(有時稱為 池化窗口)遍歷的每個位置計算一個輸出。 然而,不同于卷積層中的輸入與卷積核之間的互相關計算,池化層不包含參數。
4. 全連接層
當抓取到足以用來識別圖片的特征后,接下來的就是如何進行分類。 全連接層(也叫前饋層)就可以用來將最后的輸出映射到線性可分的空間。 通常卷積網絡的最后會將末端得到的長方體平攤(flatten)成一個長長的向量,并送入全連接層配合輸出層進行分類。
四、感受野
在卷積神經網絡中,感受野(Receptive Field)是一個核心概念,它指的是網絡中每一層輸出的特征圖(feature map)上的像素點在輸入圖片上映射的區域大小。換句話說,感受野描述了某一層神經元所“看到”的輸入圖像的區域范圍。
例如圖片是3通道:
卷積核為3個7 x 7的,則卷積核所需要的參數個數為:3 x (3 x 7 x 7)=441個
卷積核為3個3 x 3的3層,則卷積核所需要的參數個數為:3 x (3 x 3 x 3)+3 x (3 x 3 x 3) +3 x (3 x 3 x 3) =243個
同樣的效果,后者需要調整的參數更小,自然使用后者更好啦!
總結
本篇介紹了卷積神經網絡的結構以及它的優點:
卷積神經網絡能夠將變換的物體識別出來。
卷積神經網絡的結構:由輸入層、卷積層、激活層、池化層、全連接層、輸出層組成。
什么是感受野。
?