iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
AI/ ML & Data

Web仔從數學角度學習 AI/ ML & Data系列 第 14

Day 14 - Web仔從數學角度學習 卷積神經網路 數值

  • 分享至 

  • xImage
  •  

註:本文同步更新在Notion!(數學公式會比較好閱讀)

在卷積神經網路中,卷積層通過將卷積核(kernel)應用於輸入數據,提取局部特徵。這個操作的數學形式類似於信號處理中的卷積積分,但在 CNN 中,我們通常使用離散的卷積和(convolution sum)

https://ithelp.ithome.com.tw/upload/images/20240926/20168898YNEfXMo26y.png


卷積操作中的數值運算

1. 卷積層

卷積層是 CNN 的核心,它將輸入數據 X 通過卷積核 W 進行卷積操作,生成特徵圖 Y。卷積層的數值運算特點在於:

  • 權重共享:卷積核在輸入數據的不同區域共享相同的權重,這大大減少了需要學習的參數數量。
  • 局部感受野:卷積核只作用於輸入數據的局部區域,這有助於 CNN 提取局部特徵。
    https://ithelp.ithome.com.tw/upload/images/20240926/20168898mNggEr7cIS.png
    這種局部計算隨著卷積核的滑動在整個輸入上進行,最終生成一個新的特徵圖。

2. 激活函數

卷積層的輸出通常會經過非線性激活函數,例如ReLU(Rectified Linear Unit)。
https://ithelp.ithome.com.tw/upload/images/20240926/20168898uoOag4IcWT.png
ReLU 的作用是將卷積層的輸出進行非線性映射,保留正值,抑制負值,這使得網絡能夠學習更為複雜的非線性特徵。

3. 池化層

池化層的作用是對卷積層的輸出進行降維,從而減少數據的尺寸和計算量。最常見的池化操作是最大池化(Max Pooling),它取輸入數據局部區域中的最大值。
https://ithelp.ithome.com.tw/upload/images/20240926/20168898hjZByxoMAR.png


數值計算的效能挑戰

卷積運算和大規模矩陣計算涉及到大量的數值運算,因此,CNN 的效率優化是主要目的。優化方法包括:

  1. 基於矩陣乘法的優化:卷積操作可以被轉換為矩陣乘法,從而利用線性代數中的快速算法進行加速。例如,對於 m*n 大小的卷積核,通過「圖像轉矩陣」技術(如 im2col),可以將卷積運算轉化為矩陣乘法,從而使用高效的數學庫進行運算。
  2. GPU 加速:CNN 的大部分數值運算可以並行化,特別是卷積和矩陣乘法,因此可以利用 GPU 來加速這些計算。
  3. 稀疏卷積核:在實際應用中,有些卷積核是稀疏的,這意味著其中很多元素為零,可以利用稀疏矩陣的存儲和運算方法來進行優化。

數值穩定性與反向傳播中的梯度消失問題

數值運算中還涉及到穩定性的問題,特別是在深層網路中,梯度反向傳播過程可能導致梯度消失(vanishing gradient)。當網路的層數增多,梯度會隨著層數的增加指數級減少,這使得前面層的參數幾乎無法更新,從而影響網路的學習能力。

解決方法

  • 使用適當的初始化方法:如 Xavier 或 He 初始化,確保初始參數不會導致梯度過大或過小。
  • 激活函數的選擇:ReLU 或其變體(如 Leaky ReLU)常用來緩解梯度消失問題,因為它們在正值範圍內保持非零梯度。

總結

卷積神經網路中的數值運算是模型計算的基礎,主要包括卷積運算、激活函數和池化操作。為了提升計算效率,可以使用矩陣乘法優化、GPU 加速等技術來應對大規模數據運算的挑戰。此外,數值穩定性問題,如梯度消失,應通過適當的初始化和激活函數設計來解決。
https://ithelp.ithome.com.tw/upload/images/20240926/201688981jb15GhSex.png


上一篇
Day 13 - Web仔從數學角度學習 卷積神經網路 反向傳播算法
下一篇
Day 15 - Web仔從數學角度學習 卷積神經網路 殘差網路
系列文
Web仔從數學角度學習 AI/ ML & Data30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言