來(lái)源:機(jī)器學(xué)習(xí)算法那些事
卷積神經(jīng)網(wǎng)絡(luò)是以卷積層為主的深度網(wǎng)路結(jié)構(gòu),網(wǎng)絡(luò)結(jié)構(gòu)包括有卷積層、激活層、BN層、池化層、FC層、損失層等。卷積操作是對(duì)圖像和濾波矩陣做內(nèi)積(元素相乘再求和)的操作。
1. 卷積層
常見(jiàn)的卷積操作如下:
卷積操作 | 解釋 | 圖解 |
標(biāo)準(zhǔn)卷積 | 一般采用3x3、5x5、7x7的卷積核進(jìn)行卷積操作。??????? | |
分組卷積 | 將輸入特征圖按通道均分為 x 組,然后對(duì)每一組進(jìn)行常規(guī)卷積,最后再進(jìn)行合并。 | |
空洞卷積 | 為擴(kuò)大感受野,在卷積核里面的元素之間插入空格來(lái)“膨脹”內(nèi)核,形成“空洞卷積”(或稱膨脹卷積),并用膨脹率參數(shù)L表示要擴(kuò)大內(nèi)核的范圍,即在內(nèi)核元素之間插入L-1個(gè)空格。當(dāng)L=1時(shí),則內(nèi)核元素之間沒(méi)有插入空格,變?yōu)闃?biāo)準(zhǔn)卷積。 | |
深度可分離卷積 | 深度可分離卷積包括為逐通道卷積和逐點(diǎn)卷積兩個(gè)過(guò)程。???? | (通道卷積,2D標(biāo)準(zhǔn)卷積) (逐點(diǎn)卷積,1x1卷積) |
反卷積 | 屬于上采樣過(guò)程,“反卷積”是將卷積核轉(zhuǎn)換為稀疏矩陣后進(jìn)行轉(zhuǎn)置計(jì)算。 | |
可變形卷積 | 指標(biāo)準(zhǔn)卷積操作中采樣位置增加了一個(gè)偏移量offset,如此卷積核在訓(xùn)練過(guò)程中能擴(kuò)展到很大的范圍。 |
補(bǔ)充:
1 x 1卷積即用1 x 1的卷積核進(jìn)行卷積操作,其作用在于升維與降維。升維操作常用于chennel為1(即是通道數(shù)為1)的情況下,降維操作常用于chennel為n(即是通道數(shù)為n)的情況下。??????????????
降維:通道數(shù)不變,數(shù)值改變。
升維:通道數(shù)改變?yōu)閗ernel的數(shù)量(即為filters),運(yùn)算本質(zhì)可以看為全連接。卷積計(jì)算在深度神經(jīng)網(wǎng)絡(luò)中的量是極大的,壓縮卷積計(jì)算量的主要方法如下:
序號(hào) | 方法 |
1 | 采用多個(gè)3x3卷積核代替大卷積核(如用兩個(gè)3 x 3的卷積核代替5 x 5的卷積核) |
2 | 采用深度可分離卷積(分組卷積) |
3 | 通道Shuffle |
4 | Pooling層 |
5 | Stride = 2 |
6 | 等等 |
2. 激活層
介紹:為了提升網(wǎng)絡(luò)的非線性能力,以提高網(wǎng)絡(luò)的表達(dá)能力。每個(gè)卷積層后都會(huì)跟一個(gè)激活層。激活函數(shù)主要分為飽和激活函數(shù)(sigmoid、tanh)與非飽和激活函數(shù)(ReLU、Leakly ReLU、ELU、PReLU、RReLU)。非飽和激活函數(shù)能夠解決梯度消失的問(wèn)題,能夠加快收斂速度。??????????????常用函數(shù):ReLU函數(shù)、Leakly ReLU函數(shù)、ELU函數(shù)等ReLU函數(shù)Leakly ReLU函數(shù)
ELU函數(shù)
3. BN層(BatchNorm)介紹:通過(guò)一定的規(guī)范化手段,把每層神經(jīng)網(wǎng)絡(luò)任意神經(jīng)元的輸入值的分布強(qiáng)行拉回到均值為0,方差為1的標(biāo)準(zhǔn)正態(tài)分布。BatchNorm是歸一化的一種手段,會(huì)減小圖像之間的絕對(duì)差異,突出相對(duì)差異,加快訓(xùn)練速度。但不適用于image-to-image以及對(duì)噪聲明感的任務(wù)中。常用函數(shù):BatchNorm2dpytorch用法:nn.BatchNorm2d(num_features, eps, momentum, affine)num_features:一般輸入?yún)?shù)為batch_sizenum_featuresheight*width,即為其中特征的數(shù)量。eps:分母中添加的一個(gè)值,目的是為了計(jì)算的穩(wěn)定性,默認(rèn)為:1e-5。momentum:一個(gè)用于運(yùn)行過(guò)程中均值和方差的一個(gè)估計(jì)參數(shù)(我的理解是一個(gè)穩(wěn)定系數(shù),類似于SGD中的momentum的系數(shù))。
affine:當(dāng)設(shè)為true時(shí),會(huì)給定可以學(xué)習(xí)的系數(shù)矩陣gamma和beta。
4. 池化層(pooling)介紹:pooling一方面使特征圖變小,簡(jiǎn)化網(wǎng)絡(luò)計(jì)算復(fù)雜度。一方面通過(guò)多次池化壓縮特征,提取主要特征。屬于下采樣過(guò)程。常用函數(shù):Max Pooling(最大池化)、Average Pooling(平均池化)等。MaxPooling 與 AvgPooling用法:1. 當(dāng)需綜合特征圖上的所有信息做相應(yīng)決策時(shí),通常使用AvgPooling,例如在圖像分割領(lǐng)域中用Global AvgPooling來(lái)獲取全局上下文信息;在圖像分類中在最后幾層中會(huì)使用AvgPooling。2. 在圖像分割/目標(biāo)檢測(cè)/圖像分類前面幾層,由于圖像包含較多的噪聲和目標(biāo)處理無(wú)關(guān)的信息,因此在前幾層會(huì)使用MaxPooling去除無(wú)效信息。
補(bǔ)充:上采樣層重置圖像大小為上采樣過(guò)程,如Resize,雙線性插值直接縮放,類似于圖像縮放,概念可見(jiàn)最鄰近插值算法和雙線性插值算法。實(shí)現(xiàn)函數(shù)有nn.functional.interpolate(input, size = None, scale_factor = None, mode = 'nearest', align_corners = None)和nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride = 1, padding = 0, output_padding = 0, bias = True)
5. FC層(全連接層)介紹:連接所有的特征,將輸出值送給分類器。主要是對(duì)前層的特征進(jìn)行一個(gè)加權(quán)和(卷積層是將數(shù)據(jù)輸入映射到隱層特征空間),將特征空間通過(guò)線性變換映射到樣本標(biāo)記空間(label)。全連接層可以通過(guò)1 x 1卷機(jī)+global average pooling代替??梢酝ㄟ^(guò)全連接層參數(shù)冗余,全連接層參數(shù)和尺寸相關(guān)。常用函數(shù):nn.Linear(in_features, out_features, bias)補(bǔ)充:分類器包括線性分類器與非線性分類器。
分類器 | 介紹?? | 常見(jiàn)種類 | 優(yōu)缺點(diǎn) |
線性分類器 | 線性分類器就是用一個(gè)“超平面”將正、負(fù)樣本隔離開(kāi) | LR、Softmax、貝葉斯分類、單層感知機(jī)、線性回歸、SVM(線性核)等 | 線性分類器速度快、編程方便且便于理解,但是擬合能力低 |
非線性分類器 | 非線性分類器就是用一個(gè)“超曲面”或者多個(gè)超平(曲)面的組合將正、負(fù)樣本隔離開(kāi)(即,不屬于線性的分類器) | 決策樹(shù)、RF、GBDT、多層感知機(jī)、SVM(高斯核)等 | 非線性分類器擬合能力強(qiáng)但是編程實(shí)現(xiàn)較復(fù)雜,理解難度大 |
6. 損失層介紹:設(shè)置一個(gè)損失函數(shù)用來(lái)比較網(wǎng)絡(luò)的輸出和目標(biāo)值,通過(guò)最小化損失來(lái)驅(qū)動(dòng)網(wǎng)絡(luò)的訓(xùn)練。網(wǎng)絡(luò)的損失通過(guò)前向操作計(jì)算,網(wǎng)絡(luò)參數(shù)相對(duì)于損失函數(shù)的梯度則通過(guò)反向操作計(jì)算。
常用函數(shù):分類問(wèn)題損失(離散值:分類問(wèn)題、分割問(wèn)題):nn.BCELoss、nn.CrossEntropyLoss等?;貧w問(wèn)題損失(連續(xù)值:推測(cè)問(wèn)題、回歸分類問(wèn)題):nn.L1Loss、nn.MSELoss、nn.SmoothL1Loss等。
7. Dropout層
介紹:在不同的訓(xùn)練過(guò)程中隨機(jī)扔掉一部分神經(jīng)元,以防止過(guò)擬合,一般用在全連接層。在測(cè)試過(guò)程中不使用隨機(jī)失活,所有的神經(jīng)元都激活。?????????????????????
常用函數(shù):nn.dropout
8. 優(yōu)化器介紹:為了更高效的優(yōu)化網(wǎng)絡(luò)結(jié)構(gòu)(損失函數(shù)最?。词蔷W(wǎng)絡(luò)的優(yōu)化策略,主要方法如下:
解釋?? | 優(yōu)化器種類? | 特點(diǎn) |
基于梯度下降原則(均使用梯度下降算法對(duì)網(wǎng)絡(luò)權(quán)重進(jìn)行更新,區(qū)別在于使用的樣本數(shù)量不同)?????? | GD(梯度下降); SGD(隨機(jī)梯度下降,面向一個(gè)樣本); BGD(批量梯度下降,面向全部樣本); MBGD(小批量梯度下降,面向小批量樣本)????? | 引入隨機(jī)性和噪聲 |
基于動(dòng)量原則(根據(jù)局部歷史梯度對(duì)當(dāng)前梯度進(jìn)行平滑) | Momentum(動(dòng)量法); NAG(Nesterov Accelerated Gradient) ??? | 加入動(dòng)量原則,具有加速梯度下降的作用???? |
自適應(yīng)學(xué)習(xí)率(對(duì)于不同參數(shù)使用不同的自適應(yīng)學(xué)習(xí)率;Adagrad使用梯度平方和、Adadelta和RMSprop使用梯度一階指數(shù)平滑,RMSprop是Adadelta的一種特殊形式、Adam吸收了Momentum和RMSprop的優(yōu)點(diǎn)改進(jìn)了梯度計(jì)算方式和學(xué)習(xí)率)??? | Adagrad; Adadelta; RMSprop; Adam????? | 自適應(yīng)學(xué)習(xí) |
常用優(yōu)化器為Adam,用法為:torch.optim.Adam。???????
補(bǔ)充:卷積神經(jīng)網(wǎng)絡(luò)正則化是為減小方差,減輕過(guò)擬合的策略,方法有:L1正則(參數(shù)絕對(duì)值的和); L2正則(參數(shù)的平方和,weight_decay:權(quán)重衰退)。
9. 學(xué)習(xí)率?介紹:學(xué)習(xí)率作為監(jiān)督學(xué)習(xí)以及深度學(xué)習(xí)中重要的超參,其決定著目標(biāo)函數(shù)能否收斂到局部最小值以及合適收斂到最小值。合適的學(xué)習(xí)率能夠使目標(biāo)函數(shù)在合適的時(shí)間內(nèi)收斂到局部最小值。????
常用函數(shù):torch.optim.lr_scheduler; ExponentialLR; ReduceLROnplateau; CyclicLR等。???????
卷積神經(jīng)網(wǎng)絡(luò)的常見(jiàn)結(jié)構(gòu)
常見(jiàn)結(jié)構(gòu)有:跳連結(jié)構(gòu)(ResNet)、并行結(jié)構(gòu)(Inception V1-V4即GoogLeNet)、輕量型結(jié)構(gòu)(MobileNetV1)、多分支結(jié)構(gòu)(SiameseNet; TripletNet; QuadrupletNet; 多任務(wù)網(wǎng)絡(luò)等)、Attention結(jié)構(gòu)(ResNet+Attention)
結(jié)構(gòu)???????????? | 介紹與特點(diǎn) | 圖示 |
跳連結(jié)構(gòu)(代表:ResNet) | 2015年何愷明團(tuán)隊(duì)提出。引入跳連的結(jié)構(gòu)來(lái)防止梯度消失問(wèn)題,今兒可以進(jìn)一步加大網(wǎng)絡(luò)深度。擴(kuò)展結(jié)構(gòu)有:ResNeXt、DenseNet、WideResNet、ResNet In ResNet、Inception-ResNet等??????????????? | |
并行結(jié)構(gòu)(代表:Inception V1-V4) | 2014年Google團(tuán)隊(duì)提出。不僅強(qiáng)調(diào)網(wǎng)絡(luò)的深度,還考慮網(wǎng)絡(luò)的寬度。其使用1×1的卷積來(lái)進(jìn)行升降維,在多個(gè)尺寸上同時(shí)進(jìn)行卷積再聚合。其次利用稀疏矩陣分解成密集矩陣計(jì)算的原理加快收斂速度。?? | |
輕量型結(jié)構(gòu)(代表:MobileNetV1) | 2017年Google團(tuán)隊(duì)提出。為了設(shè)計(jì)能夠用于移動(dòng)端的網(wǎng)絡(luò)結(jié)構(gòu),使用Depth-wise Separable Convolution的卷積方式代替?zhèn)鹘y(tǒng)卷積方式,以達(dá)到減少網(wǎng)絡(luò)權(quán)值參數(shù)的目的。擴(kuò)展結(jié)構(gòu)有:MobileNetV2、MobileNetV3、SqueezeNet、ShuffleNet V1、ShuffleNet V2等???????? | |
多分支結(jié)構(gòu)(代表:TripletNet)? | 基于多個(gè)特征提取方法提出,通過(guò)比較距離來(lái)學(xué)習(xí)有用的變量。該網(wǎng)絡(luò)由3個(gè)具有相同前饋網(wǎng)絡(luò)(共享參數(shù))組成的,需要輸入是3個(gè)樣本,一個(gè)正樣本和兩個(gè)負(fù)樣本,或者一個(gè)負(fù)樣本和兩個(gè)正樣本。訓(xùn)練的目標(biāo)是讓相同類別之間的距離竟可能的小,讓不同的類別之間距離竟可能的大。常用于人臉識(shí)別。 | |
Attention結(jié)構(gòu)(代表:ResNet+Attention) | 對(duì)于全局信息,注意力機(jī)制會(huì)重點(diǎn)關(guān)注一些特殊的目標(biāo)區(qū)域,也就是注意力焦點(diǎn),進(jìn)而利用有限的注意力資源對(duì)信息進(jìn)行篩選,提高信息處理的準(zhǔn)確性和效率。注意力機(jī)制有Soft-Attention和Hard-Attention區(qū)分,可以作用在特征圖上、尺度空間上、channel尺度上和不同時(shí)刻歷史特征上等。?????????????? |
-
神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
42文章
4734瀏覽量
100420 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8353瀏覽量
132315
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論