本部落格已搬遷, 3秒後跳轉...

翻譯:Fractional Max-Pooling | Laplace's Lab

翻譯:Fractional Max-Pooling

作者:Benjamin Graham
原文:https://arxiv.org/abs/1412.6071

摘要

卷積網路幾乎總是包含若干特徵空間取樣(pooling)的形式,通常使用α x α max-pooling(α = 2)。最大取樣作用於卷積網路的隱藏層,以整數倍乘因子α來縮減隱藏層的大小。而當你拋棄了75%的數據所獲得的驚人副產物是—在網路中建立了一定程度對於平移與彈性形變的不變性。然而,如果你只是交替使用卷積層與最大取樣,則效能表現將會受限於特徵空間的快速縮減與取樣區域不相交的特性。因此,我們制訂了分數形式的最大取樣,允許α採用非整數值。分數階最大取樣是隨機的,因為構建合適的取樣區域有許多不同的方法。我們發現分數階最大取樣的形式減少了許多數據集的過擬合現象。例如,我們改善了CIFAR-100目前最先進的技術,甚至沒使用隨機去活化(dropout)。

卷積神經網路

卷積網路被使用來解決影像辨識問題,主要由兩種類型的分層結構組成:

  • 卷積濾波層
  • 若干形式的空間取樣,例如最大取樣(max-pooling)

聚焦於改善卷積層的研究造就了豐富的技術,例如dropout [10]、DropConnect [12]、deep networks with many small filters [2]、large input layer filters for detecting texture [5]以及deeply supervised networks [6]

相較之下,不起眼的取樣操作已經被逐漸忽略,長期以來2 × 2 max-pooling(MP2-pooling)已成為構建卷積神經網路的默認選項。MP2-pooling之所以受歡迎有許多原因:執行快速、能迅速縮減隱藏層的大小、對於平移與彈性形變有一定程度的不變性。然而,取樣區域的不相交特性可能限制其泛化能力。此外,由於MP2 pooling如此迅速地縮減了隱藏層的大小,因此需要透過堆疊連續的卷積層,以構建真正的深度網路 [7, 9, 11]。有兩種方法已經被提出來解決此問題:

  • 使用3 x 3取樣區域搭配步長2(strides = 2)的重疊取樣 [5]
  • 隨機取樣,即以大小偏差的取樣形式代替在每個取樣區域選擇最大值的動作 [13]

但是,這兩種技術仍將隱藏層大小縮減了兩倍。這令人不禁想問,是否能有更和緩的方法來有效地應用特徵空間取樣。如果取樣只讓隱藏層大小縮減$ \sqrt 2 $倍,那麼我們在構建卷積神經網路時能使用的取樣層數便能翻兩倍。每個取樣層都有機會以不同尺度來查看輸入影像,以正確的尺度查看影像,應該能更容易地辨識出線索特徵,並將物件標記為特定類別。

因此,本文的重點是最大取樣的一種特殊形式,我們稱之為分數階最大取樣(Fractional Max-Pooling, FMP), FMP的想法是,將影像的特徵空間尺寸縮小α倍(1 < α < 2)。如同隨機取樣,FMP在取樣過程中引入了一定程度的隨機性。然而,FMP與隨機取樣不同的是,其隨機性和取樣區域的選擇有關,而非每個取樣區域內的取樣方式。

於第二節中,我們將說明分數階最大取樣的形式。簡而言之,有三種選擇會影響FMP的實現方式:

  • 取樣的非整數值α決定了取樣層輸入和輸出的特徵空間尺寸比例。例如2 × 2最大取樣對應於α = 2的特定情況。
  • 取樣區域可以用隨機或偽隨機的方式來選擇。在FMP的隨機性和使用隨機去活化是否搭配數據增強(data augmentation)之間似乎得做適當的取捨,隨機的FMP或許可以表現得更好,但如果「過度」使用隨機去活化或訓練數據強化,則可能導致欠擬合(underfitting)。
  • 取樣區域可以不相交(disjoint)或重疊(overlapping)。不相交的區域較容易描述,但我們發現重疊區域的效果更好。

