爲什麼卷積神經網絡優於傳統機器學習算法?

本文最初發表於 Towards Data Science 博客,經原作者 Rade Nježić 授權,InfoQ 中文站翻譯並分享。

近十年來,隨着深度學習的發現,圖像分類領域經歷了復興。傳統的機器學習方法已被更新的、更強大的深度學習算法所取代,例如卷積神經網絡。然而,要真正理解並欣賞深度學習,我們必須知道爲什麼其他方法失敗了,而深度學習卻成功了。在本文中,我將試圖通過對 Fashion MNIST 數據集應用不同的分類算法來回答其中一些問題。

數據集信息

Fashion MNIST 是由 Zalando Fashion 研究室於 2017 年 8 月推出的。隨着 MNIST 變得過於容易和過度使用,Fashion MNIST 的目標是成爲測試機器學習算法的新基準。MNIST 是由手寫的數字組成的,而 Fashion MNIST 是由 10 個不同服裝對象的圖像組成的。每個圖像都具有以下屬性:

  • 它的大小爲 28 × 28 像素。
  • 相應地旋轉並以灰度表示,整數值範圍爲 0~255。
  • 空白空間用黑色表示,值爲 0。

在數據集中,我們區分以下服裝對象:

  • T 恤/上衣
  • 長褲
  • 套衫
  • 連衣裙
  • 大衣
  • 涼鞋
  • 襯衫
  • 運動鞋
  • 手提包
  • 短靴

探索性數據分析

由於數據集作爲 Keras 庫的一部分可用,並且圖像已經經過處理,因此我們無需進行太多的預處理。我們所做的唯一更改是將圖像從二維數組轉換爲一維數組,因爲這樣可以使它們更容易處理。

該數據集由 70000 幅圖像組成,其中 60000 幅爲訓練集,10000 幅爲測試集。與原始 MNIST 數據集一樣,項目也是分佈均勻的(每個訓練集 6000 幅,測試集 1000 幅)。

不同服裝項目的圖片示例

然而,一張圖片仍然有 784 個維度,因此我們轉向主成分分析(Principal component analysis,PCA),看看哪些像素是最重要的。我們設定了累積方差的 80% 的傳統基準,而該圖告訴我們,只有大約 25 個主成分(佔主成分總數的 3%)纔有可能實現這一目標。然而,這並不奇怪,因爲,我們可以在上面的圖片中看到,在每幅圖像中都有很多共享的未使用空間,並且不同類別的服裝有不同的圖像部分是黑色的。後者可能與以下事實有關:大約 70% 的累積方差僅由 8 個主成分解釋。

可解釋的累積方差百分比

我們將在邏輯迴歸、隨機森林和支持向量機中應用主成分。

圖像分類問題只是分類問題的一個小子集。最常用的圖像分類方法是深度學習算法,卷積神經網絡就是其中之一。其餘採用的方法將是一小部分常用分類方法的集合。由於分類標籤是均勻分佈的,沒有錯誤分類的懲罰,故我們將使用正確率來評估算法。

卷積神經網絡

我們採用的第一種方法是卷積神經網絡。由於圖像是灰度圖像,因此我們僅應用一個通道。我們選擇了以下架構:

  • 兩個卷積層,具有 32 和 64 個過濾器(Filter),3 × 3 內核大小,以及 ReLU 激活函數。
  • 選擇輪詢層對大小爲 2 × 2 的塊進行操作,並從中選擇最大的元素。
  • 兩組密集層,其中第一層選擇 128 個特徵,具有 ReLU 或 Softmax 激活函數。

這種架構並沒有什麼特別之處。事實上,它是我們可以用於卷積神經網絡的最簡單的架構之一。這向我們展示了這類方法的真正威力:使用基準結構可以獲得很好的結果。

對於損失函數,我們選擇了分類交叉熵(Categorical cross-entropy)。爲避免出現過擬合,我們從訓練集中選擇了 9400 幅圖像作爲參數的驗證集。我們使用了新穎的優化器 ADAM,它比標準的梯度下降法有所改進,並且對每個參數使用不同的學習率,批大小爲 64。該模型訓練了 50 個輪數。我們在下圖中給出了正確率和損失值。

我們可以看到,該算法訓練 15 個輪數後出現收斂,但並沒有過度訓練,所以我們對其進行了測試。得到的測試正確率爲 89%,這是所有方法中得到的最好的結果!

