iT邦幫忙

2024 iThome 鐵人賽

DAY 15
0

Day15 卷積神經網路 (CNN)

前言

前幾天在深度學習的文章中有提到CNN卷積神經網路,今天我們會快速的介紹這個神經網路,讓大家對這個有初步的認識,未來幾天我會以實作來帶大家理解。

什麼是卷積神經網路

首先,什麼是卷積神經網路呢? 卷積神經網路(Convolutional Neural Networks,CNN)又被稱為CNNs 或 ConvNets,在深度學習領域中起著非常重要的作用,特別是在圖像處理和辨識方面。它們在許多重大突破中扮演了關鍵角色。在圖片辨識、物體偵測、影像分割等領域表現非常好,而且在這些任務中有時甚至超越了人類的表現。

卷積神經網路的工作原理

在了解他的工作原理前,我們需要先知道在還沒有CNN出現前,圖片處理對於人工智慧來說主要有幾個難題。

  • 數據量大且成本高
    • 一張典型的彩色圖片(比如一張1024x1024像素的照片)包含超過300萬個像素點(1024 x 1024 x 3),每個像素點有三個顏色通道(紅、綠、藍)。這意味著要處理這樣一張圖片需要處理超過900萬個數據點。
    • 假設我們有1000張這樣的圖片,整個數據集就包含90億個數據點。對於傳統的電腦硬體和算法來說,處理這麼龐大的數據集非常耗費時間和資源。
  • 特徵保留困難
    • 在CNN出現之前,常用的特徵提取方法包括SIFT(尺度不變特徵變換)、HOG(梯度方向直方圖)等。這些方法依賴於人類專家設計的特徵描述子,試圖從圖像中提取有用的特徵。
    • 這些方法對於簡單的圖像(如邊緣、角點)能夠有效提取特徵,但對於複雜的圖像(如不同光照條件下的人臉、自然場景)效果較差,難以捕捉圖像中的高級語義特徵。

而卷積神經網路的工作原理可以以下面這張來簡單介紹
image

  1. 輸入(Input)
    左邊的灰色方塊代表輸入圖像。這是CNN的起點,輸入圖像可能是任意大小和通道數(例如,RGB圖像有三個通道)。

  2. 卷積層1(Convolutional Layer 1)
    這層使用多個卷積核(Filters/Kernels)對輸入圖像進行卷積操作,生成多個特徵圖(Feature Maps)。每個卷積核負責提取圖像中的不同特徵,例如邊緣、角點等。

  3. 池化層1(Pooling Layer 1)
    池化層用來減少特徵圖的空間尺寸。常用的方法是最大池化(Max Pooling)或平均池化(Average Pooling)。這層操作會保留重要特徵,同時減少計算量和模型的過擬合風險。

  4. 卷積層2(Convolutional Layer 2)
    這是第二個卷積層,再次使用卷積核對池化後的特徵圖進行卷積操作,生成更多、更高層次的特徵圖。這層能夠捕捉到更複雜的圖像特徵。

  5. 池化層2(Pooling Layer 2)
    這是第二個池化層,進一步減少特徵圖的空間尺寸,保留重要信息,並提高模型的計算效率。

  6. 全連接層(Fully-connected Layer 1)
    這層將池化後的特徵圖展平成一維向量,並通過一個或多個全連接層進行處理。這層負責最終的分類或回歸任務。

  7. 輸出層(Outputs)
    最終的輸出層根據模型的任務產生結果。比如,在分類任務中,輸出層會給出每個類別的概率分佈,選擇概率最大的類別作為預測結果。

我們可以發現在CNN有主要幾層,簡單來說他們分別的功能如下:

  • 卷積——提取圖像中的特徵
  • 池化層(下採樣)——來減少特徵圖的尺寸,降低計算量
  • 全連接層——類似於傳統的神經網路層,用於最終的分類或回歸任務

卷積層 (Convolution layer)

卷積層是卷積神經網路 (Convolutional Neural Network, CNN) 的核心組成部分,主要用於提取輸入數據的特徵。具體來說,卷積層通過以下步驟運作:

  1. 卷積核 (Filter):

    • 卷積核,是一個小的矩陣。卷積核在輸入圖片上滑動 (也稱為卷積操作),並與圖片的局部區域進行點積運算 (Element-wise Multiplication) 來生成特徵圖 (Feature Map)。
  2. 卷積運算 (Convolution Operation):

    • 將卷積核在輸入圖片上進行滑動,滑動步長 (Stride) 決定了每次移動的距離。每一次滑動,卷積核會與輸入圖片的局部區域進行點積,並將結果累加形成新的像素值,從而構成特徵圖。
  3. 激活函數 (Activation Function):

    • 通常在卷積運算後應用激活函數,如 ReLU (Rectified Linear Unit),以引入非線性。這有助於模型學習更複雜的特徵。

池化層 (Pooling Layer)

池化層 (Polling layer)

池化層的主要功能是縮小特徵圖的尺寸,從而減少計算量和模型的複雜性,同時保留重要的特徵。常見的池化方法有:

  1. 最大池化 (Max Pooling):

    • 將輸入特徵圖分割成不重疊的區塊,並從每個區塊中取最大值,形成新的特徵圖。這有助於提取最顯著的特徵。
  2. 平均池化 (Average Pooling):

    • 將輸入特徵圖分割成不重疊的區塊,並計算每個區塊的平均值,形成新的特徵圖。這有助於平滑特徵圖,降低噪聲。

池化層通過縮小特徵圖尺寸,降低模型過擬合的風險,並提高計算效率。

全連接層 (Fully Connected layer)

全連接層是卷積神經網路的最後幾層,通常用於將提取的特徵轉換為最終的分類結果。具體步驟如下:

  1. 展平 (Flattening):

    • 將池化層輸出的多維特徵圖展平成一維向量。這一維向量包含了所有提取的特徵。
  2. 線性變換 (Linear Transformation):

    • 展平後的向量通過一個或多個全連接層,每個神經元都與前一層的所有神經元相連。這過程中進行線性變換,計算每個神經元的加權和。
  3. 激活函數 (Activation Function):

    • 在每個全連接層後應用激活函數,如 ReLU 或 Sigmoid,以引入非線性。
  4. 輸出層 (Output Layer):

    • 最後一層全連接層通常是輸出層,其神經元數量與分類任務的類別數一致。輸出層通常使用 Softmax 激活函數來生成概率分佈,表示每個類別的可能性。

總結

今天介紹了一點基本概念,我們知道了卷積神經網路由卷積層、池化層和全連接層組成。卷積層負責提取局部特徵,池化層縮小特徵圖尺寸並保留重要特徵,全連接層則將提取的特徵轉換為最終的分類結果。這樣的結構使得 CNN 能夠在圖片分類、物體檢測等任務中取得優異的性能。之後我會用實作來介紹CNN,並詳細介紹,希望大家可以一起收看。


上一篇
[Day 14] 人工智慧的核心:類神經網路
下一篇
[Day 16] 循環神經網路 (RNN) 的應用與原理
系列文
深度學習的學習之旅:從理論到實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言