什么是 CNN?
CNN,全稱 卷積神經網絡(Convolutional Neural Network),是一種專門用來處理圖片、語音、文本等結構化數據的神經網絡。
它模仿人眼識別圖像的方式:
從局部到整體,一步步提取特征,最后做出判斷。
什么叫“卷積”?
卷積這個詞,來源于數學中的卷積操作。
簡單說,就是用一個小方塊(卷積核)在圖片上滑動,把相鄰像素做個“加權求和”,用來提取特定特征。
比如:
- 檢測邊緣
- 識別線條
- 找出顏色塊
CNN 結構組成
CNN 通常由以下幾部分組成:
- 卷積層(Convolutional Layer)
- 激活函數(Activation Function)
- 池化層(Pooling Layer)
- 全連接層(Fully Connected Layer)
- 輸出層(Output Layer)
CNN 常見術語速查表
專有名詞 | 含義 |
---|---|
卷積核(Filter) | 提取局部特征的小方塊 |
步長(Stride) | 卷積核每次移動的格子數 |
填充(Padding) | 給圖像邊緣補零,避免尺寸縮小 |
激活函數 | 增強模型非線性能力,常用 ReLU |
池化 | 降維、保留關鍵信息,防止過擬合 |
全連接層 | 將所有特征組合分類 |
損失函數 | 衡量預測值和真實值的差距 |
圖片識別
圖片識別-Neuron Versin
李宏毅老師: 《機器學習》 學習筆記
overall
輸入是一張圖片,輸出是圖片的分類: cat/dog…
計算每一個像素–判斷是否是cat
Cverservation 1 - 不需要觀察整張圖片
只觀察一張圖片特定的幾個部分,如下面例子中的: 鳥嘴/鳥眼/鳥爪
Simplification 1 - Typical Setting
- kernel size(卷積核(filter)): 3 * 3
- all channels
- stride(步長)=1:每次移動一個像素,沿著水平+垂直方向移動
- padding:就是在輸入特征圖(圖片或序列)邊緣周圍補上額外像素(通常是 0),目的是為了:
? 保持輸出尺寸不變
? 控制特征圖尺寸變化規律
? 更好地提取邊緣特征
Cverservation 2 - 共享參數
Simplification 2
原理
- weight: 決定輸入信號對神經元輸出的影響程度
- bias: 偏移值,幫助模型更靈活擬合數據
Typical Setting
圖片識別-Filter Version
feature map
Multiple Convolutional layers
Comparision of 2 Stories
Pooling - Max Pooling
卷積操作后,特征圖通常很大,這時候用 **subsampling(池化 Pooling)**來降低特征圖尺寸,但保留重要特征。
- 特征提取(Feature Extraction) 就是:從原始數據中,把能代表事物本質特征的信息挑選出來,作為模型輸入的過程。
- 最大特征(Max Feature / Max Pooling): 從一堆特征值里,取最大值作為代表
- 平均特征(Average Feature / Average Pooling): 從一堆特征值里,計算平均值作為代表