天天看點

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

論文原址:https://arxiv.org/abs/1811.07275

摘要

       一個訓練好的網絡模型由于其模型捕捉的特征中存在大量的重疊,可以在不過多的降低其性能的條件下進行壓縮剪枝。一些skip/Dense網絡結構一定程度上減弱了重疊的現象,但這種做法引入了大量的計算及記憶體。本文從更改訓練方式的角度來解決上述問題。本文發現,通過對模型進行臨時裁剪,并對一定的filter進行恢複,重複操作,可以減少特征中的重疊效應,同時提高了模型的泛化能力。本文證明目前的壓縮标準在語義上并不是最優的,本文引入filters間的正交性來作為等級标準并以此來決定表達能力不足的filter。本方法不僅适用于卷積網絡,同樣适用于更複雜的現代模型,尤其是針對小模型的應用。

介紹

       卷積網絡在不同的視覺任務中都表現的較為出色,歸結于其獨特的網絡結構。盡管網絡結構不同,但不同任務的優化方法是相同的。這些方法将每個權重看作是獨立的個體,并對其進行單獨的更新。針對特定結構的卷積訓練過程被确定下來。卷積網絡中的filter為基本單元。一個filter并不是單獨的權重參數,而是一組空間核。

        模型中存在大量的參數,是以,一個訓練好的卷積網絡中存在大量備援的filter。模型壓縮中對filter進行剪枝,而不是參數這點就可以看出來。大多數剪枝算法在損失一定模型性能的前提下,減少大量的filters。但是如果從頭訓練一個較少filter的模型,與一個訓練過的大型模型經過裁剪後,二者其尺寸相似,但二者性能卻不比對,較小參數的模型性能很難與大型模型的相比對。而标準的訓練過程是通過額外可剪枝的filter進行模型學習,是以,卷積網絡的訓練過程仍存在較大的提升空間。

        本文提出了一種訓練機制,在正常訓練疊代幾輪後,臨時丢棄一些filters。reduced後的網絡經過額外的訓練後,将丢棄的filters重新引入。對其以新的權重進行初始化,然後接着進行标準的訓練過程。本文發現這樣做可以提高模型的性能。本文發現經過一定的标準決定要丢棄哪個filter可以提高模型的性能,如果更準确的标準進行分級,還可以得到更好的性能。根據最近的理論,大型模型的性能與大量子網絡的初始化決定。本文方法是保留大量有用的子網絡并對作用不大的filters重新進行初始化。

        本文的另一個亮點是基于一種可解釋性的标準來指導filter剪枝。本文實驗發現标準的參數filter剪枝技術不是最優的,本文通過引入準則來進行高效的計算同時提高模型的性能。該标準基于卷積層中filter間的正交性,其效果超過了用于網絡剪枝的基于重要性分級的方法。本文觀察到即使是小型網絡也會有備援filters,是以,參數備援不僅存在于參數量較大的模型中,其主要是由于低效的訓練方法産生。本文的目标是通過更改訓練政策而不是網絡結構來提高減少備援的filters同時提高卷積網絡的表示能力。

       訓練機制:許多訓練方法被提出來用于防止模型過拟合同時提高模型的泛化能力。在訓練深度網絡時Dropout是一種常用的方法。通過随機丢棄一些神經元可以防止feature detectors之間的互相影響。相似的,一些研究通過提出機率pooling卷積網絡的激活值來實作相似的dropout。一些随機訓練建議随機丢棄一些層來防止極端的過拟合情況。相對的,本文使用的是線性組合的特征,而不是對特征進行複制。Dense-Sparse-Dense,一種相似的訓練機制,在訓練的中間階段進行權重正則化來建立稀疏權重,然後,移除正則化來恢複dense權重。DSD主要作用于單個參數,而本文的方法是應用于整個卷積核上。

        模型壓縮:  Knowledg Ditillation是一種訓練機制,利用來自大型預訓練模型(teacher)的soft logits來訓練較小的模型(student)。soft logits捕獲的目标物的分級資訊并提供一個平滑的損失函數進行優化。使小模型更易于訓練與收斂。然而,Born-Again-Network結果顯示,如果一個學生模型與教師模型的體量相近,則其可以超越teacher模型。知識蒸餾的其他模型需要訓練幾個模型,而本文的訓練機制不依賴于教師,同時,相比KD,需要的訓練較少。同時,将本文的方法與KD進行結合可以得到更好的性能。

        神經元分級: 尋找響應最大的權重或者神經元已經有很長時間了。LeCun等人使用具有二階導的Hessian矩陣,其可以識别較弱的神經元,而且要比使用權重表現較好。而計算Hessian需要大量的計算資源,是以,該方法并未廣泛的使用。對權重進行正則化處理可以有效的進行分級評判進而産生稀疏的模型。稀疏模型并不會加速inference,但作為神經元分級準則,其是有效的。利用激活層中的Average percentage of Zeros以及資料驅動的門檻值來決定cut-off。

        結構搜尋:  網絡結構搜尋是在訓練過程中模型結構發生變化,同時,對于一個給定的資料集,搜尋多個網絡結構進而得到一個最好的。如果網絡的結構是固定的,則該方法并沒有任何作用。本文對于一個給定的結構,更好的使用可利用的參數。如果在最終結構靈活變化,則可以将本文的方法與結構搜尋結合使用,當由于記憶體等限制使網絡結構固定時,該方法可以用于自身。

        特征相關性: 卷積網絡的一個顯著缺點是其相關的feature maps,Inception-Net用于分析各個層之間特征的統計相關性。通過拼接不同尺寸filter的feature map來減少層與層之間的相關性。ResNet以及DenseNet等通過與以前的層的激活層進行相加或者拼接來減少層之間的相關性。但這種做法需要大量的計算及記憶體。本文的做法是在不改變網絡結構的前提下引入非相關性特征。