我們會在第三節中描述如何設計和訓練我們的卷積網路,並於第四節中展示MNIST手寫數字、CIFAR-10、CIFAR-100、阿薩姆語手寫文字以及CASIA-OLHWDB1.1手寫漢字等數據集的訓練結果。

分數階最大取樣

CNN的每個卷積濾波器都會產生一個隱含變數的矩陣,通常使用某種形式的取樣來縮減矩陣大小。最大取樣是一個採用$ N_{in} \times N_{in} $矩陣並返回較小的$ N_{out} \times N_{out} $輸出矩陣的過程,這是透過將$ N_{in} \times N_{in} $輸入正方形分割為$ N^2_{out} $個取樣區域$ (P_{i,j}) $而實現:
$$ (P_{i,j}) \subset \lbrace 1,2,…,N_{in} \rbrace ^2 \ \text{for each}\ (i,j) \in \lbrace 1,…,N_{out} \rbrace ^2 $$
接著令:
$$ Output_{i,j} = \displaystyle{\max_{(k,l)\in P_{i,j}}} Input_{k,l} $$

以我們的使用慣例2 x 2最大取樣而言,$ N_{in} = 2N_{out}\ and\ P_{i,j} = \rbrace 2i-1,2i \rbrace \times \rbrace 2j-1,2j \rbrace $。參考文獻 [5]中提到,最大取樣應用於3 x 3重疊取樣區域,因此$ N_{in} = 2N_{out}+1 $,$ P_{i,j} $為3 x 3正方形,以步長2進行擴展。上述兩種情況中,$ N_{in}\ /\ N_{out} \approx 2 $,因此輸入影像中任何有效特徵的空間大小會在每個取樣層中減半。相較之下,如果我們採用$ N_{in}\ /\ N_{out} \approx \sqrt[n]{2} $,則有效特徵的空間大小之縮小速率減緩N倍。為清楚起見,我們現在將重點放在$ N_{in}\ /\ N_{out} \in (1,2) $,因為我們主要感興趣的是準確率;如果對執行速度相當介意,則FMP可以採用$ N_{in}\ /\ N_{out} \in (2,3) $。


Figure 1:由左至右依序為36 x 36的網格;4個偽隨機的FMP不相交取樣區域,$ \alpha \in \lbrace \sqrt[3]{2},\sqrt 2,2,\sqrt 5 \rbrace $;以及$ \alpha = \sqrt 2 $的隨機的FMP不相交取樣區域。對$ \alpha \in (1,2) $,FMP生成的矩形取樣區域其邊長為1或2。對$ \alpha \in (2,3) $,其取樣區域邊長則為2或3。

給定一對特定數值$ (N_{in},N_{out}) $,我們需要一種選擇取樣區域$ (P_{i,j}) $的方法。我們將考慮兩種類型的排列方式:重疊的正方形以及不相交的矩形集合。在Figure 1中我們展示了數種不同的方法來將36 x 36正方形網格分割為不相交的矩形。Figure 1中的第2、第3及第6張影像可以用來定義重疊的2 x 2正方形的排列:將影像中每個矩形的左上角視為其中一個正方形的左上角。為標準化地描述如何生成取樣區域,令:
$$ (a_i)^{N_{out}}_{i=0}\ ,\ (b_i)^{N_{out}}_{i=0} $$

為兩個以1為起始、$ N_{in} $結束的整數遞增數列,且遞增量皆為1或2(i.e. $ a_{i+1}-a_i \in \lbrace 1,2 \rbrace $)。然後我們可以用以下任一方式定義取樣區域 :
$$ P = [a_{i-1},a_i-1] \times [b_{j-1},b_j-1]\ \text{or}\ P_{i,j} = [a_{i-1},a_i] \times [b_{j-1},b_j]\ \ (1) $$


