### 深度學習專題 & 類神經網路與深度學習進階 week4-5 課程筆記 ## 一 、 CNN 的簡介 CNN 的主要特點包括: * 卷積層(Convolutional Layers): 這是 CNN 的核心組件,通過卷積操作從輸入數據中提取特徵。卷積層使用一系列卷積核(filters)來掃描輸入數據,生成特徵映射(feature maps)。 * 池化層(Pooling Layers): 池化層用於對特徵映射進行下採樣(downsampling),通常使用最大池化(Max Pooling)或平均池化(Average Pooling)操作來減少特徵映射的尺寸,同時保留重要的特徵信息。 * 激活函數(Activation Functions): 在卷積層之後通常會應用激活函數,如ReLU(Rectified Linear Unit),來引入非線性,增加模型的表達能力。 * 全連接層(Fully Connected Layers): 在卷積和池化層的特徵提取後,通常會將特徵映射展平為一維向量,然後通過全連接層來進行分類或回歸等任務。 CNN 在圖像處理方面取得了巨大的成功很成熟,應用範圍包括圖像分類、目標檢測、人臉識別、圖像生成等。除了在圖像處理廣泛運用外,CNN 也被應用於自然語言處理(NLP)等領域。 ## 二 、 甚麼是卷積(Convolution)? 在深度學習和卷積神經網絡(CNN)中,卷積是一種運算,用於從輸入數據中提取特徵。卷積操作涉及將一個小的濾波器(filter,或稱為卷積核或濾波器)應用於輸入數據的不同區域,然後計算濾波器與輸入數據之間的點乘和,以產生輸出特徵映射(mapping)。這個濾波器在整個輸入數據上進行滑動,計算出每個位置的特徵值,這樣可以從輸入數據中提取出各種特徵,比如圖片邊緣、紋理等。 :::info :bulb: 在深度學習和CNN中,通常我們使用的是卷積操作來進行特徵提取,但這個操作在某些文獻中也被稱為卷積或者交叉相關,因為它們的本質是相似的。(實際更接近交叉相關)。 ::: #### 卷積神經網路的術語 輸入資料(Input)會被卷積核(kernel)行卷積運算,生成特徵圖(Feature Map)。 #### 卷積的類型 | 卷積類型 | 視覺化 | 運算 | -------- | -------- |-------- | | Valid convolution | ![full_paddinf](https://hackmd.io/_uploads/BJnC9mnAp.gif)|原始資料大小:$(7,7)$ 卷積核:$(3,3)$ 輸出特徵圖:$7-3+1=5$ |Same convolution|![same_con](https://hackmd.io/_uploads/ByTxnQ2Ra.gif)|原始資料大小:$(5,5)$ 卷積核:$(3,3)$ 輸出特徵圖:$(5,5)$ | |Full convolution|![full_cn](https://hackmd.io/_uploads/HJ9O0Q3Ca.gif)|藍色方塊要盡可能地被填充 所以生成的特徵圖比藍色更大塊| #### 卷積層的特色 | |說明 | 好處| | -------- | -------- | -------- | | 稀疏連結(Sparse connection) | ![image](https://hackmd.io/_uploads/HyzXDN3CT.png)卷積層中的每個神經元僅與輸入數據的一小部分區域連結,而不是與整個輸入數據進行連結。| 有助於減少模型的參數數量,降低計算複雜度。| | 感受域(Peceptive field) |![image](https://hackmd.io/_uploads/B1cuwVhAT.png =50%x) 一個神經元或者卷積核在輸入圖像上的影響區域,也可以說是該神經元或者卷積核對輸入的局部區域有多大程度的感知能力。 | 隨著卷積層的層數增加,神經元的感受域會逐漸擴大,從而使神經網路能夠捕捉到更廣泛範圍的特徵信息。| | 參數共享(Parameter sharing) | ![image](https://hackmd.io/_uploads/ByP9_EnCp.png =70%x) |於不同位置的輸入數據,卷積核使用相同的參數進行特徵提取,從而大大減少了需要學習的參數數量。| |等變表示(Equivariant representations)|等變表示確保了在輸入數據上的空間變換能夠反映在特徵表示中。如果輸入圖像發生了平移(只有平移是,縮放和旋轉不是!!),則經過卷積操作提取的特徵表示也會相應地進行變換,保持著相對應的關係。|可以提高模型泛化能力。| ## 三 、 甚麼是池化層(Pooling Layer)? 池化層(Pooling Layer)是卷積神經網絡(CNN)中的一種常見層,用於降低特徵映射的空間尺寸,從而減少參數數量和計算量,然而池化層也可能造成不足擬合(under fitting)。 池化層通常在卷積層之後應用,其主要作用包括: * 降維: 通過將特徵映射中的每個區域進行降維,例如將 2x2 的區域取最大值或平均值,從而減少特徵映射的尺寸。這有助於減少後續層次的計算量和參數數量。 * 不變性: 池化操作通常具有一定程度的平移不變性和局部不變性,即對於輸入數據的微小變換,例如平移、旋轉等,池化操作後的結果保持不變,這有助於增強模型對於輸入數據的魯棒性。 常見的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。 #### 池化層的種類 | 池化層 | 說明 | | -------- | -------- | | 最大池化(Max-Pooling) | 將每個區域中的最大值作為池化後的值。 | | 平均池化(Average-Pooling) | 則取每個區域的平均值作為池化後的值。 | | 加權平均池化(Weighted-Average-Pooling) | 回報與中心像素的距離(比如歐式距離)的加權平均值(距離中心愈近權重愈大) | | L2泛數池化(L2-norm-Pooling) | 返回矩陣鄰近的L2範數 | ## 四 、 常見的CNN應用領域 * Computer Vision * Medical Image Analysis * Natural Language Processing * Autonomous Vehicles * Gaming * Fiance