正交特征的啟發

       一個卷積filter中的特征定義為filter中個别filter的激活值的相加和。如果一個feature可以提高模型的泛化能力,則說明此feature是有用的。泛化能力較弱的一個模型其在激活空間捕捉的方向是有限的。另一方面,如果一個模型的特征與另一個特征正交,則可以在激活空間中捕捉不同方向的資訊,進而提高了模型的泛化能力。對于一個正常的卷積網絡,可以通過分析層與層之間特征的相關性來計算得到最大表示的filters,然後将這些filters進行組合。然而,這些措施對于卷積網絡應用到實際場景中需要大量的計算資源。一種替代方法是對于基于SGD的訓練的損失增加了一個正則化處理進而促進了激活值最小化收斂,但這種方法對于模型的提升效果有限。一種相似的做法是促進filter weights之間的正交性。有研究發現,低層次的filter與對應的相反階段是重複的,讓filters趨于正交化則會減少重複性,同時有利于提高模型的性能及泛化能力,同時也有利于訓練時收斂的穩定性。由于RNN對初始條件較為敏感,是以,需要進行正交化初始化,但此舉并不完全适用于卷積網絡。上述因素促使本文思考如何将正交初始化用于卷積網絡中,同時将偏差進行分級評價。由于輸入資料的feature map是互相獨立的,是以要得到正交需要在整個訓練過程中計算資料的統計分布,這裡計算量有點龐大。而本文隻計算filter weights之間的正交。本文通過實驗發現通過對權重加正則化不足以促進用于捕捉整個輸入資料範圍的特征的建立。本文減少filters重疊性可以看作是一種隐式的正則化,同時,在不影響收斂的前提下,提高了filter weight的正交性。

       本文采用Canonical Correlation Analysis(CCA)來分析一層網絡中的特征的重疊度。CCA評估發現,對于随機變量的線性組合之間表現出最大的相關性。CCA可以很好的判斷學習到的特征是否重複。有研究通過分析不同層的激活發現,卷積網絡結構學習相似的表達力。将CCA與SVD結合起來分析不同層中激活值的相關性發現,增加模型的深度不一定增加模型的次元。這是由于學習到的特征有幾層是相關的。比如VGG16這種參數量較多的網絡。其中幾層卷積,每層有512個卷積核,其filter必定存在大量的相關性,其中50%的卷積核被丢棄後,其性能仍可以保持。本文為了驗證備援問題不僅存在在大參數模型中,後面有設計了一個小型的模型,通過分析發現,該模型仍無法完整的捕捉訓練資料的整個空間。是以,該問題與網絡參數規模不太相關,與訓練的姿勢有關。

       對于一個訓練的模型,可以通過一個個移除filter來驗證模型性能的損失來評估該filter的作用。這種标準被稱為greedy Oracle。本文對模型中的每個核應用該方法。結果如下圖2右所示。前兩層中的大部分filter對模型準确率的貢獻不足1%,個别的filter超過4%。這就表明即使是小型模型也可以在降低損失的前提下對filter進行剪枝。如下左圖所示,不同層激活值的線性組合的相關性,其中,有幾層具有較強的相關性。第二層相比第一層具有更多重疊的特征。總之,通過正常的訓練無法最大化網絡的表示能力。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

