Neural-Networks

卷積神經網絡中的捲積步驟是做什麼的?

  • September 22, 2014

我正在研究卷積神經網絡 (CNN),因為它們在計算機視覺中的應用。我已經熟悉標準的前饋神經網絡,所以我希望這裡的一些人可以幫助我在理解 CNN 方面邁出額外的一步。以下是我對 CNN 的看法:

  1. 在傳統的前饋 NN 中,我們有訓練數據,其中每個元素都包含一個特徵向量,我們在“輸入層”中輸入到 NN,因此對於圖像識別,我們可以讓每個像素成為一個輸入。這些是我們的特徵向量。或者,我們可以手動創建其他(可能更小)特徵向量。
  2. CNN 的優勢在於它可以生成更強的特徵向量,這些特徵向量對圖像失真和位置更加不變。如下圖所示(來自本教程),CNN 生成特徵圖,然後將其饋送到標準神經網絡(因此實際上這是一個巨大的預處理步驟)。

在此處輸入圖像描述

  1. 我們獲得那些“更好”特徵的方法是交替卷積和子採樣。我了解子採樣的工作原理。對於每個特徵圖,只取像素的一個子集,或者我們可以平均出像素的值。

但我主要困惑的是卷積步驟是如何工作的。我熟悉概率論中的捲積(兩個隨機變量之和的密度),但是它們在 CNN 中是如何工作的,為什麼它們有效?

我的問題與類似,但特別是,我不確定為什麼第一個卷積步驟有效。

我將首先嘗試分享 CNN 背後的一些直覺,然後評論您列出的特定主題。

CNN 中的捲積和子採樣層與普通 MLP 中的隱藏層沒有什麼不同,即它們的功能是從輸入中提取特徵。然後將這些特徵提供給下一個隱藏層以提取更複雜的特徵,或者直接提供給標準分類器以輸出最終預測(通常是 Softmax,但也可以使用 SVM 或其他任何方法)。在圖像識別的上下文中,這些特徵是圖像處理,例如下層中的筆劃圖案和上層中的對象部分。

在自然圖像中,這些特徵往往在所有位置都是相同的。識別圖像中間的某個筆劃圖案與識別​​它靠近邊界一樣有用。那麼為什麼我們不復制隱藏層並在輸入圖像的所有區域連接它的多個副本,以便可以在任何地方檢測到相同的特徵呢?這正是 CNN 所做的,但以一種有效的方式。在復制(“卷積”步驟)之後,我們添加了一個子樣本步驟,它可以通過多種方式實現,但無非是一個子樣本。從理論上講,這一步甚至可以刪除,但在實踐中,這對於讓問題保持可控是必不可少的。

因此:

  1. 正確的。
  2. 如上所述,CNN 的隱藏層是與常規 MLP 一樣的特徵提取器。交替的捲積和子採樣步驟是在訓練和分類期間完成的,因此它們不是在實際處理“之前”完成的。我不會稱它們為“預處理”,就像 MLP 的隱藏層不這樣稱呼一樣。
  3. 正確的。

有助於理解卷積的好圖像是 ULFDL 教程中的 CNN 頁面。考慮一個具有單個神經元的隱藏層,該神經元經過訓練可以從補丁。如果我們將這個單一的學習特徵卷積在一個圖片,這個過程可以用下面的gif來表示:

在此處輸入圖像描述

在這個例子中,我們在特徵提取層中使用了一個神經元,我們生成了卷積特徵。如果我們在隱藏層中有更多的單元,就很清楚為什麼需要在這之後的子採樣步驟。

隨後的捲積和子採樣步驟基於相同的原理,但計算的是在前一層提取的特徵,而不是原始圖像的原始像素。

引用自:https://stats.stackexchange.com/questions/116362

comments powered by Disqus