1.Depthwise卷積相關知識
優點:計算量和運算成本較低
缺點:輸入層每個通道獨立進行卷積運算,無法有效利用不同通道在相同空間位置上的Feature信息。
Depthwise Convolution的一個卷積核負責一個通道,一個通道只被一個卷積核卷積。上面所提到的常規卷積每個卷積核是同時操作輸入圖片的每個通道,其卷積核數量與上一層通道數相同,Depthwise Convolution完成后的Feature map數量與輸入層的通道數相同,無法擴展Feature map。
2.1*1卷積核的作用
增加網絡的非線性能力,可以更好的擬合參數
完成降維和升維的作用
可以減少參數量,降低計算成本和計算復雜度
3.反卷積相比其他上采樣層的缺點,棋盤格現象怎么產生的?
反卷積是上采樣的一種,其他的有線性插值法:最鄰近插值(NN),雙線性插值(Biliner)缺點之一可能就是產生棋盤格效應,在圖像生成的任務中,由于最后添加了反卷積層,導致
4.3D卷積和2D卷積的區別,存在的問題,如何加速運算
3D卷積能保留輸入信號的時間信息,2D卷積不能保留輸入信息的時間信息;2D卷積提取單張圖像的空間特征,3D卷積能夠提取圖像之間的時間維度上的物體的運動信息。
5.卷積核大小如何選取
在感受野相同的情況下,卷積核越小,參數量和計算量越小;一般先選擇33的卷積核尺寸,因為11和2*2無法提升感受野,無論padding如何操作,輸入輸出都尺寸一致。對于卷積層數和卷積核個數一般都是trial and error沒有統一的標準,也就是說在由層數和通道數組成的超參數集合中,一般是通過實驗選擇最優的參數。
6.卷積層減少參數的方法?
PW卷積:Pointwise Convolution,俗稱 1x1 卷積,主要用于數據降維,減少參數量;
多個小尺寸卷積代替大卷積核,加深網絡的同時減少參數量
精巧的Bottleneck結構可以減少參數量
采用精巧的Depthwise Separable Conv(深度可分卷積)設計
7.Dropout的原理
dropout改變之前稠密網絡中,權重統一學習,參數統一更新的模式,提出在每次訓練迭代中,讓網絡中的部分參數得到學習,即部分參數得到更新,部分參數保持不更新。由于每次選擇激活的神經元是隨機的,dropout可以看成是集成學習bagging的一種。
可以消除減弱了神經元節點間的聯合適應性,增強了泛化能力
8.樸素貝葉斯的一些知識點
樸素貝葉斯最重要的一個假設是:屬性條件獨立性假設,解決了聯合概率無法拆分運算的問題。
先求出類別的先驗概率,乘以類別之下各個屬性的條件概率,最后最大化二者的乘積就是NB分類器的判別準則。
半樸素貝葉斯適當考慮一部分屬性間的相互依賴信息,獨依賴估計就是其中常用的策略,其假設每個屬性在類別之外最多依賴其他的一個屬性。
樸素貝葉斯與極大似然估計的一些區別和聯系:
極大似然估計估計的參數是固定形式的一個未知變量,其具體運算只需要用到微分即可,但是貝葉斯估計是將參數視為有某種已知先驗分布的隨機變量。
Tips:極大似然估計的目的是利用已知的樣本結果,反推最有可能(最大概率)導致這種結果的參數值。“模型已定,參數未知”利用實驗結果得到某個參數值能夠使樣本出現的概率最大。
9.直接轉置卷積和先上采樣再卷積的區別
反卷積會產生棋盤效應,上采樣+卷積不會出現這種情況
10.MaxPooling怎么傳遞導數
對于max pooling 而言,對于非極大值而言是沒有梯度的,因為輕微地改變它們并不影響結果,此外,max可以近似看作斜率為1,因為輸出的值等于max.因此,梯度是從下一層當中反向傳播到取得最大值的神經元上的,所有其他的神經元梯度值為0。
源碼中有一個max_idx_的變量,這個變量就是記錄最大值所在位置的,因為在反向傳播中要用到
11.CNN中池化的作用
下采樣;降維去除冗余信息對特征進行壓縮減小參數量 ;實現非線性;可以擴大感受野;可以實現不變性:平移不變性、旋轉不變性和尺度不變性。
12.Shufflenet的結構
ShuffleNet的核心就是用pointwise group convolution,即是只在組內進行Pointwise卷積,但是這種分組Pointwise卷積會帶來卷積通道之間信息溝通不流暢的問題,為了解決這個問題channel shuffle被提出來和depthwise separable convolution代替ResNet block的相應層構成了ShuffleNet uint,達到了減少計算量和提高準確率的目的。channel shuffle解決了多個group convolution疊加出現的邊界效應,pointwise group convolution和depthwise separable convolution主要減少了計算量
ShuffleNetv2中提出了一些高效率網絡結構的設計原則:1、使用平衡的卷積,及通道數一樣 2、分組卷積會帶來計算消耗 3、減少網絡的分支 4、減少element-wise(元素級)操作ReLU,ADD和depthwise convolution;同時網絡中采用了channel split的操作,減少了像ShuffleNetv1中的Add和ReLU操作
13.池化的理解和總結
池化的作用:1、下采樣,對特征圖進行壓縮 2、降維、去除冗余信息、對特征進行壓縮、簡化網絡復雜度、減小計算量、減小內存消耗等等。3、擴大感受野 4、
可以實現不變性,其中不變形性包括,平移不變性、旋轉不變性和尺度不變性。
平均池化:計算圖像區域的平均值作為該區域池化后的值。
最大池化:選圖像區域的最大值作為該區域池化后的值。
全局平均池化:可對特征圖實現降維,輸入為NCHW,輸出為NC11,選特征圖的平均值作為整幅特征圖的輸出,可直接輸入給softmax做分類
全局最大池化:選特征圖的最大值作為整幅特征圖的輸出
重疊池化:重疊池化就是,相鄰池化窗口之間有重疊區域
空間金字塔池化(Spatial Pyramid Pooling):它將一個pooling變成了多個scale的pooling。用不同大小池化窗口作用于上層的卷積特征。也就是說 spatital pyramid pooling layer就是把前一卷積層的feature maps的每一個圖片上進行了3個卷積操作,并把結果輸出給全連接層。其中每一個pool操作可以看成是一個空間金字塔的一層。
空間金字塔池化可以把任意尺度的圖像的卷積特征轉化成相同維度,這不僅可以讓CNN處理任意尺度的圖像,還能避免cropping和warping操作,導致一些信息的丟失,具有非常重要的意義。
14.Resnet的結構特點以及解決的問題是什么
ResNet的動機在于認為擬合殘差比直接擬合潛在映射更容易優化;結構特點就是引入了殘差塊結構,讓網絡不在直接擬合F(x)而是擬合F(x)=H(x)-X, ResNet中,所有的Residual Block都沒有pooling層,降采樣是通過conv的stride=2實現的ResNet要解決的其實是深度神經網絡的退化問題,即為在訓練集上準確率下降的現象,過擬合時候準確率是應該上升的。即為不是由過擬合引起的plain net的梯度消失和梯度爆炸問題
15.Unet的結構為什么要先下采樣,上采樣
U-Net想要利用跳過連接融合不同尺度的信息,其中的下采樣就是利用卷積神經網絡來做的實現的是特征提取,而上采樣通過反卷積來做。
16.ResnetV1到ResnetV2的改進是什么?Resnet怎么完成下采樣過程的?
改進了Res unit,繼續保持了恒等映射,并且采用BN層作為預激活函數加強對模型的正則化;ResNet中的下采樣是通過改變卷積核的步長來調節的,其中無論是在Basicblock或者Bottleneck中都是在3x3的卷積核中進行的,而且是在每一個stage的第一個殘差單元中進行的
17.FPN的結構特點
自然地利用了CNN中每一層輸出內在的多尺度特征,即為金字塔形式,主要采用Top-Down和橫向連接以此融合具有高分辨率的淺層layer和具有豐富語義信息的深層layer。這樣就實現了從單尺度的單張輸入圖像,快速構建在所有尺度上都具有強語義信息的特征金字塔
18.ROI pooling和ROI align的區別
RolPooling可以使生成的候選框region proposal映射產生固定大小的feature map,
其中最大地區別,RolPooling采用最鄰近插值法,ROI align采用地是雙線性插值,在進行小目標物體檢測地時候,后者會更精確。
19.簡單說下AlexNet、Vgg、ResNet、DenseNet、GoogleNet的特色是什么
網絡逐漸加深,其中
AlexNet:首次采用了dropout data augmentation, LRN(local response normalizetion)解決過擬合,采用了Relu作為激活函數,收斂速度加快,并且使用了Dropout來防止過擬合。Overlapping Pooling:利用pooling的步長小于尺寸來實現
Vgg:采用較小的卷積核,替代大卷積核。增加了網絡的非線性,減少了參數量,使得網絡的深度更深。但是更深的網絡深度增加了模型的性能,且vgg中也采用了11的卷積但是其不像Inception里面采用11的卷積整合通道,可以理解成只是進一步引入非線性,增加網路的深度
Googlenet:提出Inception的結構,也即是NIN(Network in Network),這種結構可以改變通道數,參數減少模型除了在深度上增加,還增加了網絡的寬度
ResNet:引入殘差結構,使用這種跳過連接,是的更深層的網絡可有效訓練
DenseNet:引入密集連接,使用來自當前層之前的所有層的信息,DenseNet中的dense connectivity就是一種升級版的shortcut connection
20.怎么計算感受野,怎么增加感受野**
其中對于第一層j=r=1,j表示特征圖輸出之間的間隔,
下采樣卷積和擴張卷積可以增加感受野的大小。
擴張卷積:也被稱為空洞卷積或者膨脹卷積,是在標準的卷積核中注入空洞,以此來增加模型的感受野(reception field)。相比原來的正常卷積操作,擴張卷積多了一個參數: dilation rate,指的是卷積核的點的間隔數量,比如常規的卷積操作dilatation rate為1。
21.為什么卷積神經網絡適合于做視頻和圖像,還能用于其它領域嗎?
卷積神經網絡具有天然的局部連接和權值共享的特性。可以降低計算量,應對參數量巨大的問題。
22.CNN中能夠自然起到防止過擬合的辦法
卷積天然具有稀疏連接和權重共享的特點、可以降低參數量,防止過擬合,提升模型的泛化能力。除了卷積層的這兩個特點之外,池化層可以降低網絡參數,也可以降低網絡的過擬合
23.CNN中的感受野和權值共享是什么意思?
24.BN層的作用,為什么有這個作用?在訓練和測試時有什么不同,在測試時怎么使用?
BN也即Batch Normalization,批規范化。在深度網絡中每一層的輸入分布都會因為前層的參數變化而改變,這會導致我們不得不采用更低的學習率以及更小心的初始化等方式,減慢了模型的訓練。BN就是通過每一個mini batch的規范化解決這一問題。
以CNN為例,每一層輸入的數據多為 NWHC的張量,N表示batch size,WH是特征圖大小,C指的是特征數或通道數。BN層對每個通道對應的NWH的數據進行歸一化,并進行變化重構,變化重構參數 γ \gammaγ和β \betaβ是可學習的,首先對輸入數據取均值和標準差,并進行歸一化,? \epsilon?是防止除0的很小數值,然后對歸一化后的數據進行變換重構。
BN層在訓練階段,對每一批mini-batch的數據分別求均值與方差用于規范化,但在測試階段,這一值使用的是全期訓練數據的均值方差,也即模型訓練到當前狀態所有數據的均值方差,這個數據是在訓練過程中通過移動平均法得到的。
25.BN層做預測時候,方差均值怎么算的,Online learning的時候怎么算的?
BN層在訓練階段,對每一批mini-batch的數據分別求均值與方差用于規范化,但在測試階段,這一值使用的是全期訓練數據的均值方差,也即模型訓練到當前狀態所有數據的均值方差,這個數據是在訓練過程中通過移動平均法得到的。
26.SequeezeNet:
網絡設計方面:
1、11卷積替換33卷積,減少參數量
2、減少33卷積的輸入通道數,此處使用的是11的卷積來實現降維,好處是:減少運算量,同時當通道平衡時,可以減少MAC
3、延遲降采樣,可以提高網絡精度
架構上:Fire Moudle 由Squeeze和expand層來實現
27.MobileNetV1
使用深度可分離卷積構建輕量級神經網絡:
DW:每個卷積核應用在一個通道上。
DW:組合通道卷積的輸出
1.使用深度可分離卷積代替傳統卷積
DW卷積輸出的特征之間沒有信息交流,信息流通不暢,DW進行濾波操作
PW卷積可實現通道特征的信息交流,PW卷積負責通通道轉換
2.使用步長為2的卷積替換池化層
MobileNetV2的改進和優化:
1、反轉殘差:由于DW卷積提取特征本身較少,如果采用傳統的先壓縮后擴張的方式,無法提取豐富的特征,MobileNetV2采用先擴張再壓縮的方式(具體的操作是在DW卷積之前采用了PW卷積),保證網絡提取更多的特征
2、線性瓶頸:為了方式relu對提取特征的破壞,MobileNetV2在殘差塊的逐元素級求和之前不再使用relu作為激活函數,而是使用線性激活函數來替代,防止relu破壞特征。
28.什么是Soft attention和****hard attention?
29.Dropout的機制,為什么能抑制過擬合?
Dropout的核心思想是訓練時以一定的概率p(通常是50%)關閉隱藏層神經元的輸出,也就是輸出為0。這種策略可以從不同角度理解:首先這使得每次訓練的模型并不是相同的結構,可以認為是原網絡的子集,最終的輸出是這些不同模型不同結構共同作用的結果(類似于集成學習中Bagging的策略);另外Dropout方法可以讓神經元之間減小依賴性,因為隨機的關閉可以使得神經元之間不會總是同時作用。
綜合來看,BN層在訓練和測試的主要區別在于:訓練時的均值方差來源于當前的mini-batch數據,而測試時,則要使用訓練使用過的全部數據的均值方差,這一點訓練時就通過移動均值方法計算并保存下來了;Dropout方法的訓練測試區別在于:訓練時隨機的關掉部分神經元,而測試時所有神經元都工作但都要乘上系數(可以理解為訓練了很多子模型,測試時要求他們加權求和的結果,可以按照集成學習中的bagging來理解)。
30.神經網絡中權重參數為什么不能初始化為0,會發生什么?
當神經網絡中權重參數初始化為0,在反向傳播更新參數的過程中,會導致每一層的參數相同,那么隱層節點數目再多也相當于一個,神經網絡失去意義,這種現象叫做隱層神經元的對稱性,通常是權重參數隨機初始化,b初始化為0,可以使得參數都能得到更新。
我們也可以發現,梯度的消失爆炸不僅與激活函數的導數有關,還與各層權重相乘有關。
31.為什么訓練時候在計算資源允許的情況下,使用較大的batch
從BN的角度理解,BN訓練時候使用batch的均值和方差代表數據的分布,測試時候使用全量數據的均值和方差,當一批數據較大的時候,可以更好的代表訓練集的分布,縮減了與全量數據的差別。