訓練機制:RePR

       本文更改訓練過程,循環的将filter進行裁剪,然後進行再訓練,接着對剪裁的filter進行重初始化。如此循環。本文将每個Filter(3D張量)作為一個單獨的單元。同時,将其看作是一個長向量f,定義M為一個具有F個filters的模型傳播L層。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

代表F的一個子集。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

表示一個完整的模型,而

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

表示移除

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

個filters後的模型。本文的訓練機制再完整模型及子模型之間進行替換。這裡引入了兩個參數,第一個是交換前需要訓練疊代的次數。S1代表完整模型的疊代次數,S2代表子模型的疊代次數。這兩個數值需要進行精心設計,進而可以使網絡再前面網絡的基礎上性能有所提升。第二個超參數是控制該訓練機制交替的次數。這裡定義為N。該值具有超出範圍的最小影響,同時不需要進行微調。

       本文算法最重要的部分是用于将filters進行分級的準則。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

代表該标準,與filter的值有關。可以是正則化的權重,或者權重的梯度,或者本文的标準,一層中filter間的相關性。

       本文的算法是一個微觀層級的同時并不是一個權重更新準則。是以不屬于SGD或者Adam,RmsProp等調整方法。本文方法可以任何算法結合使用,但如果優化算法需要對學習率進行初始化,最好需要對剪枝的權重的相關學習率重新進行初始化。同樣對于BN相關的也需要進行重新初始化。本文将

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

filter被剪裁前初始化為正交的。同樣初始化為被剪裁的filters

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

,通過對來自相同層的權重進行QR分解來找的null-space同時,使用基于此找到正交初始化點。

       本文算法全程:Re-initailizing-Pruning-Repr,算法流程如下

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

       本文選用一個淺層模型來分析我們訓練機制的動态變化及該機制再訓練測試上的作用。淺層的模型可以計算每個filter的greedy Oracle ranking。這樣可以确定訓練機制對結果的影響,而不會應為排名标準而混淆結果。

       考慮一個n層沒有skip及dense結構的卷積網絡,每個含有X個filter,表示如下。定義該結構為

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

,是以,

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

