卷積神經網路基礎:您需要了解的內容

已發表: 2024-09-10

卷積神經網路 (CNN) 是資料分析和機器學習 (ML) 的基本工具。本指南解釋了 CNN 的工作原理、它們與其他神經網路的區別、它們的應用以及與其使用相關的優缺點。

目錄

  • 什麼是CNN?
  • CNN 的工作原理
  • CNN 與 RNN 和 Transformer
  • CNN 的應用
  • 優點
  • 缺點

什麼是卷積神經網路?

卷積神經網路 (CNN) 是深度學習不可或缺的神經網絡,旨在處理和分析空間資料。它採用帶有濾波器的捲積層來自動檢測和學習輸入中的重要特徵,使其對於影像和視訊識別等任務特別有效。

讓我們稍微解釋一下這個定義。空間資料是各部分透過其位置相互關聯的資料。圖像就是最好的例子。

在上面的每個圖像中,每個白色像素都連接到每個周圍的白色像素:它們形成數字。像素位置也告訴觀看者該數字位於影像中的位置。

特徵是圖像中存在的屬性。這些屬性可以是任何東西,從稍微傾斜的邊緣到鼻子或眼睛的存在,再到眼睛、嘴巴和鼻子的組合。至關重要的是,特徵可以由更簡單的特徵組成(例如,眼睛由一些彎曲邊緣和中心黑點組成)。

過濾器是模型的一部分,用於檢測影像中的這些特徵。每個濾鏡都會在整個影像中尋找一個特定特徵(例如,從左到右彎曲的邊緣)。

最後,卷積神經網路中的「卷積」是指如何將濾波器應用於影像。我們將在下一節中解釋這一點。

CNN 在各種影像任務(例如物件偵測和影像分割)上展現了強大的效能。 CNN 模型 (AlexNet) 在 2012 年深度學習的興起中發揮了重要作用。

使用 Grammarly 更聰明地工作
任何有工作要做的人的人工智慧寫作夥伴

CNN 的工作原理

讓我們透過確定影像中的數字 (0–9) 來探索 CNN 的整體架構。

在將影像輸入模型之前,必須將影像轉換為數位表示(或編碼)。對於黑白影像,每個像素都會分配一個數字:如果全白則為 255,如果全黑則為 0(有時會標準化為 1 和 0)。對於彩色影像,每個像素都分配有三個數字:一個數字表示它包含多少紅色、綠色和藍色,稱為 RGB 值。因此,256×256 像素(65,536 像素)的影像在其黑白編碼中將具有 65,536 個值,在其彩色編碼中將具有 196,608 個值。

然後,模型透過三種類型的層處理圖像:

1卷積層:此層對其輸入套用過濾器。每個過濾器都是具有定義大小(例如,3×3)的數字網格。這個網格從左上角開始覆蓋在影像上;將使用第 1-3 列中第 1-3 行的像素值。這些像素值乘以濾波器中的值,然後求和。然後將該總和放入濾波器輸出網格的第 1 行第 1 列中。透過一次滑動一個像素,濾波器可以找到影像中任何位置的特徵,這種特性稱為平移不變性。每個篩選器都會建立自己的輸出網格,然後將其傳送到下一層。

2池化層:此層總結了來自卷積層的特徵資訊。卷積層傳回的輸出大於其輸入(每個濾波器傳回與輸入大小大致相同的特徵圖,並且有多個濾波器)。池化層會取得每個特徵圖並對其應用另一個網格。此網格取其中值的平均值或最大值並輸出。然而,這個網格並不是一次移動一個像素;而是一次移動一個像素。它將跳到下一個像素塊。例如,3×3 池化網格將首先處理第 1-3 行和第 1-3 列中的像素。然後,它將保留在同一行,但移動到第 4-6 列。在覆蓋第一組行 (1-3) 中的所有列後,它將向下移動到第 4-6 行並處理這些列。這有效地減少了輸出中的行數和列數。池化層有助於降低複雜性,使模型對雜訊和微小變化更加穩健,並幫助模型專注於最重要的特徵。

3全連接層:經過多輪卷積和池化層之後,最終的特徵圖被傳遞到全連接神經網路層,該層返回我們關心的輸出(例如,圖像是特定數字的機率)。特徵圖必須被展平(特徵圖的每一行連接成一個長行),然後組合(每個長特徵圖行連接成一個巨型行)。

以下是 CNN 架構的直覺表示,說明了每一層如何處理輸入影像並為最終輸出做出貢獻:

卷積神經網路 (CNN) 架構

