卷積類神經網路(Convolution neural network,CNN)介紹

卷積類神經網路主要是影像辨識的一種方法,這套方法是以AI為基礎,可透過大數據學習,可得到相當高的影像辨識精準度。

為什麼我們需要卷積類神經網路的技術呢?

舉例來說,我們以辨識手寫數字的影像為例

像是上方這一張為手寫數字2的圖片,我們如果要辨識這張圖片,最簡單的方式就是直接把這個圖像記下來,以後看到一樣的圖像後就自動判定為2。

可是這樣會有一個問題,那就是影像會不斷變化,像是會有

1.圖像會旋轉

2.手寫的數字,樣貌都會不太一樣

從上述可發現到,如果我們沒辦法真正擷取手寫數字影像的特徵,在進行影像辨識的時候,精確度就會不高。

因此,如果要真正得到相當高的影像辨識精確度,就需要真正辨識出每張圖片的特徵。

舉例來說,欲辨識手寫數字為2,其特徵需要找到上下兩邊有橫槓,中間有斜線連接的特徵,只要輸入進來的圖片符合這些特徵就自動辨識為2

而傳統的影像辨識方法需要去找領域專家提供特徵,才能針對這些特徵去辨識,不過針對影像辨識而言,很多圖片紋路都相當複雜,如果用給定特徵方式去做辨識,能辨識的影像也會有限。

而卷積類神經網路方法的特點就是在於可以透過輸入大量數據,讓AI自我學習,找出圖片的特徵,進而有相當高的影像辨識精確度。

卷積類神經網路架構

卷積類神經網路的架構為在輸入部分就是輸入欲辨識的圖像,再來就會有卷積與池化層,不同的模型架構可以有多個不同卷積與池化層的組合,這邊以最簡單方式為例,以一個卷積與池化層當作代表。在池化層處理完之後,會把所有的圖像攤平成一維向量,再將各個數值依序丟入平坦層後,就會有隱藏層,甚至到最後輸出層的部分,即為最終預測的結果呈現的數字為2(補充說明:通常不會直接輸入數字2做辨識,而是會利用one-hot encoding的技術進行訓練)。

圖1 卷積類神經網路架構

各架構原理介紹

卷積層運算

原圖就是將圖片讀取後轉換成像素,通常會將像素正規化到0~1之間,然後會定義核函數,核函數為一個矩陣,會不斷將原圖與核函數做矩陣的乘積。舉例來說,會先擷取原圖內,紅色框裡面的數值與核函數進行矩陣乘積,也就是在位置相同的地方的數值相乘最後再累加起來,詳細運算可參考下圖。運算完之結果為1,我們就在下方特徵圖部分填入1

圖2 卷積運算範例(i)

之後再將紅色方框往右移動1格,並與核函數做矩陣乘積,得到運算結果為0.6,再填入右邊第二格

圖3 卷積運算範例(ii)

依此類推,遵循此運作方式,不斷將紅色方框往右移動,可將數值填滿特徵圖,即為卷積運算完畢的結果,我們這邊以填入四個數值當作代表,實際上是特徵圖裡面都會有相對應的數值。

圖4 卷積運算範例(iii)

池化層運算

池化的運算有幾種方式,這邊採用最大池化原則,其原理為在欲先選定的池化大小,像是有(2*2)大小,然後就以這樣大小利用紅色方框框起來,這時候就會取紅色方框內的最大值為最終結果,此值即為1,然後再填入下方池化後的特徵圖。依照這樣運算方式,將紅色方框不斷往右移動,可得到完整池化運算之結果。

圖5 池化運算範例

平坦層運算

接著將許多張池化完成的特徵圖,將裡面的數值攤平成一維向量,然後依序填入平坦層,就可以利用先前提到的類神經網路運算方式進行運算。

圖6 平坦層運算範例

卷積類神經網路各項結構之意義

基本上卷積類神經網路相較於一般的類神經網路就是多了卷積與池化層以及平坦層的部分,而卷積在運算的過程當中,會不斷將原圖與核函數進行矩陣乘積,得到特徵圖,一般而言,特徵圖會有許多張,而卷積的目的是要去擷取圖片的特徵,需要有不同的核函數,才能把圖片各項特徵擷取出來。當卷積完成之後,會產生許多特徵圖,如果直接將特徵圖輸入至平坦層運算,則運算量會非常龐大以外,還會接受到不重要的資訊,這是因為特徵圖裡面仍然有一些數值是不必要的。輸入這些數值至類神經網路當中去做訓練,有可能會對AI有不好的訓練效果。因此,最後還需要有池化層,透過只取特徵圖某些數值當作代表,又更可以針對卷積完後的特徵圖,大幅進行資訊的簡化,進而可以提升運算速度,而且也可以去蕪存菁得到最必要的資訊進行辨識。針對池化完後,攤平成平坦層的過程,平坦層就等效於類神經網路的輸入層,它扮演的角色是要承接從大量影像擷取到的最關鍵資訊,再傳送到隱藏層與輸出層當中去進行學習訓練。

圖7 卷積類神經網路結構之意義總結

本文影片介紹:

[參考資料]:

1.快速反應機制─類神經網路

2.機器學習與人工神經網路(二):深度學習(Deep Learning)

3.機器學習的衰頹興盛:從類神經網路到淺層學習

[類神經網路基礎系列專文]:

1.類神經網路(Deep neural network, DNN)介紹

2.類神經網路—揭開網路架構調整秘辛

3.類神經網路—啟動函數介紹(一): 深入解析Relu與Sigmoid函數:如何影響類神經網路的學習效果?

4.類神經網路—啟動函數介紹(二): 回歸 vs. 分類: 線性函數與Tanh函數之原理探索

5.類神經網路—啟動函數介紹(三): 掌握多元分類的核心技術:不可不知的softmax函數原理

6.類神經網路—啟動函數介紹(四): 如何選擇最適當的啟動函數?用一統整表格讓您輕鬆掌握

7.類神經網路—前向傳播法

8.類神經網路—反向傳播法(一): 白話文帶您了解反向傳播法

9.類神經網路—反向傳播法(二): 淺談梯度

10.類神經網路—反向傳播法(三): 五步驟帶您了解梯度下降法

11.類神經網路—反向傳播法(四): 揭開反向傳播法神秘面紗

12.機器學習訓練原理大揭秘:六步驟帶您快速了解監督式學習的訓練方法

13.類神經網路—反向傳播法(五): 用等高線圖讓您對學習率更有感

[機器學習基礎系列專文]:

1.機器學習訓練原理大揭秘:六步驟帶您快速了解監督式學習的訓練方法

2.機器學習面臨的問題種類介紹:回歸與分類

[類神經網路延伸介紹]:

1.卷積類神經網路(Convolution neural network,CNN)介紹

2.遞迴類神經網路(Recurrent neural network,RNN)介紹

[ChatGPT系列專文]:

1.淺談最近非常火紅的ChatGPT背後可能原理機制為何?

2.從ChatGPT探索GPT的原理概念:少量數據的解方—遷移學習技巧

3.ChatGPT是什麼?探索GPT原理:遷移學習(transfer learning)的奧秘—微調(fine-tuning)技巧