AI:IPPR的数学表示-CNN基本结构分析( Conv层、Pooling层、FCN层/softmax层)
??????? 類似于SVM,CNN為代表的DNN方法的邊緣參數(shù)隨著多類和高精度的要求必然增長。比如向量機方法,使用可以映射到無窮維的高斯核,即使進(jìn)行兩類分類,在大數(shù)據(jù)集上得到高精度,即保持準(zhǔn)確率和高精度的雙指標(biāo),支持向量的個數(shù)會隨著數(shù)據(jù)集增長,SVM三層網(wǎng)會變得非常寬。CNN方法的多層結(jié)構(gòu),在保留邊緣映射的數(shù)目的同時可以有效地降低“支持向量”的個數(shù),是通過函數(shù)復(fù)合—因式分解得到的,至于要使用多少層的網(wǎng)絡(luò),每一層網(wǎng)神經(jīng)元的個數(shù),兩層之間的鏈接方式,理論上也應(yīng)該有一般的指導(dǎo)規(guī)則。
?????? 參考鏈接:人工機器:作為歸納系統(tǒng)的深度學(xué)習(xí) ,參考文章:卷積神經(jīng)網(wǎng)絡(luò).卷積層和池化層學(xué)習(xí)? ,原始CNN論文,對摘抄段落有大量修改,如有疑問,請參考原文。16年的小總結(jié).
?
特征學(xué)習(xí)與結(jié)構(gòu)學(xué)習(xí)
??????? 深度學(xué)習(xí)以“數(shù)據(jù)驅(qū)動”范式顛覆了“人造特征”范式,完成“特征學(xué)習(xí)”,這是一個重大的進(jìn)步。但與此同時,它自己又陷入了一個“人造結(jié)構(gòu)”窠臼中。06年hinton教授發(fā)表在nature上的最初的論文,多層壓縮映射。給出的深度學(xué)習(xí)的方案是無監(jiān)督學(xué)習(xí)獲取網(wǎng)絡(luò)結(jié)構(gòu),之后再通過有監(jiān)督學(xué)習(xí)優(yōu)化參數(shù),DNN網(wǎng)絡(luò)的引爆點恰恰是結(jié)構(gòu)學(xué)習(xí)。大量利用未標(biāo)記數(shù)據(jù)學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)是深度學(xué)習(xí)最初的構(gòu)想。
但無論Hinton教授組最初設(shè)計的AlexNet,還是后來的VGG,GoogLeNet,ResNet等等,都是富有經(jīng)驗的專家人工設(shè)計出來的。給定一個新問題,到底什么樣的網(wǎng)絡(luò)結(jié)構(gòu)是最佳的(如多少卷積層)卻不得而知,這在一定程度上阻礙了深度學(xué)習(xí)在更多智能任務(wù)上的普及和應(yīng)用。因此,同時學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)和網(wǎng)絡(luò)參數(shù)是一個值得大力關(guān)注的研究方向。( 假設(shè)空間問題難以突破,至于過擬合欠擬合都沒有統(tǒng)一簡單的評判準(zhǔn)則,也因此難以使用機器自動完成,相對于給定結(jié)構(gòu)后使用數(shù)據(jù)結(jié)構(gòu)優(yōu)化參數(shù), 優(yōu)化結(jié)構(gòu)是個更加復(fù)雜且更高層的問題。多年已過,眾人發(fā)現(xiàn),ALexNet并非最優(yōu)結(jié)構(gòu),這是一個經(jīng)過大量專家枚舉結(jié)構(gòu)很長時間才得到的結(jié)果)。
???? ?? 而2006年Hinton教授等人倡導(dǎo)的卻恰恰是利用無監(jiān)督學(xué)習(xí)來對深層神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)訓(xùn)練。利用超量的數(shù)據(jù)學(xué)習(xí)網(wǎng)絡(luò)結(jié)構(gòu)是一個更耗費時間和計算能力的事情。此后,特別是DCNN興起之后,無監(jiān)督的預(yù)訓(xùn)練似乎已經(jīng)被很多研究者所拋棄( 特別是在CV領(lǐng)域,因為耗日持久,遠(yuǎn)不如使用專家經(jīng)驗代價更小)。
??????? 直接從大量無監(jiān)督數(shù)據(jù)中學(xué)習(xí)模型確實是非常困難的,即便是人這部“機器”,也有“狼孩”的例子警告我們“無師自通”似乎是不現(xiàn)實的。但“少量有導(dǎo)師數(shù)據(jù)+大量無導(dǎo)師數(shù)據(jù)”的模式也許是更值得大力研究的。
??????? Hinton教授提出的使用無監(jiān)督訓(xùn)練確定網(wǎng)絡(luò)結(jié)構(gòu),使用編碼/解碼器,對每次編碼/解碼進(jìn)行分解/重建,使用殘差逐層優(yōu)化編碼器,保證每一層對無標(biāo)簽樣本的壓縮函數(shù)的緊鄰特性,在理論上是可行的,但在實際運用中是極難實現(xiàn)的。這種方法需要比有標(biāo)簽樣本多更多的無標(biāo)簽樣本,以分析海量樣本中隱藏的模式,甚至需要高出一個或幾個級別的樣本數(shù)量,甚至是遍歷級別的樣本。在不停的調(diào)整網(wǎng)絡(luò)結(jié)構(gòu),預(yù)訓(xùn)練結(jié)束之前,憑專家知識可能已經(jīng)得到了近似最優(yōu)網(wǎng)絡(luò)結(jié)構(gòu)。
??????? 這是一個人腦分支定界法法和計算機遍歷方法的PK,現(xiàn)階段計算機遍歷的方法還是不現(xiàn)實的。
??????? 而工業(yè)上廣為流行的CNN結(jié)構(gòu)一般使用了ImageNet的分類模型,再通過微調(diào)使其適用于使用者自身研究的問題。這個眾人使用的ImageNet模型,便相當(dāng)于已經(jīng)通過非監(jiān)督學(xué)習(xí)學(xué)習(xí)了網(wǎng)絡(luò)結(jié)構(gòu)的預(yù)訓(xùn)練模型。
?
??????
?
CNN的結(jié)構(gòu)分析—卷積層
???????? CNN的二維結(jié)構(gòu)天然適合圖像特征提取和識別過程,卷積運算的計算過程及功能相當(dāng)于反向模板匹配。CNN通過卷積層,訓(xùn)練不同的卷積核來提取圖像中隱含的模式。CNN訓(xùn)練得到的是濾波器-卷積核,本質(zhì)上是對于某種特定的模式有響應(yīng),反之無響應(yīng),所以全卷積一直到最后一層,響應(yīng)最強的特征圖。
???????? 網(wǎng)如其名,CNN方法必然包含了一個卷積算子層。還是拿LeNet為例,結(jié)構(gòu)圖為:
????????
?
?????? LeNet使用了兩個卷積層,C1層和C3層。C1層,輸入圖片:32*32 ;卷積核大小:5*5 ;卷積核種類:6 ;輸出featuremap大小:28*28 (32-5+1);神經(jīng)元數(shù)量: 28 *28 *6; 可訓(xùn)練參數(shù):(5*5+1)*6(每個濾波器5*5=25個unit參數(shù)和一個bias參數(shù),一共6個濾波器);連接數(shù):(5*5+1)*6*28*28。
???????? C3層也是一個卷積層,輸入:S2中所有6個或者幾個特征map組合; 卷積核大小:5*5;卷積核種類:16; 輸出featureMap大小:10*10;C3中的每個特征map是連接到S2中的所有6個或者幾個特征map的,表示本層的特征map是上一層提取到的特征map的不同組合,存在的一個方式是:C3的前6個特征圖以S2中3個相鄰的特征圖子集為輸入。接下來6個特征圖以S2中4個相鄰特征圖子集為輸入。然后的3個以不相鄰的4個特征圖子集為輸入,最后一個將S2中所有特征圖為輸入;則:可訓(xùn)練參數(shù):6*(3*25+1)+6*(4*25+1)+3*(4*25+1)+(25*6+1)=1516;連接數(shù):10 *10 *1516 = 151600。
???????? 卷積層的作用:卷積神經(jīng)網(wǎng)絡(luò)中每層卷積層由若干卷積單元組成,每個卷積單元的參數(shù)都是通過反向傳播算法優(yōu)化得到的。卷積運算的目的是提取輸入的不同特征。使用不同的卷積核的組合,可實現(xiàn)梯度計算、尺度計算(配合maxpooling層)等作用,,可以對顯著性進(jìn)行選擇。第一層卷積層可能只能提取一些低級的特征如邊緣、線條和角等層級,更多層的網(wǎng)絡(luò)能從低級特征中迭代提取更復(fù)雜的特征(這也是深度的要求)。
????????
???????????????
???????????????????????? 圖片來自:卷積神經(jīng)網(wǎng)絡(luò).卷積層和池化層學(xué)習(xí)? ,摳圖于原始CNN論文
??? ? ?? 卷積層的更新模型:卷積層類似于BP網(wǎng)絡(luò)的二維描述,依然使用前向傳播計算輸出,使用反向傳播在訓(xùn)練過程中調(diào)整權(quán)重和偏置,更新網(wǎng)絡(luò)。參考卷積核的反傳算法。一般前向計算,把卷積方法轉(zhuǎn)換為圖像矩陣和卷積核矩陣的乘法形式,直接計算。
???????? 卷積層的Caffe表示:caffe直接給出了卷積層的參數(shù)調(diào)整方法,不需要自己設(shè)計卷積神經(jīng)元。
???????? AlexNet模型配置文件:輸出256個卷積圖,使用5*5的卷積核,使用高斯核,標(biāo)準(zhǔn)偏差為0.1。此層附帶了ReLu激活函數(shù)層。上層輸入為96.
layer {name: "conv2"type: "Convolution"bottom: "norm1"top: "conv2"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 0}convolution_param {num_output: 256pad: 2kernel_size: 5group: 2weight_filler {type: "gaussian"std: 0.01}bias_filler {type: "constant"value: 1}} } layer {name: "relu2"type: "ReLU"bottom: "conv2"top: "conv2" }?
CNN的結(jié)構(gòu)分析—Pooling層
?
??????? 使用卷積核提取的大量特征,產(chǎn)生超高的維度,面臨著表示困難的問題,且直接疊加的卷積層會產(chǎn)生更龐大的卷積特征集合。Pooling層一般作為顯著性選取和降維的作用存在。
??????? Pooling明顯地降低了特征圖的維度
???????? 使用MeanPooling的方式,相當(dāng)于平均化特性,用于簡化函數(shù)模型,同時喪失了一些特異性準(zhǔn)確性,增加泛化性能,即是把復(fù)雜模型轉(zhuǎn)化為一個平均模型,得失都很明顯。而maxpooling則描述為提取特征本身的顯著性作用,同時進(jìn)行數(shù)據(jù)壓縮。
????????
????????
???????? MeanPooling可以用網(wǎng)絡(luò)加深來替換其數(shù)據(jù)壓縮的作用,一個MeanPooling層相當(dāng)于網(wǎng)絡(luò)深度增加兩倍,而MeanPooling自身模型簡單化的特點喪失了準(zhǔn)確性表示,逐漸被取代一般不再被使用。上圖中,同樣地采用一個2*2的filter,max pooling是在每一個區(qū)域中尋找最大值,這里的stride=2,最終在原特征圖中提取主要特征得到右圖。概率意義上, MaxPooling 過程之后,特征更小且相對表示性更強。
???? ?? 參考文章:http://ufldl.stanford.edu/wiki/index.php/池化?
??????? 池化的平移不變性:如果人們選擇圖像中的連續(xù)范圍作為池化區(qū)域,并且只是池化相同(重復(fù))的隱藏單元產(chǎn)生的特征,那么,這些池化單元就具有平移不變性 (translation invariant)。這就意味著即使圖像經(jīng)歷了一個小的平移之后,依然會產(chǎn)生相同的 (池化的) 特征。在很多任務(wù)中 (例如物體檢測、聲音識別),我們都更希望得到具有平移不變性的特征,因為即使圖像經(jīng)過了平移,樣例(圖像)的標(biāo)記仍然保持不變。例如,如果你處理一個MNIST數(shù)據(jù)集的數(shù)字,把它向左側(cè)或右側(cè)平移,那么不論最終的位置在哪里,你都會期望你的分類器仍然能夠精確地將其分類為相同的數(shù)字。(*MNIST 是一個手寫數(shù)字庫識別庫: http://yann.lecun.com/exdb/mnist/)
??????? 池化的方式:可使用劃分池化的形式,也可以使用Overlap池化的形式。此外可以使用金字塔池化的形式,每層使用不同的池化單元,形成一個金字塔特征,也用于縮放不變性,同時可以處理一定的形變。
?????? 金字塔池化,可用于處理一定的仿射形變。
CNN的結(jié)構(gòu)分析—全鏈接層
???????? 使用卷積核提取的大量特征,產(chǎn)生超高的維度,同時使用MaxPooling層進(jìn)行維度壓縮同時選取明顯特征。CNN網(wǎng)絡(luò)通常反復(fù)堆疊Conv+MaxPooling層,變得更深,因此能提取更加全局更加高層的特征,同時不會產(chǎn)生太高的特征維度。對一個圖片輸入產(chǎn)生一個特征集合。
???????? 全鏈接層,連接所有的特征,把多個Map壓縮為1個X維向量,將輸出值送給分類器(如softmax分類器)
???????? ALexNet模型的配置文本如下:
layer {name: "fc7"type: "InnerProduct"bottom: "fc6"top: "fc7"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 0}inner_product_param {num_output: 4096weight_filler {type: "gaussian"std: 0.005}bias_filler {type: "constant"value: 1}} } layer {name: "relu7"type: "ReLU"bottom: "fc7"top: "fc7" } layer {name: "drop7"type: "Dropout"bottom: "fc7"top: "fc7"dropout_param {dropout_ratio: 0.5} } layer {name: "fc8"type: "InnerProduct"bottom: "fc7"top: "fc8"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 0}inner_product_param {num_output: 1000weight_filler {type: "gaussian"std: 0.01}bias_filler {type: "constant"value: 0}} }???????? 第7層全鏈接層輸出參數(shù)為4096,默認(rèn)表示輸出4096個維度向量。此外,設(shè)置的dropout率為0.5,則意味著使用了另外0.5的鏈接冗余,用于增強泛化能力。
?
CNN的結(jié)構(gòu)分析—SoftMax分類器
??????? CNN多數(shù)分類模型最終選擇了MLP+SoftMax分類器,使用MLP-全連接層進(jìn)行特征降維,SoftMax函數(shù)進(jìn)行分類。是否因為SoftMax分類器在多分類上的無偏性,便利性?訓(xùn)練時參數(shù)更新的更快。
??????? 為什么一定要把最后的分類器設(shè)置為處理向量空間的SoftMax分類器,而不是直接使用x*x—>1*1或者x*1—>1*1的卷積方式呢?。
??????? 使用Softmax回歸模型,該模型是logistic回歸模型在多分類問題上的推廣,在多分類問題中,類標(biāo)簽 可以取兩個以上的值。 Softmax回歸模型對于諸如MNIST手寫數(shù)字分類等問題是很有用的,該問題的目的是辨識10個不同的單個數(shù)字。Softmax回歸是有監(jiān)督的。
???????? SoftMax分類器:? http://ufldl.stanford.edu/wiki/index.php/Softmax......
???????
???????? SoftMax層計算過程:
???????
??????? Caffe配置文件:
layer {name: "fc8"type: "InnerProduct"bottom: "fc7"top: "fc8"param {lr_mult: 1decay_mult: 1}param {lr_mult: 2decay_mult: 0}inner_product_param {num_output: 1000weight_filler {type: "gaussian"std: 0.01}bias_filler {type: "constant"value: 0}} } layer {name: "accuracy"type: "Accuracy"bottom: "fc8"bottom: "label"top: "accuracy"include {phase: TEST} } layer {name: "loss"type: "SoftmaxWithLoss"bottom: "fc8"bottom: "label"top: "loss" }?
?
????????? 第8層全鏈接層輸出參數(shù)為1000,表示AlexNet模型默認(rèn)輸出1000個類別。
?
?
CNN結(jié)構(gòu)總結(jié)
??????? CNN方法對輸入圖像不停的卷積、pooling,提取更多的特征圖,使用全鏈接層映射到特定維度的特征向量空間,再通過MLP或者softmax分類器獲得圖像目標(biāo)分類。
??????? 檢測可以視為選取BoundingBox和分類的結(jié)合,而后出現(xiàn)的DarkNet更是直接產(chǎn)生了回歸模型。
??????? 下圖為典型的DeepID模型。
????????
???????
?????? Car的圖片經(jīng)過CNN層層特征提取和Polling過程,最后生成的Map經(jīng)過壓縮為m維向量,經(jīng)過SoftMax函數(shù),壓縮為n維浮點數(shù),然后經(jīng)過Max()函數(shù),取得分類結(jié)果。
總結(jié)
以上是生活随笔為你收集整理的AI:IPPR的数学表示-CNN基本结构分析( Conv层、Pooling层、FCN层/softmax层)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI:IPPR的数学表示-CNN结构进化
- 下一篇: 生活知识妙招:梅雨季节防潮窍门热水拖地效