
圖 CNN卷積神經網路
注:博客配圖均為參考
一、CNN簡介
CNN即卷積神經網路(據了解神經網路分好幾種,CNN是其中一種,還有DNN、RNN、BP等形式的神經網路),是深度學習(deep learning)的代表演算法之一,擅長處理影像特別是影像識別等相關機器學習問題,CNN的經典用例是執行影像分類,例如查看寵物的影像并判斷它是貓還是狗,
卷積網路通過一系列方法,成功將資料量龐大的影像識別問題不斷降維,最終使其能夠被訓練,學習這玩意兒可以類比生物學當中的神經元(比如樹突、細胞核、軸突、軸突末梢),每兩個神經元之間的連接代表加權值,稱之為權重(weight),不同的權重和激活函式,則會導致神經網路不同的輸出,

這是感知機(單層),我認為復雜的卷積神經網路就是通過好幾個單層感知機連接在一起形成多層感知機,進而形成最終的神經網路,感知機說白了就是一種演算法,只是名字高大上,它可以接收多個輸入信號,輸出一個信號,
那么形成了多層感知機之后,可以將整個神經網路分為輸入層、輸出層、隱藏層,其中有多個隱藏層就意味著有多個激活函式

二、卷積層(Convolution Layer)
首先先了解輸入層,入層一般代表了一張圖片的像素矩陣,可以用三維矩陣代表一張圖片,三維矩陣的長和寬代表了影像的大小,而三維矩陣的深度代表了影像的色彩通道,比如黑白圖片的深度為1,而在RGB色彩模式下,影像的深度為3,


中間那個叫卷積核,也可以叫過濾器,其尺寸一般為3×3或5×5,輸出的特征圖尺寸與卷積核相同,一張圖中的一個像素點其中一個通道計算程序如上,而一整張圖完整計算程序如下,
在這個程序中有幾個需要注意的引數:
a. 深度depth:神經元個數,決定輸出的depth厚度,同時代表濾波器個數,
b. 步長stride:決定滑動多少步可以到邊緣,
c. 填充值zero-padding:在外圍邊緣補充若干圈0,方便從初始位置以步長為單位可以剛好滑倒末尾位置,通俗地講就是為了總長能被步長整除,


輸出大小計算:

三、池化層(Pooling Layer)
池化層不會改變三維矩陣的深度,但是它可以縮小矩陣的大小,減少冗余,既可以加快計算速度也可以防止過擬合,
池化層分為最大池化層和平均池化層(巨好理解,如下圖所示),

四、全連接層
在經過多輪卷積層和池化層的處理之后,在CNN的最后一般會由1到2個全連接層來給出最后的分類結果,經過幾輪卷積層和池化層的處理之后,可以認為影像中的資訊已經被抽象成了資訊含量更高的特征,我們可以將卷積層和池化層看成自動影像特征提取的程序,在提取完成之后,仍然需要使用全連接層來完成分類任務,
從左往右看,第一層可以看作第二層特征的細分,第二層看作第三層特征的細分,第三層看作輸出層特征的細分(類比評價一個人(輸出層)可以分為長相、人品、成績,而長相又能分為高矮胖瘦,同理人品和成績也能細分出其他評價標準,而高矮胖瘦由能細分出具體多高,BIM值之類的,其他標準一次類推(這個類比是從右往左看)),

五、激活函式
作用:分類(應該沒有理解錯)
舉個例子(參考他人博客),想去看一場近期要舉辦的演唱會,那么決定你是否去有二個因素,這二個因素可以對應二個輸入,分別用x1、x2表示,此外,這二個因素對做決策的影響程度不一樣,各自的影響程度用權重w1、w2表示,所以,我們可以如下表示:
x1:是否有喜歡的演唱嘉賓, = 1 你喜歡這些嘉賓, = 0 你不喜歡這些嘉賓,嘉賓因素的權重 = 7
x2:是否有人陪你同去, = 1 有人陪你同去, = 0 沒人陪你同去,是否有人陪同的權重 = 3,
g(z) = g( w1*x1 +w2 *x2 + b ),g表示激活函式,這里的b可以理解成為更好達到目標而做調整的偏置項,
一個簡單的線性激活函式是g(z) = z,輸出都是輸入的線性變換,后來實際應用中發現,線性激活函式太過局限,于是人們引入了非線性激活函式,
常用激活函式如下,sigmoid/tanh比較常見于全連接層,relu常見于卷積層,
Sigmoid的函式運算式
Tanh的函式運算式
ReLU的函式運算式
Softplus的函式運算式
六、BN操作
對每一批資料進行歸一化
注:下面內容為參考
一個標準的歸一化步驟就是減均值除方差,那這種歸一化操作有什么作用呢?,

a中左圖(sigmoid函式)是沒有經過任何處理的輸入資料,如果資料在梯度很小的區域,那么學習率就會很慢甚至陷入長時間的停滯,減均值除方差后,資料就被移到中心區域如右圖所示,對于大多數激活函式而言,這個區域的梯度都是最大的或者是有梯度的,對于一層如此,如果對于每一層資料都那么做的話,資料的分布總是在隨著變化敏感的區域,相當于不用考慮資料分布變化了,這樣訓練起來更有效率,
學習鏈接:??????(98條訊息) 深度學習——CNN(卷積神經網路)(超詳細)_程旭員的博客-CSDN博客_深度學習中cnn
(97條訊息) 卷積神經網路(CNN)介紹_AI 演算法筆記-CSDN博客_cnn介紹
(98條訊息) Python實作簡單的神經網路_cuijiekun的博客-CSDN博客_python神經網路
(98條訊息) CNN筆記:通俗理解卷積神經網路_結構之法 演算法之道-CSDN博客_卷積神經網路
(98條訊息) 手把手教你搭建卷積神經網路(CNN)_u013093426的博客-CSDN博客_搭建神經網路(98條訊息) 批歸一化(Batch Normalization)_c123_sensing的博客-CSDN博客(98條訊息) 手把手教你搭建卷積神經網路(CNN)_u013093426的博客-CSDN博客_搭建神經網路
(97條訊息) 卷積神經網路(CNN)到底是個什么鬼東西(結構及作用)_Dong的博客-CSDN博客(97條訊息) 【CNN長文詳解】大話卷積神經網路CNN(干貨滿滿)_zenRRan的博客-CSDN博客(97條訊息) 卷積神經網路(CNN)到底是個什么鬼東西(結構及作用)_Dong的博客-CSDN博客
(97條訊息) 神經網路與卷積神經網路入門(保證讓你懂)_sddzlsc的博客-CSDN博客_神經網路和卷積神經網路
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/353541.html
標籤:其他
上一篇:井字棋版本1.0(對抗人工智障)