關於該過程的一些附加說明:

  • 每個連續的捲積層都會找到更高等級的特性。第一個卷積層可偵測邊緣、斑點或簡單圖案。下一個卷積層將第一個卷積層的池化輸出作為輸入,使其能夠檢測形成高級特徵(例如鼻子或眼睛)的較低級特徵的組合。
  • 該模型需要訓練。在訓練期間,影像通過所有圖層(首先具有隨機權重),並產生輸出。輸出和實際答案之間的差異用於稍微調整權重,使模型將來更有可能正確回答。這是透過梯度下降來完成的,其中訓練演算法計算每個模型權重對最終答案的貢獻程度(使用偏導數),並將其稍微向正確答案的方向移動。池化層沒有任何權重,因此不受訓練過程的影響。
  • CNN 只能處理與訓練時大小相同的影像。如果模型在 256×256 像素的影像上進行訓練,則任何較大的影像都需要下取樣,任何較小的影像都需要上取樣。

CNN 與 RNN 和 Transformer

卷積神經網路經常與循環神經網路(RNN)和 Transformer 一起被提及。那麼它們有何不同呢?

CNN 與 RNN

RNN 和 CNN 在不同的領域中運行。 RNN 最適合序列資料(例如文字),而 CNN 則擅長處理空間資料(例如圖像)。 RNN 有一個記憶體模組,可以追蹤輸入中之前看到的部分,以便將下一部分置於上下文中。相比之下,CNN 透過查看其直接鄰居來將部分輸入置於上下文中。由於 CNN 缺乏記憶模組,因此它們不太適合文字任務:當它們到達最後一個單字時,它們會忘記句子中的第一個單字。

CNN 與 Transformer

Transformer 也大量用於順序任務。它們可以使用輸入的任何部分來將新輸入置於上下文中,這使得它們在自然語言處理 (NLP) 任務中很受歡迎。然而,變壓器最近也以視覺變壓器的形式應用於影像。這些模型接收影像,將其分解為補丁,對補丁運行注意力(變壓器架構中的核心機制),然後對影像進行分類。視覺 Transformer 在大型資料集上的表現可以優於 CNN,但它們缺乏 CNN 固有的平移不變性。 CNN 的平移不變性使模型能夠識別對象,無論其在圖像中的位置如何,這使得 CNN 對於特徵的空間關係很重要的任務非常有效。

CNN 的應用

由於 CNN 具有平移不變性和空間特徵,因此經常與影像一起使用。但是,透過巧妙的處理,CNN 可以在其他領域工作(通常首先將它們轉換為圖像)。

影像分類

影像分類是 CNN 的主要用途。訓練有素的大型 CNN 可以識別數百萬個不同的物體,並且可以處理幾乎任何給定的圖像。儘管 Transformer 興起,但 CNN 的運算效率使其成為可行的選擇。

語音辨識

錄製的音訊可以透過頻譜圖轉換為空間數據,頻譜圖是音訊的視覺表示。 CNN 可以將頻譜圖作為輸入,並學習將不同的波形映射到不同的單字。同樣,CNN 可以辨識音樂節拍和樣本。

影像分割

影像分割涉及識別和繪製影像中不同物件周圍的邊界。 CNN 在這項任務中很受歡迎,因為它們在識別各種物體方面具有強大的性能。一旦圖像被分割,我們就可以更好地理解它的內容。例如,另一個深度學習模型可以分析這些片段並描述這個場景:「兩個人在公園裡散步。他們的右邊有一根燈柱,前面有一輛車。在醫學領域,影像分割可以在掃描中區分腫瘤和正常細胞。對於自動駕駛車輛,它可以識別車道標記、路標和其他車輛。

CNN 的優點

CNN 在業界廣泛使用有幾個原因。

圖像表現力強

由於可用的影像資料豐富,因此需要在各種類型的影像上表現良好的模型。 CNN 非常適合此目的。它們的平移不變性以及從較小特徵創建較大特徵的能力使它們能夠檢測整個影像的特徵。不同類型的圖像不需要不同的架構,因為基本的 CNN 可以應用於所有類型的圖像資料。

無需手動特徵工程

在 CNN 出現之前,性能最好的圖像模型需要大量的手動工作。領域專家必須創建模組來檢測特定類型的特徵(例如,邊緣過濾器),這是一個耗時的過程,缺乏針對不同影像的靈活性。每組圖像都需要自己的功能集。相較之下,第一個著名的 CNN(AlexNet)可以自動對 20,000 種影像進行分類,減少了手動特徵工程的需要。

CNN 的缺點

當然,使用 CNN 需要權衡。

許多超參數

訓練 CNN 涉及選擇許多超參數。與任何神經網路一樣,也存在超參數,例如層數、批量大小和學習率。此外,每個濾波器都需要自己的一組超參數:濾波器大小(例如,3×3、5×5)和步幅(每個步驟後要移動的像素數)。在訓練過程中無法輕鬆調整超參數。相反,您需要使用不同的超參數集(例如,集 A 和集 B)訓練多個模型,並比較它們的性能以確定最佳選擇。

對輸入大小的敏感度

每個 CNN 都經過訓練以接受特定尺寸(例如 256×256 像素)的圖像。您要處理的許多圖像可能與此尺寸不匹配。為了解決這個問題,您可以放大或縮小影像。然而,這種大小調整可能會導致有價值的資訊遺失,並可能降低模型的效能。