Figure 2:左上角為柯達公司釋出的真實色彩圖片數據集,解析度為384 x 256(原始解析度為768 x 512)。其他五張影像則是以隨機的不相交FMP$ \sqrt 2 $取樣區域進行6層平均取樣的結果,解析度為左上角的八分之一。

我們稱這兩種情況分別為不相交和重疊,接著嘗試兩種不同的方法來生成整數序列:隨機數列以及偽隨機數列。如果數列的增加是透過對適當數量的1和2進行隨機排列而獲得的,那麼我們稱其為隨機數列。若是透過以下方式則稱之偽隨機數列:
$$ a_i = ceiling(\alpha(i+u)),\ \alpha \in (1,2)\ \text{with some}\ u \in (0,1) $$

以下是對應$ N_{in} = 25、N_{out} = 18 $之情況的增量模式,左側增量為隨機生成,右側增量則來自偽隨機數列:

211112112211112122       112112121121211212
111222121121112121       212112121121121211
121122112111211212       211211212112121121

儘管兩種類型的數列都是不規則的,但偽隨機數列所生成的取樣區域較隨機數列來得穩定。為顯示取樣區域隨機化的效果,請參考Figure 2。我們拍攝了一張影像,接著疊代使用不相交的隨機取樣區域來縮減影像大小(在每個取樣區域中取平均值)。結果按比例縮減的影像顯示出彈性形變。相反地,若我們使用偽隨機取樣區域,則生成的影像僅為原始影像的真實比例縮小版本。

實作方法




Figure 3:微型FMP$ \sqrt 2 $網路各層的空間大小如圖所示。分數$ \frac32,\frac64,\frac{10}{7} $近似於$ \sqrt 2 $。

我們將使用稀疏卷積網路的實例來進行訓練,這實際上意味著我們能逐層依序指定卷積網路的結構。例如:
$$ 10C2-FMP \sqrt 2 -20C-30C2-FMP \sqrt 2 -40C2-50C1-output $$

輸入層的空間大小是透過由右至左的運算所獲得的:每個C2卷積層將空間大小增加為2倍,FMP$ \sqrt 2 $層則是將空間大小增加為2倍(四捨五入至最接近的整數);參見Figure 3。輸入層通常會大於輸入影像—必要時會自動以0來補齊。分數階最大取樣也能輕易地在常用的卷積神經網路套件中實現。為簡單起見,我們使用的所有網路中每個卷積層的濾波器數量都呈線性增長。因此,我們能簡要地說明上述的網路結構為

$$ (10_nC2-FMP \sqrt 2)_3-C2-C1-output $$

$ 10_n $代表第n個卷積層中的濾波器數量為$ 10_n $,下標的3表示3對交替使用的C2/FMP層。使用隨機去活化時,進入的網路越深,所使用的隨機去活化數量就越多。我們在第一個隱藏層中使用0%隨機去活化,並在最後一個隱藏層中線性增加至50%。所使用的活化函數為leaky ReLU(帶滲漏整流線性函數)。

模型平均

每次我們基於訓練或測試目的而應用FMP網路時,都會使用不同的隨機或偽隨機序列來生成取樣區域。因此FMP網絡可以被視為相似網路的集合,而每個不同的取樣區域設定都定義了該集合的不同成員。 這類似於隨機去活化[10];隨機去活化其遮罩的不同數值可以用來定義相關網路的集合。如同隨機去活化,FMP網路的模型平均可以幫助提升效能。如果你對同一張測試影像進行多次分類,可能會得到許多不同的預測結果。對每個測試影像進行多次分類後,使用多數決可以大幅提升準確度;參見Figure 4。


Figure 4:重複測試對於一個由MNIST所訓練的FMP網路之影響

實驗結果


不使用數據增強或隨機去活化

為比較不同種類的分數階最大取樣,我們在$ \text{MNIST}^1 $以及CIFAR-100數據集上訓練FMP網路[4]。對於MNIST,我們使用了小型的FMP網路:
$$ \text{input layer size 36 x 36:}\ (36_nC2-FMP \sqrt 2)_6-C2-C1-output $$