在繼續其他方法之前,讓我們先解釋一下卷積層是做什麼的。直觀的解釋是,第一層捕獲直線,第二層捕獲曲線。在這兩個層上,我們都應用了最大池化(Max pooling),即在內核中選擇最大的值,將服裝部分與空白空間分開。如此一來,我們就抓住了數據的代表性。在其他方面,神經網絡自己進行特徵選擇。經過最後一個池化層,我們就得到了一個人工神經網絡。因爲我們要處理的是分類問題,因此最後一層使用 Softmax 激活來獲得類別概率。當類別概率遵循一定的分佈時,交叉熵表示與網絡首選分佈的距離。

多分類邏輯迴歸

由於像素值是分類變量,因此我們可以應用多分類邏輯迴歸(Multinomial Logistic Regression)。我們以一對餘的方式應用它,訓練 10 個二元邏輯迴歸分類器,我們將使用這些分類器來選擇項目。爲避免過度訓練,我們使用了 L2 正則化。結果我們得到了 80% 的正確率,比卷積神經網絡的正確率低 9%。但是,我們必須考慮到,該算法適用於灰度圖像,這些圖像是居中且正常旋轉的,有很多空白的地方,因此它可能對更爲複雜的圖像不起作用。

近鄰算法和質心算法

我們使用了兩種不同的最近距離算法:

  • K-最近鄰算法
  • 近質心近鄰算法

近質心近鄰算法找出每個類別的元素的平均值,並將測試元素分配給最近質心指定的類別。這兩種算法都是相對於 L1 和 L2 距離實現的。K-最近鄰算法的正確率爲 85%,近質心近鄰算法的正確率爲 67%。這些結果是在 K=12 時得到的。K-最近鄰算法的高正確率告訴我們,屬於同一類別的圖像往往佔據相似的位置,也有類似的像素密度。雖然最近鄰算法獲得了很好的結果,但它們的表現仍然比卷積神經網絡要差,因爲它們不在每個特定特徵鄰近工作;而質心算法失敗了,因爲它們並不能區分相似的對象(例如套衫與 T 恤/上衣)。

隨機森林

爲了選擇最佳的參數進行估計,我們使用平方根(Bagging)和特徵的全部數量、Gini 和熵準則,以及樹的最大深度爲 5 和 6 進行網格搜索。網格搜索建議使用熵準則的特徵平方根數(均適用於分類任務)。然而,得到的正確率僅爲 77%,這意味着隨機森林方法也不是什麼特別好的方法。它失敗的原因是主成分並不能代表圖像可以具有的矩形分區,而隨機森林就是在該矩形分區上操作的。同樣的道理也適用於全尺寸圖像,因爲樹會太深,可解釋性將會失去。

支持向量機

我們使用徑向核和多項式核的支持向量機。徑向核的正確率爲 77%,而多項式核的正確率僅爲 46%。雖然圖像分類並不是它們的強項,但對於其他二值分類任務仍然非常有用。它們最大的警告是,它們需要特徵選擇,而這會降低正確率;但如果沒有特徵選擇,它們的計算成本可能會很高。此外,它們以一對餘的方式應用多類分類,這使得更難有效地創建分離超平面(Separating hyperplane),因此在處理非二元分類任務時失去價值。

總結

我們在本文中,針對一個圖像分類問題,採用了多種分類方法。我們已經解釋了爲什麼卷積神經網絡是我們可以採用的最好的方法,而其他方法爲什麼會失敗。卷積神經網絡是最爲實用且通常最爲正確的方法的一些原因如下:

  • 它們可以通過層傳遞學習,保存推理並在後續層上創建新的推理。
  • 在使用該算法之前,無需進行特徵提取,而是在訓練過程中完成的。
  • 它可以識別重要的特徵。

但是,它們也有自己的警告。目前已知它們在旋轉和縮放方式不同的圖像上會失效,但這裏的情況並非如此,因爲數據已經經過預處理。而且,儘管其他方法在這個數據集上未能提供良好的結果,但它們仍然可以用於其他與圖像處理相關的任務(如銳化、平滑等等)。

代碼:

https://github.com/radenjezic153/Stat_ML/blob/master/project.ipynb

原文鏈接:

https://towardsdatascience.com/image-classification-with-fashion-mnist-why-convolutional-neural-networks-outperform-traditional-df531e0533c2

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章