表示含有96個卷積核。基于學習率為0.01的SGD進行訓練,得到0.73的測試準确率。結果如下圖所示。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)
論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

        本例中,RePr機制設定S1=20,S2=10,N=3,p%=30,以及分級标準R為greedy Orcale。從訓練集中移除5k張圖檔作為validation用于計算oracle分級。在training plot中标記A标出了權重第一次被剪裁的位置。标記C表示該點測試的準确率。該點的準确率比訓練的點A的準确率要低。這是由于大部分模型都處于過拟合。而D點的準确率與C相同,而D模型參數隻有C的70%。

        讓人驚訝的點是E點。在引入剪裁後的filters的疊代幾輪後其性能超過了C點。而C點與E點的容量是形同的。而且E更高的準确率并不是由于模型的收斂。在進行正常訓練時,測試準确率并未發生變化。模型首先增加網絡,然後進行剪枝,其不再适用于另一個階段,是以間接提高性能。然而這種做法不利于獲得小型模型。基于RePr再進行兩次疊代,則F點處70%的模型得到的性能與100%的模型的效果是相似的。

        從圖中還可以看出來Repr模型訓練的準确率更低,這表示模型某種形式上的正則化。如下圖右邊所示。雖然測試準确率下降很快,但訓練與測試之間的差距不斷減少。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

評價标準:inter-filter 正交性

       搜尋的目的是找到至少兩個方面的重要的filters,(1)計算大型網絡的greedy oracel不會産生過多的計算量。(2)greedy oracel可能不是最優标準。如果一個filter捕捉一個特殊的方向,則其無法用其他filters線性組合将其進行替代。在接下來的再初始化及訓練後,可能很難恢複到原來的方向設定中。

       由激活層捕捉的方向用于描述模型的容量。生成正交化特征可以最大化捕捉的方向以及網絡的表示能力。在密集層中,正交權重會得到正交化的特征。然而,無法确定的是如何捕捉卷積網絡中的正交性。一個卷積層的參數組成一個sparse kernel,同時共享輸入的激活層。一個卷積層中的所有參數是否都應該考慮其正交性?促進權重正交初始化的理論基于密集連接配接。同時遵循深度學習庫将卷積層看作一個巨型向量。最近研究卷積filters正交性其動力在于深層網絡的收斂性,同時,其并不是特征正交性。本文實驗發現較好的性能是一層中filter之間的正交性,而不是kernel級别的正交性。

       一個kxk的卷積核通常是3D的張量kxkxc,将此張量拉伸未1D張量。其大小未k*k*c,并将其表示為f.

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

表示第l層filters的數量。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

L為卷積網絡的層數。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

為l層的拉伸向量。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

代表正則化後的權重。則l層中的filter f按如下等式計算。

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

 filter中P的某一行非對角線元素表示與f相同層中其他filter的映射。當對于給定的filter,其他filters是正交的,則該行的和最小。對filters進行排序,并将最重要的filter進行剪枝。雖然計算一個層中的單個filter,但排序作用在網絡的整個filters中。本文并不強制對每層進行排序,因為需要對每層學習一個産參數p%,而其中一些層要比其他層更為敏感。本文對deeper的網絡層相比earlyer層剪枝更多的filters。這很符合給定網絡中每個filter分布一緻。

       本文标準的計算并不需要很多的計算量,比如Hessian的反矩陣及二階導,而且該标準對任意尺寸的網絡該标準都适用。最大的計算量是矩陣L,其大小為

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

,而本文的計算仍比權重的正則化,激活值及Average percentage of Zeros的計算量大。有了正交的filter後,一個問題應運而生就是是否可以在損失函數上增加一個soft懲罰來改進訓練。本文實驗在損失函數中增加了

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

,但并未看到任何提升。對所有filters進行正則化懲罰,同時改變損失函數的外形使權重進行随機正交,并未有所改進。

實驗

論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)
論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)
論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)
論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)
論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)
論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)
論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)
論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)
論文閱讀筆記六十二:RePr: Improved Training of Convolutional Filters(CVPR2019)

Reference

       [1] Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun.Deep residual learning for image recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2016. 1, 2, 8

       [2] Tsung-Yi Lin, Priya Goyal, Ross B. Girshick, Kaiming He,and Piotr Doll´ar. Focal loss for dense object detection. IEEE transactions on pattern analysis and machine intelligence,2018. 1

       [3] Kaiming He, Georgia Gkioxari, Piotr Doll´ar, and Ross B.Girshick. Mask r-cnn. 2017 IEEE International Conference on Computer Vision (ICCV), 2017. 1