對於CIFAR-100則使用了較大的網路:
$$ \text{input layer size 94 x 94:}\ (64_nC2-FMP \sqrt[3]{2})_{12}-C2-C1-output $$

在不使用訓練數據增強的情況下,這兩個數據集最新的測試誤差分別為0.39%以及34.57%[6]。FMP網路的結果如Table 1所示。使用重複測試12次的模型平均,我們發現使用隨機重疊取樣的FMP對這兩個數據集的表現最佳。對於CIFAR-100而言,此方法相較於常規的最大取樣有著相當程度的改進。就網路的複雜程度概括來說,CIFAR-100的網路擁有1200萬個權重參數,且經過250次訓練數據的重複訓練(在GeForce GTX 780上需耗費18小時)。我們嘗試改變CIFAR-100每層的隱藏單元數量,搭配隨機重疊取樣:

  • 使用$ {16}_nC2 $(0.8M weights)的測試結果誤差為42.07% / 34.87
  • 使用$ {32}_nC2 $(3.2M weights)的測試結果誤差為35.09% / 29.66
  • 使用$ {96}_nC2 $(27M weights)結合隨機去活化以及較為和緩的學習率衰減,測試結果誤差為27.62% / 23.82


Table 1:MNIST以及CIFAR-100的測試誤差

註1:http://yann.lecun.com/exdb/mnist/

阿薩姆語手寫文字

為比較FMP和MP2兩種取樣方式搭配訓練數據增強的影響,我們使用線上線上阿薩姆語手寫文字數據集來測試。此數據集包含了183個印度-雅利安文字中每個文字的45個樣本。「線上」的意思是指每一筆畫皆代表(x, y)座標序列。我們使用每個文字的前36個樣本做為訓練集,剩餘的9個樣本做為測試集,並將樣本縮放為64 x 64的大小來訓練一個有6層MP2的網路:
$$ 32_nC3-MP2-(C2-MP2)_{12}-C2-output $$

以及使用10層隨機的重疊FMP$ \sqrt 2 $取樣的FMP網路:
$$ (32_nC2-FMP\sqrt 2)_{10}-C2-C1-output $$

我們訓練了沒有使用隨機去活化的網路,以及:

  • 不使用數據增強
  • 使用隨機平移來位移文字
  • 使用仿射轉換(平移、旋轉、拉伸以及剪切的隨機組合)


Table 2:以阿薩姆語手寫文字數據集搭配不同類型的數據增強來訓練網路的測試誤差

參照Table 2。某種意義上來說,我們對於「在某種程度的輕微失真下,筆跡的意義通常是不變的」的認知,來自最大取樣與訓練數據增強這兩種不同的方式。有趣的是,不使用數據增強的FMP網路比起使用數據增強的MP2網路表現更好,顯示FMP網路更適合處理該數據集。

線上中文手寫文字

CASIA-OLHWDB1.1數據集包含了3755個獨立的GBK 1級漢字手寫樣本[8],每個類別大約有240個訓練樣本與60個測試樣本。使用4層的MP2取樣層可以達到5.61%的測試誤差[2]

我們使用[3]所描述的線上字符表示法;以64 x 64的大小繪製文字,加上量測筆跡方向的特徵,生成64 x 64 x 9的陣列。使用2 x 2最大取樣、隨機去活化以及仿射訓練數據增強,測試結果誤差為3.82% [3]。以偽隨機的重疊FMP取代最大取樣:
$$ (64_nC2-FMP\sqrt 2)_7-(C2-MP2-C1)_2-C2-C1-output $$

測試結果誤差為3.26%(1 test)以及2.97%(12 tests)。

CIFAR-10搭配隨機去活化與訓練數據增強

