① 卷積神經網路
卷積神經網路 (Convolutional Neural Networks,CNN)是一種前饋神經網路。卷積神經網路是受生物學上感受野(Receptive Field)的機制而提出的。感受野主要是指聽覺系統、本體感覺系統和視覺系統中神經元的一些性質。比如在視覺神經系統中,一個神經元的感受野是指視網膜上的特定區域,只有這個區域內的刺激才能夠激活該神經元。
卷積神經網路又是怎樣解決這個問題的呢?主要有三個思路:
在使用CNN提取特徵時,到底使用哪一層的輸出作為最後的特徵呢?
答:倒數第二個全連接層的輸出才是最後我們要提取的特徵,也就是最後一個全連接層的輸入才是我們需要的特徵。
全連接層會忽視形狀。卷積層可以保持形狀不變。當輸入數據是圖像時,卷積層會以3維數據的形式接收輸入數據,並同樣以3維數據的形式輸出至下一層。因此,在CNN中,可以(有可能)正確理解圖像等具有形狀的數據。
CNN中,有時將 卷積層的輸入輸出數據稱為特徵圖(feature map) 。其中, 卷積層的輸入數據稱為輸入特徵圖(input feature map) , 輸出數據稱為輸出特徵圖(output feature map)。
卷積層進行的處理就是 卷積運算 。卷積運算相當於圖像處理中的「濾波器運算」。
濾波器相當於權重或者參數,濾波器數值都是學習出來的。 卷積層實現的是垂直邊緣檢測 。
邊緣檢測實際就是將圖像由亮到暗進行區分,即邊緣的過渡(edge transitions)。
卷積層對應到全連接層,左上角經過濾波器,得到的3,相當於一個神經元輸出為3.然後相當於,我們把輸入矩陣拉直為36個數據,但是我們只對其中的9個數據賦予了權重。
步幅為1 ,移動一個,得到一個1,相當於另一個神經單元的輸出是1.
並且使用的是同一個濾波器,對應到全連接層,就是權值共享。
在這個例子中,輸入數據是有高長方向的形狀的數據,濾波器也一樣,有高長方向上的維度。假設用(height, width)表示數據和濾波器的形狀,則在本例中,輸入大小是(4, 4),濾波器大小是(3, 3),輸出大小是(2, 2)。另外,有的文獻中也會用「核」這個詞來表示這里所說的「濾波器」。
對於輸入數據,卷積運算以一定間隔滑動濾波器的窗口並應用。這里所說的窗口是指圖7-4中灰色的3 × 3的部分。如圖7-4所示,將各個位置上濾
波器的元素和輸入的對應元素相乘,然後再求和(有時將這個計算稱為乘積累加運算)。然後,將這個結果保存到輸出的對應位置。將這個過程在所有位置都進行一遍,就可以得到卷積運算的輸出。
CNN中,濾波器的參數就對應之前的權重。並且,CNN中也存在偏置。
在進行卷積層的處理之前,有時要向輸入數據的周圍填入固定的數據(比如0等),這稱為填充(padding),是卷積運算中經常會用到的處理。比如,在圖7-6的例子中,對大小為(4, 4)的輸入數據應用了幅度為1的填充。「幅度為1的填充」是指用幅度為1像素的0填充周圍。
應用濾波器的位置間隔稱為 步幅(stride) 。
假設輸入大小為(H, W),濾波器大小為(FH, FW),輸出大小為(OH, OW),填充為P,步幅為S。
但是所設定的值必須使式(7.1)中的 和 分別可以除盡。當輸出大小無法除盡時(結果是小數時),需要採取報錯等對策。順便說一下,根據深度學習的框架的不同,當值無法除盡時,有時會向最接近的整數四捨五入,不進行報錯而繼續運行。
之前的卷積運算的例子都是以有高、長方向的2維形狀為對象的。但是,圖像是3維數據,除了高、長方向之外,還需要處理通道方向。
在3維數據的卷積運算中,輸入數據和濾波器的通道數要設為相同的值。
因此,作為4維數據,濾波器的權重數據要按(output_channel, input_channel, height, width)的順序書寫。比如,通道數為3、大小為5 × 5的濾
波器有20個時,可以寫成(20, 3, 5, 5)。
對於每個通道,均使用自己的權值矩陣進行處理,輸出時將多個通道所輸出的值進行加和即可。
卷積運算的批處理,需要將在各層間傳遞的數據保存為4維數據。具體地講,就是按(batch_num, channel, height, width)的順序保存數據。
這里需要注意的是,網路間傳遞的是4維數據,對這N個數據進行了卷積運算。也就是說,批處理將N次的處理匯總成了1次進行。
池化是縮小高、長方向上的空間的運算。比如,如圖7-14所示,進行將2 × 2的區域集約成1個元素的處理,縮小空間大小。
圖7-14的例子是按步幅2進行2 × 2的Max池化時的處理順序。「Max池化」是獲取最大值的運算,「2 × 2」表示目標區域的大小。如圖所示,從
2 × 2的區域中取出最大的元素。此外,這個例子中將步幅設為了2,所以2 × 2的窗口的移動間隔為2個元素。另外,一般來說,池化的窗口大小會和步幅設定成相同的值。比如,3 × 3的窗口的步幅會設為3,4 × 4的窗口的步幅會設為4等。
除了Max池化之外,還有Average池化等。相對於Max池化是從目標區域中取出最大值,Average池化則是計算目標區域的平均值。 在圖像識別領域,主要使用Max池化。 因此,本書中說到「池化層」時,指的是Max池化。
池化層的特徵
池化層有以下特徵。
沒有要學習的參數
池化層和卷積層不同,沒有要學習的參數。池化只是從目標區域中取最大值(或者平均值),所以不存在要學習的參數。
通道數不發生變化
經過池化運算,輸入數據和輸出數據的通道數不會發生變化。如圖7-15所示,計算是按通道獨立進行的。
對微小的位置變化具有魯棒性(健壯)
輸入數據發生微小偏差時,池化仍會返回相同的結果。因此,池化對輸入數據的微小偏差具有魯棒性。比如,3 × 3的池化的情況下,如圖
7-16所示,池化會吸收輸入數據的偏差(根據數據的不同,結果有可能不一致)。
經過卷積層和池化層之後,進行Flatten,然後丟到全連接前向傳播神經網路。
(找到一張圖片使得某個filter響應最大。相當於filter固定,未知的是輸入的圖片。)未知的是輸入的圖片???
k是第k個filter,x是我們要找的參數。?這里我不是很明白。我得理解應該是去尋找最具有代表性的特徵。
使用im2col來實現卷積層
卷積層的參數是需要學習的,但是池化層沒有參數需要學習。全連接層的參數需要訓練得到。
池化層不需要訓練參數。全連接層的參數最多。卷積核的個數逐漸增多。激活層的size,逐漸減少。
最大池化只是計算神經網路某一層的靜態屬性,沒有什麼需要學習的,它只是一個靜態屬性 。
像這樣展開之後,只需對展開的矩陣求各行的最大值,並轉換為合適的形狀即可(圖7-22)。
參數
• input_dim ― 輸入數據的維度:( 通道,高,長 )
• conv_param ― 卷積層的超參數(字典)。字典的關鍵字如下:
filter_num ― 濾波器的數量
filter_size ― 濾波器的大小
stride ― 步幅
pad ― 填充
• hidden_size ― 隱藏層(全連接)的神經元數量
• output_size ― 輸出層(全連接)的神經元數量
• weitght_int_std ― 初始化時權重的標准差
LeNet
LeNet在1998年被提出,是進行手寫數字識別的網路。如圖7-27所示,它有連續的卷積層和池化層(正確地講,是只「抽選元素」的子采樣層),最後經全連接層輸出結果。
和「現在的CNN」相比,LeNet有幾個不同點。第一個不同點在於激活函數。LeNet中使用sigmoid函數,而現在的CNN中主要使用ReLU函數。
此外,原始的LeNet中使用子采樣(subsampling)縮小中間數據的大小,而現在的CNN中Max池化是主流。
AlexNet
在LeNet問世20多年後,AlexNet被發布出來。AlexNet是引發深度學習熱潮的導火線,不過它的網路結構和LeNet基本上沒有什麼不同,如圖7-28所示。
AlexNet疊有多個卷積層和池化層,最後經由全連接層輸出結果。雖然結構上AlexNet和LeNet沒有大的不同,但有以下幾點差異。
• 激活函數使用ReLU。
• 使用進行局部正規化的LRN(Local Response Normalization)層。
• 使用Dropout
TF2.0實現卷積神經網路
valid意味著不填充,same是填充
or the SAME padding, the output height and width are computed as:
out_height = ceil(float(in_height) / float(strides[1]))
out_width = ceil(float(in_width) / float(strides[2]))
And
For the VALID padding, the output height and width are computed as:
out_height = ceil(float(in_height - filter_height + 1) / float(strides[1]))
out_width = ceil(float(in_width - filter_width + 1) / float(strides[2]))
因此,我們可以設定 padding 策略。在 tf.keras.layers.Conv2D 中,當我們將 padding 參數設為 same 時,會將周圍缺少的部分使用 0 補齊,使得輸出的矩陣大小和輸入一致。
② 用於量子計算機的深度卷積神經網路
量子計算機將用於什麼用途?量子計算機有望在許多領域幫助解決難題,包括機器學習。
本文詳細講述 量子計算機 上 卷積神經網路 (CNN)的理論實現。我們將此演算法稱為 QCNN ,我們證明了它可以比CNN 更快 地運行,並且精度 很高 。
為此,我們必須提出 卷積積 的 量子形式 ,找到實現非線性和池化的方法,以及對 表示圖像 的 量子態 進行層析成像的新方法,以 保留有意義的信息 。
簡而言之,我們可以說 量子物理系統可以描述為 維度為2^n的某些希爾伯特空間中的 向量 ,其中n是粒子數。實際上,這些向量表示許多可能的觀察結果的疊加。
另一方面,機器學習,尤其是神經網路,正在粗略地使用向量和矩陣來理解或處理數據。 量子機器學習(QML)旨在使用量子系統對向量進行編碼,並使用新的量子演算法對其進行學習 。一個關鍵的概念是在許多矢量上使用量子疊加,我們可以同時處理它們。
我不會更深入地介紹量子計算或QML。有關更多詳細信息,可以參考NeurIPS 2019中有關 Quantum k-means的 一篇文章 :
卷積神經網路(CNN)是一種流行且高效的神經網路,用於圖像分類,信號處理等。在大多數層中,將 卷積積 應用於圖像或張量的輸入上。通常後面是 非線性層和池化層 。
3D張量輸入X ^ 1(RGB圖像)和4D張量內核K ^ 1之間的卷積。
在本章中,我將重點介紹一層,解釋什麼是量子CNN。
這里的核心思想是我們可以根據矩陣乘法來重新構造卷積積。
該演算法首先以量子疊加方式載入矩陣的 所有行和列 。然後,我們使用先前開發的 Quantum Inner Proct Estimation估算 輸出的每個像素。在實踐中,這就像只計算一個輸出像素(圖中的紅點),但是以 量子疊加的方式進行計算可以使它們同時全部都具有 !然後,我們可以同時對它們中的每一個應用非線性。
不幸的是,我們所擁有的只是一個量子狀態,其中所有像素並行存在,並不意味著我們可以訪問所有像素。如果我們打開"量子盒"並查看結果(一個度量),我們 每次都會隨機地只看到一個輸出像素 。在打開盒子之前,這里都有"四處漂浮"的東西,就像著名的薛定諤的死活貓。
為了解決這個問題,我們引入了一種 只檢索最有意義的像素的方法 。實際上,量子疊加中的每個輸出像素都有一個幅度,與我們測量系統時 被看到 的幅度有關。在我們的演算法中,我們強制此幅度等於像素值。 因此,具有高值的輸出像素更有可能被看到。
在CNN中,輸出中的高值像素非常重要。它們代表輸入中存在特定模式的區域。通過了解不同模式出現的位置,神經網路可以理解圖像。因此,這些 高價值像素承載著有意義的信息 ,我們可以舍棄其他希望CNN適應的 像素 。
圖像上量子效應(雜訊,隨機性,采樣)的小示例。憑直覺,我們僅對高值像素采樣後仍可以"理解"圖像。
請注意,在對這些輸出像素進行采樣時,我們可以在存儲它們時應用任何類型的 合並 (有關技術細節,請參見論文)。我們將這些像素存儲在經典內存中,以便可以將它們重新載入為 下一層的 輸入。
傳統上,CNN層需要時間 Õ( 輸出大小 x 內核大小 ) 。這就是為什麼例如使用許多大內核來訓練這些網路變得昂貴的原因。我們的 量子CNN 需要時間 為O( ( σ X 輸出大小) X Q) ,其中 σ 是我們從輸出(<1)繪制樣品的比率,和 Q 表示量子精度參數和數據相關的參數一束。有 沒有在內核大小更依賴 (數量和尺寸),這可能允許進行更深入的CNN。
通過量子CNN的這種設計,我們現在也想用量子演算法對其進行訓練。訓練包括遵循梯度下降規則更新內核參數。在這里也可以找到一種更快的量子演算法,它幾乎等同於具有某些額外誤差的通常的梯度下降。
QCNN和量子反向傳播看起來不錯,但暗示了很多近似,雜訊和隨機性。盡管有這些偽像,CNN仍然可以學習嗎?我們比較了小型經典CNN的訓練和QCNN在學習對手寫數字進行分類(MNIST數據集)的任務上的模擬。這表明 QCNN可以以相似的精度學習 。
量子和經典CNN訓練曲線之間的比較。 σ 是從每一層後的輸出提取的高值像素的比率。期望 σ 太小,QCNN可以很好地學習。請注意,此數值模擬很小,只能給出直覺,不是證明。
在這項工作中,我們設計了第一個量子演算法,通過引入量子卷積乘積和檢索有意義的信息的新方法,幾乎可以重現任何經典的CNN體系結構。它可以允許使用更深,更大的輸入或內核來大大加快CNN的速度。我們還開發了量子反向傳播演算法,並模擬了整個訓練過程。
請讀者思考的問題:我們可以在其他數據集使用大型架構上訓練QCNN嗎?
③ 卷積神經網路
關於花書中卷積網路的筆記記錄於 https://www.jianshu.com/p/5a3c90ea0807 。
卷積神經網路(Convolutional Neural Network,CNN或ConvNet)是一種具有 局部連接、權重共享 等特性的深層前饋神經網路。卷積神經網路是受生物學上感受野的機制而提出。 感受野(Receptive Field) 主要是指聽覺、視覺等神經系統中一些神經元的特性,即 神經元只接受其所支配的刺激區域內的信號 。
卷積神經網路最早是主要用來處理圖像信息。如果用全連接前饋網路來處理圖像時,會存在以下兩個問題:
目前的卷積神經網路一般是由卷積層、匯聚層和全連接層交叉堆疊而成的前饋神經網路,使用反向傳播演算法進行訓練。 卷積神經網路有三個結構上的特性:局部連接,權重共享以及匯聚 。這些特性使卷積神經網路具有一定程度上的平移、縮放和旋轉不變性。
卷積(Convolution)是分析數學中一種重要的運算。在信號處理或圖像處理中,經常使用一維或二維卷積。
一維卷積經常用在信號處理中,用於計算信號的延遲累積。假設一個信號發生器每個時刻t 產生一個信號 ,其信息的衰減率為 ,即在 個時間步長後,信息為原來的 倍。假設 ,那麼在時刻t收到的信號 為當前時刻產生的信息和以前時刻延遲信息的疊加:
我們把 稱為 濾波器(Filter)或卷積核(Convolution Kernel) 。假設濾波器長度為 ,它和一個信號序列 的卷積為:
信號序列 和濾波器 的卷積定義為:
一般情況下濾波器的長度 遠小於信號序列長度 ,下圖給出一個一維卷積示例,濾波器為 :
二維卷積經常用在圖像處理中。因為圖像為一個兩維結構,所以需要將一維卷積進行擴展。給定一個圖像 和濾波器 ,其卷積為:
下圖給出一個二維卷積示例:
注意這里的卷積運算並不是在圖像中框定卷積核大小的方框並將各像素值與卷積核各個元素相乘並加和,而是先把卷積核旋轉180度,再做上述運算。
在圖像處理中,卷積經常作為特徵提取的有效方法。一幅圖像在經過卷積操作後得到結果稱為 特徵映射(Feature Map) 。
最上面的濾波器是常用的高斯濾波器,可以用來對圖像進行 平滑去噪 ;中間和最下面的過濾器可以用來 提取邊緣特徵 。
在機器學習和圖像處理領域,卷積的主要功能是在一個圖像(或某種特徵)上滑動一個卷積核(即濾波器),通過卷積操作得到一組新的特徵。在計算卷積的過程中,需要進行卷積核翻轉(即上文提到的旋轉180度)。 在具體實現上,一般會以互相關操作來代替卷積,從而會減少一些不必要的操作或開銷。
互相關(Cross-Correlation)是一個衡量兩個序列相關性的函數,通常是用滑動窗口的點積計算來實現 。給定一個圖像 和卷積核 ,它們的互相關為:
互相關和卷積的區別僅在於卷積核是否進行翻轉。因此互相關也可以稱為不翻轉卷積 。當卷積核是可學習的參數時,卷積和互相關是等價的。因此,為了實現上(或描述上)的方便起見,我們用互相關來代替卷積。事實上,很多深度學習工具中卷積操作其實都是互相關操作。
在卷積的標準定義基礎上,還可以引入濾波器的 滑動步長 和 零填充 來增加卷積多樣性,更靈活地進行特徵抽取。
濾波器的步長(Stride)是指濾波器在滑動時的時間間隔。
零填充(Zero Padding)是在輸入向量兩端進行補零。
假設卷積層的輸入神經元個數為 ,卷積大小為 ,步長為 ,神經元兩端各填補 個零,那麼該卷積層的神經元數量為 。
一般常用的卷積有以下三類:
因為卷積網路的訓練也是基於反向傳播演算法,因此我們重點關注卷積的導數性質:
假設 。
, , 。函數 為一個標量函數。
則由 有:
可以看出, 關於 的偏導數為 和 的卷積 :
同理得到:
當 或 時, ,即相當於對 進行 的零填充。從而 關於 的偏導數為 和 的寬卷積 。
用互相關的「卷積」表示,即為(注意 寬卷積運算具有交換性性質 ):
在全連接前饋神經網路中,如果第 層有 個神經元,第 層有 個神經元,連接邊有 個,也就是權重矩陣有 個參數。當 和 都很大時,權重矩陣的參數非常多,訓練的效率會非常低。
如果採用卷積來代替全連接,第 層的凈輸入 為第 層活性值 和濾波器 的卷積,即:
根據卷積的定義,卷積層有兩個很重要的性質:
由於局部連接和權重共享,卷積層的參數只有一個m維的權重 和1維的偏置 ,共 個參數。參數個數和神經元的數量無關。此外,第 層的神經元個數不是任意選擇的,而是滿足 。
卷積層的作用是提取一個局部區域的特徵,不同的卷積核相當於不同的特徵提取器。
特徵映射(Feature Map)為一幅圖像(或其它特徵映射)在經過卷積提取到的特徵,每個特徵映射可以作為一類抽取的圖像特徵。 為了提高卷積網路的表示能力,可以在每一層使用多個不同的特徵映射,以更好地表示圖像的特徵。
在輸入層,特徵映射就是圖像本身。如果是灰度圖像,就是有一個特徵映射,深度 ;如果是彩色圖像,分別有RGB三個顏色通道的特徵映射,深度 。
不失一般性,假設一個卷積層的結構如下:
為了計算輸出特徵映射 ,用卷積核 分別對輸入特徵映射 進行卷積,然後將卷積結果相加,並加上一個標量偏置 得到卷積層的凈輸入 再經過非線性激活函數後得到輸出特徵映射 。
在輸入為 ,輸出為 的卷積層中,每個輸出特徵映射都需要 個濾波器以及一個偏置。假設每個濾波器的大小為 ,那麼共需要 個參數。
匯聚層(Pooling Layer)也叫子采樣層(Subsampling Layer),其作用是進行特徵選擇,降低特徵數量,並從而減少參數數量。
常用的匯聚函數有兩種:
其中 為區域 內每個神經元的激活值。
可以看出,匯聚層不但可以有效地減少神經元的數量,還可以使得網路對一些小的局部形態改變保持不變性,並擁有更大的感受野。
典型的匯聚層是將每個特徵映射劃分為 大小的不重疊區域,然後使用最大匯聚的方式進行下采樣。匯聚層也可以看做是一個特殊的卷積層,卷積核大小為 ,步長為 ,卷積核為 函數或 函數。過大的采樣區域會急劇減少神經元的數量,會造成過多的信息損失。
一個典型的卷積網路是由卷積層、匯聚層、全連接層交叉堆疊而成。
目前常用卷積網路結構如圖所示,一個卷積塊為連續 個卷積層和 個匯聚層( 通常設置為 , 為 或 )。一個卷積網路中可以堆疊 個連續的卷積塊,然後在後面接著 個全連接層( 的取值區間比較大,比如 或者更大; 一般為 )。
目前,整個網路結構 趨向於使用更小的卷積核(比如 和 )以及更深的結構(比如層數大於50) 。此外,由於卷積的操作性越來越靈活(比如不同的步長),匯聚層的作用變得也越來越小,因此目前比較流行的卷積網路中, 匯聚層的比例也逐漸降低,趨向於全卷積網路 。
在全連接前饋神經網路中,梯度主要通過每一層的誤差項 進行反向傳播,並進一步計算每層參數的梯度。在卷積神經網路中,主要有兩種不同功能的神經層:卷積層和匯聚層。而參數為卷積核以及偏置,因此 只需要計算卷積層中參數的梯度。
不失一般性,第 層為卷積層,第 層的輸入特徵映射為 ,通過卷積計算得到第 層的特徵映射凈輸入 ,第 層的第 個特徵映射凈輸入
由 得:
同理可得,損失函數關於第 層的第 個偏置 的偏導數為:
在卷積網路中,每層參數的梯度依賴其所在層的誤差項 。
卷積層和匯聚層中,誤差項的計算有所不同,因此我們分別計算其誤差項。
第 層的第 個特徵映射的誤差項 的具體推導過程如下:
其中 為第 層使用的激活函數導數, 為上采樣函數(upsampling),與匯聚層中使用的下采樣操作剛好相反。如果下采樣是最大匯聚(max pooling),誤差項 中每個值會直接傳遞到上一層對應區域中的最大值所對應的神經元,該區域中其它神經元的誤差項的都設為0。如果下采樣是平均匯聚(meanpooling),誤差項 中每個值會被平均分配到上一層對應區域中的所有神經元上。
第 層的第 個特徵映射的誤差項 的具體推導過程如下:
其中 為寬卷積。
LeNet-5雖然提出的時間比較早,但是是一個非常成功的神經網路模型。基於LeNet-5 的手寫數字識別系統在90年代被美國很多銀行使用,用來識別支票上面的手寫數字。LeNet-5 的網路結構如圖:
不計輸入層,LeNet-5共有7層,每一層的結構為:
AlexNet是第一個現代深度卷積網路模型,其首次使用了很多現代深度卷積網路的一些技術方法,比如採用了ReLU作為非線性激活函數,使用Dropout防止過擬合,使用數據增強來提高模型准確率等。AlexNet 贏得了2012 年ImageNet 圖像分類競賽的冠軍。
AlexNet的結構如圖,包括5個卷積層、3個全連接層和1個softmax層。因為網路規模超出了當時的單個GPU的內存限制,AlexNet 將網路拆為兩半,分別放在兩個GPU上,GPU間只在某些層(比如第3層)進行通訊。
AlexNet的具體結構如下:
在卷積網路中,如何設置卷積層的卷積核大小是一個十分關鍵的問題。 在Inception網路中,一個卷積層包含多個不同大小的卷積操作,稱為Inception模塊。Inception網路是由有多個inception模塊和少量的匯聚層堆疊而成 。
v1版本的Inception模塊,採用了4組平行的特徵抽取方式,分別為1×1、3× 3、5×5的卷積和3×3的最大匯聚。同時,為了提高計算效率,減少參數數量,Inception模塊在進行3×3、5×5的卷積之前、3×3的最大匯聚之後,進行一次1×1的卷積來減少特徵映射的深度。如果輸入特徵映射之間存在冗餘信息, 1×1的卷積相當於先進行一次特徵抽取 。
④ CNN(卷積神經網路)是什麼
在數字圖像處理的時候我們用卷積來濾波是因為我們用的卷積模版在頻域上確實是高通低通帶通等等物理意義上的濾波器。然而在神經網路中,模版的參數是訓練出來的,我認為是純數學意義的東西,很難理解為在頻域上還有什麼意義,所以我不認為神經網路里的卷積有濾波的作用。接著談一下個人的理解。首先不管是不是卷積神經網路,只要是神經網路,本質上就是在用一層層簡單的函數(不管是sigmoid還是Relu)來擬合一個極其復雜的函數,而擬合的過程就是通過一次次back propagation來調參從而使代價函數最小。
⑤ 卷積神經網路通俗理解
卷積神經網路通俗理解如下:
卷積神經網路(CNN)-結構
① CNN結構一般包含這幾個層:
輸入層:用於數據的輸入
卷積層:使用卷積核進行特徵提取和特徵映射
激勵層:由於卷積也是一種線性運算,因此需要增加非線性映射
池化層:進行下采樣,對特徵圖稀疏處理,減少數據運算量。
全連接層:通常在CNN的尾部進行重新擬合,減少特徵信息的損失
輸出層:用於輸出結果
② 中間還可以使用一些其他的功能層:
歸一化層(Batch Normalization):在CNN中對特徵的歸一化
切分層:對某些(圖片)數據的進行分區域的單獨學習
融合層:對獨立進行特徵學習的分支進行融合
卷積神經網路(CNN)-輸入層
① CNN的輸入層的輸入格式保留了圖片本身的結構。
② 對於黑白的 28×28的圖片,CNN 的輸入是一個 28×28 的二維神經元。
③ 對於 RGB 格式的 28×28 圖片,CNN 的輸入則是一個3×28×28 的三維神經元(RGB中的每一個顏色通道都有一個 28×28 的矩陣)
2)卷積神經網路(CNN)-卷積層
感受視野
① 在卷積層中有幾個重要的概念:
local receptive fields(感受視野)
shared weights(共享權值)
② 假設輸入的是一個 28×28 的的二維神經元,我們定義 5×5 的 一個 local receptive fields(感受視野),即 隱藏層的神經元與輸入層的 5×5 個神經元相連,這個 5*5 的區域就稱之為 Local Receptive Fields,