對於CIFAR-10數據集,我們使用了隨機去活化和透過仿射轉換來擴充訓練數據:隨機對數據集執行平移、旋轉、反射、拉伸及剪切的預處理。相較之下,人類在CIFAR-10數據集的表現估計為6%$ {}^2 $ 。而近期(2015)於Kaggle平台上的CIFAR-10競賽,獲勝者的測試誤差為4.47%$ {}^3 $, 使用上述的數據增強策略和以下的網路結構:
$$ (300_nC2-300_nC2-MP2)_5-C2-C1-output $$

使用偽隨機的重疊FMP網路:
$$ (160_nC2-FMP\sqrt[3]{2})_12-C2-C1-output $$

我們得到了4.50%(1 test),3.67%(12 tests)及3.47%(100 tests)的測試誤差。

註2:http://karpathy.github.io/2011/04/27/manually-classifying-cifar10/
註3:https://www.kaggle.com/c/cifar-10/
*原文中註2的原始網址已失效,推測是網站搬遷。

結論

我們在許多受歡迎的數據集上訓練搭配分數階最大取樣的卷積網路,並於效能方面發現有顯著的改善。取樣區域重疊的FMP比起不相交的似乎表現得更好。使用訓練數據增強時,偽隨機取樣區域比隨機取樣區域的表現更佳。若微調隨機去活化的使用數量,隨機取樣可能會重新取得優勢。

再次查看Figure 2由隨機取樣所創造的失真,請注意此「失真」可以分解為「X軸的失真」和「Y軸的失真」,探究無法以方程式(1)表達的取樣區域可能會很有趣,因為它們可能將更為通用的失真編碼至結果的卷積網路。

參考文獻

[1] K. Bache and M. Lichman. UCI machine learning repository, 2013.

[2] D. Ciresan, U. Meier, and J. Schmidhuber. Multi-column deep neural networks for image classification. In Computer Vision and Pattern Recognition(CVPR), 2012 IEEE Conference on, pages 3642–3649, 2012.

[3] Ben Graham. Spatially-sparse convolutional neural networks. 2014.

[4] Alex Krizhevsky. Learning Multiple Layers of Features from Tiny Images.Technical report, 2009.

[5] Alex Krizhevsky, Ilya Sutskever, and Geoffrey E. Hinton. Imagenet classification with deep convolutional neural networks. In F.Pereira, C.J.C. Burges, L. Bottou, and K.Q. Weinberger, editors, Advances in Neural Information Processing Systems 25, pages 1097–1105. Curran Associates, Inc., 2012.

[6] Chen-Yu Lee, Saining Xie, Patrick Gallagher, Zhengyou Zhang, and Zhuowen Tu. Deeply-Supervised Nets, 2014.

[7] Min Lin, Qiang Chen, and Shuicheng Yan. Network in network. ICLR, 2014.

[8] C.-L. Liu, F. Yin, D.-H. Wang, and Q.-F. Wang. CASIA online and offline Chinese handwriting databases. In Proc. 11th International Conference on Document Analysis and Recognition (ICDAR), Beijing, China, pages 37–41, 2011.

[9] Karen Simonyan and Andrew Zisserman. Very deep convolutional networks for large-scale image recognition. 2014.

[10] Nitish Srivastava, Geoffrey Hinton, Alex Krizhevsky, Ilya Sutskever, and Ruslan Salakhutdinov. Dropout: A Simple Way to Prevent Neural Networks from Overfitting. Journal of Machine Learning Research, 15:1929–1958, 2014.

[11] Christian Szegedy, Wei Liu, Yangqing Jia, Pierre Sermanet, Scott Reed,Dragomir Anguelov, Dumitru Erhan, Vincent Vanhoucke, and Andrew Rabinovich. Going deeper with convolutions. 2014.

[12] Li Wan, Matthew Zeiler, Sixin Zhang, Yann Lecun, and Rob Fergus. Regularization of Neural Networks using DropConnect, 2013. JMLR W&CP 28 (3) : 1058–1066, 2013.

[13] Matthew D. Zeiler and Rob Fergus. Stochastic Pooling for Regularization of Deep Convolutional Neural Networks. ICLR 2013.

0%