【数据挖掘】卷积神经网络 ( 池化 | 丢弃 | 批量规范化 | 卷积神经网络完整流程示例 | 卷积 | 池化 | 全连接 | 输出 | 卷积神经网络总结 )
文章目錄
- I . 池化
- II . 丟棄操作
- III . 批量規范化
- IV . 卷積神經網絡 完整流程示例 ( 1 ) : 原始輸入圖
- V . 卷積神經網絡 完整流程示例 ( 2 ) : 卷積層 C1C_1C1?
- VI . 卷積神經網絡 完整流程示例 ( 3 ) : 池化層 S2S_2S2?
- VII . 卷積神經網絡 完整流程示例 ( 4 ) : 卷積層 C3C_3C3?
- VIII . 卷積神經網絡 完整流程示例 ( 5 ) : 卷積層 C3C_3C3? 特征組合示例
- IX . 卷積神經網絡 完整流程示例 ( 6 ) : 池化層 S4S_4S4?
- X . 卷積神經網絡 完整流程示例 ( 7 ) : 卷積層 C5C_5C5?
- XI . 卷積神經網絡 完整流程示例 ( 8 ) : 全連接層 F6F_6F6?
- XII . 卷積神經網絡 完整流程示例 ( 9 ) : 輸出層
- XIII . 卷積神經網絡 完整流程示例整體圖示 ( 10 )
- XIV . 卷積神經網絡 總結
- XV . 卷積神經網絡 與 傳統神經網絡
I . 池化
1 . 池化 簡介 :
① 池化概念 : 池化就是將一塊區域降維 , 甚至減少到一個值 ;
② 池化過程 : 將圖像分割成一塊塊小區域 , 每個區域只取一個值 , 取該區域的 最大值采樣 , 或平均值采樣 ;
③ 池化作用 : 卷積操作的卷積核一般都比較小 , 卷積完成后的圖像一般也很大 , 進行池化過程 , 可以指數級地降低維度 ;
2 . 池化采樣 : 使用采樣窗口 , 將圖片分割成一塊一塊的區域 , 每一塊區域取一個值 ; 下圖是一個采樣窗口 , 四個值分別是 {1,2,3,4}\{1,2,3,4\}{1,2,3,4} ;
① 最大值采樣 : 每個采樣窗口中 , 取像素值最大的那個值 ; 如果取最大值 , 上述采樣窗口取值 444 ;
② 平均值采樣 : 每個采樣窗口中 , 取所有像素值的平均值 ; 如果取平均值 , 上述采樣窗口取值 1+2+3+44=2.5\dfrac{1 + 2 + 3 + 4}{4} = 2.541+2+3+4?=2.5 ;
3 . 池化意義 :
① 降低維度 : 降低了圖片的維度 , 意味著損失了很多數據 , 但剩余的特征仍能夠描述圖像 , 極大降低了參數數量 ;
② 避免過擬合 : 由于維度降低了 , 還有避免過擬合的作用 ;
4 . 池化示例 : 如給一個 8×88 \times 88×8 的圖片 , 使用 4×44 \times 44×4 的采樣窗口 對該圖片進行采樣 , 最終得到一個 2×22 \times 22×2 的圖片 ;
① 原始圖片 : 8×88 \times 88×8 大小 ;
② 切割圖片 : 使用采樣窗口將其分割 , 如下 紅色區域 , 綠色區域 , 紫色區域 , 黃色區域 ;
③ 取值 : 每個區域取一個值 , 最大值 , 或 平均值 ;
④ 最終結果 : 最終結果是 2×22 \times 22×2 的圖片 , 如 紅色區域 4×44\times 44×4 取平均值 , 對應該池化結果的紅色值 ;
II . 丟棄操作
丟棄操作簡介 :
① 全連接網絡參數多 : 神經網絡是全連接的 , 全連接會有非常多的參數個數 ;
② 丟棄神經元單元 : 在學習過程中 , 每次都隨機丟棄一些神經元單元 ;
③ 作用 : 減少參數數量 , 可以 降低過擬合的風險 ;
III . 批量規范化
批量規范化 :
① 操作過程 : 對輸入的數據減去一個均值 , 或除以一個方差 , 降低數值的大小 , 可以有效加快計算速度 ;
② 作用 : 能加快計算速度 ;
IV . 卷積神經網絡 完整流程示例 ( 1 ) : 原始輸入圖
輸入圖 : 是 32×3232 \times 3232×32 大小的圖片 ;
V . 卷積神經網絡 完整流程示例 ( 2 ) : 卷積層 C1C_1C1?
卷積層 C1C_1C1? :
① 操作過程 : 32×3232 \times 3232×32 大小的圖像輸入后 , 在該層使用 666 個 5×55 \times 55×5 的卷積核對輸入圖進行卷積 ;
② 卷積核大小 : 5×55 \times 55×5 , 這是過濾器 , 滑動窗口 等的大小 ;
③ 卷積結果 : 使用該卷積核得到的卷積結果是 28×2828 \times 2828×28 的圖像 , 555 在 323232 中從左滑到右 , 從上滑到下 , 是 32?5+1=2832 - 5 + 1 = 2832?5+1=28 , 也就是 28×2828 \times 2828×28 的由來 ;
④ 卷積核個數 : 這里有 666 個卷積核 , 即對應 666 種底層紋理特征 ; 每個輸入圖 與 卷積核 進行卷積后 , 得到一個結果 , 這里得到 6 個卷積結果 ;
⑤ 本層卷積結果 : 666 個 28×2828 \times 2828×28 的圖像 ;
VI . 卷積神經網絡 完整流程示例 ( 3 ) : 池化層 S2S_2S2?
池化層 S2S_2S2? :
① 本層輸入 : 666 個 28×2828 \times 2828×28 的圖像 ;
② 池化層操作 : 使用 2×22 \times 22×2 的采樣窗口 , 對上述卷積得到的 666 個圖像進行采樣 , 將 666 個 28×2828 \times 2828×28 的圖像池化成 666 個 14×1414 \times 1414×14 的圖像 ;
③ 采樣窗口 : 2×22 \times 22×2 , 相當于把圖像數據量縮小了 444 倍 ;
④ 本層池化結果 : 666 個 14×1414 \times 1414×14 的圖像 ;
VII . 卷積神經網絡 完整流程示例 ( 4 ) : 卷積層 C3C_3C3?
卷積層 C3C_3C3? :
① 卷積核 大小 : 5×55 \times 55×5 的卷積核組成 ;
② 卷積圖像大小 : 將 14×1414 \times 1414×14 的圖像 , 使用 5×55 \times 55×5 的卷積核 進行卷積 , 得到的結果是 10×1010 \times 1010×10 的圖像 , 由 14?5+1=1014 - 5 + 1 = 1014?5+1=10 計算得來 ;
③ 卷積核個數 : 161616 個 , 每個輸入圖片 , 卷積后都得到 161616 個圖片 ;
④ 特征圖組合 全連接 : 上一層 S2S_2S2? 池化層 輸出了 666 個 14×1414 \times 1414×14 的圖像 , 如果是全連接 , 那么本層需要進行 6×166 \times 166×16 次卷積 , 得到 969696 個卷積結果 ;
⑤ 特征圖組合 部分連接 : 上一層 S2S_2S2? 池化層 輸出了 666 個 14×1414 \times 1414×14 的圖像 , 可以為不同的輸入圖像 ( 上一層輸入的 666 張圖片 ) , 配置不同的卷積核 ( 本層的 161616 個卷積核 ) 進行卷積計算 , 有多種排列組合方式可供選擇 ;
3 . 輸入與輸出結果 :
① 輸入圖 : 666 個 14×1414 \times 1414×14 的圖像 ;
② 輸出圖 : 161616 個 10×1010 \times 1010×10 的圖像 ;
VIII . 卷積神經網絡 完整流程示例 ( 5 ) : 卷積層 C3C_3C3? 特征組合示例
1 . 特征圖組合示例 : C3C_3C3? 中有 161616 個卷積核 , 分別編號 n=1,2,?,16n = 1, 2, \cdots, 16n=1,2,?,16 , 上一層 S2S_2S2? 輸出 666 個圖像 , 編號 m=1,2,?,6m = 1, 2, \cdots, 6m=1,2,?,6 ; 可以使用一個 6×166 \times 166×16 的矩陣 ( 666 行 161616 列 ) 表示為哪個圖像 , 進行哪個卷積操作 ;
① 表格說明 : 000 到 555 行 , 表示輸出的 666 個圖片 ; 000 到 151515 列 , 表示本層的 161616 個卷積核 ;
② 表格位置含義 : 第 000 行 代表是上層 S2S_2S2? 的第 000 個輸入圖像 , 第 000 列 , 表示本層 C3C_3C3? 的第 000 個卷積核 ;
2 . 表格值含義 :
① 卷積 : 如果 第 000 行 第 000 列 值為 1 , 表示 第 000 個輸入圖像 需要與 第 000 個卷積核 進行卷積運算 ;
② 不卷積 : 如果 第 000 行 第 000 列 值為 0 , 表示 第 000 個輸入圖像 需要與 第 000 個卷積核 不進行卷積運算 ;
3 . 下面表格示例含義 : 下圖中除了第 555 張圖片的 第 151515 個卷積核 的卷積計算不用執行外 , 其它的 959595 個卷積計算都要執行 ;
| 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 3 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 4 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 5 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
該表中有 969696 個表格位置 , 可以精確的指出哪些卷積操作需要做 , 哪些不需要做 , 可以使用矩陣形式表示出來 , 我就不寫了 , Latext 矩陣太麻煩 ;
4 . 特征組合的意義 :
① 減少計算量 : 可以減少參數個數 , 進而降低計算量 ;
② 增加性能 : 不同特征組合 , 有利于指定的特征提取 ;
IX . 卷積神經網絡 完整流程示例 ( 6 ) : 池化層 S4S_4S4?
池化層 S4S_4S4? 輸入 : 輸入 161616 個 10×1010 \times 1010×10 的圖像 , 使用 2×22 \times 22×2 的采樣 進行池化 , 得到 161616 個 5×55 \times 55×5 的圖像 ;
池化層 S4S_4S4? 輸出 : 輸出 161616 個 5×55 \times 55×5 的圖像 ;
X . 卷積神經網絡 完整流程示例 ( 7 ) : 卷積層 C5C_5C5?
1 . 卷積層 C5C_5C5? 操作 :
① 卷積層 C5C_5C5? 輸入 : 輸入 161616 個 5×55 \times 55×5 的圖像 ;
② 卷積操作 : 使用 120120120 個 5×55 \times 55×5 的卷積核 , 在上述 161616 個圖像上進行卷積操作 , 得到 120×6120 \times 6120×6 個 1×11 \times 11×1 的圖像 ;
③ 卷積層 C5C_5C5? 輸出 : 輸出 120120120 個 1×11 \times 11×1 的圖像 ;
2 . 卷積計算分析 :
① 卷積核大小 與 圖像大小 : 此處卷積核大小 與 圖像大小都是 5×55 \times 55×5 的大小 , 卷積之后 , 只剩下一個值 , 即 1×11 \times 11×1 像素大小 ;
② 卷積核 與 圖像 卷積結果個數 : 111 個圖像 與 120120120 個 卷積核進行卷積 , 有 120120120 個結果 ; 666 個圖像 與 120120120 個 卷積核進行卷積 , 有 720720720 個結果 ;
③ 特征選擇 : 此處又要進行特征選擇 , 并不需要將所有輸入圖像 , 每個都進行 120120120 次卷積 , 只選擇其中的 120120120 個組合即可 , 因此這里輸出 120120120 個 1×11 \times 11×1 的圖像 ;
XI . 卷積神經網絡 完整流程示例 ( 8 ) : 全連接層 F6F_6F6?
1 . 輸入與輸出 :
① 本層的輸入值 : 120120120 個連接的權重 , 乘以每個單元輸入值 , 加上每個輸入單元的偏置 , 將這 120120120 個值累加起來 , 就得到了某個單元的輸入 ;
② 本層的輸出 : 本層的單個單元的輸入 , 傳入 sigmod 函數 , 即可得到單元的輸出值 ;
2 . 神經元個數 :
① 全連接層 神經元個數 : 全連接層有 12×7=8412 \times 7 = 8412×7=84 個神經元單元 , 每個神經元單元都代表圖像的像素點 ;
② 神經元個數由來 : 假設圖像的大小為 12×712 \times 712×7 像素大小 , 每個像素值都作為一個輸入 , 即有 848484 個單元 ;
3 . 連接參數 :
① 全連接 : 該層 848484 個神經元 , 與 上一層 C5C_5C5? 卷積層輸出的 120120120 個值進行全連接 , 即 C5C_5C5? 層與 F6F_6F6? 層有 120×84120 \times 84120×84 條連接線 ;
② 權重 : 這里的權重 是上一層 120120120 個單元 , 與本層 848484 個單元 , 單條連接的權重 ;
③ 偏置 : 注意這里的偏置是上一層輸出單元的參數 , 是 120120120 個輸出單元的每個單元的偏置參數值 ;
—
XII . 卷積神經網絡 完整流程示例 ( 9 ) : 輸出層
1 . 輸出層簡介 :
① 全連接 : 輸出層 與 上一層 F6F_6F6? 是全連接的 , 即 F6F_6F6? 全連接層 848484 個神經元單元 與 輸出層的 101010 個神經元的連接 是 全連接 的 ;
② 輸出層 神經元單元 個數 : 該層有 101010 個神經元單元 , 分別對應 0,1,2,3,4,5,6,7,8,90 ,1,2,3,4,5,6,7,8,90,1,2,3,4,5,6,7,8,9 , 這 999 個數字 ;
③ 描述總結 : 當前有 101010 張圖片 , 每張圖片有 12×712 \times 712×7 像素 , 即 848484 個像素點 ;
2 . 連接的深層次含義 :
① 全連接層單元分析 : 全連接層 F6F_6F6? 有 848484 個單元 , 對應的就是 848484 個像素點 ;
② 輸出層單元分析 : 輸出層的每個單元 , 都代表一張圖片 ;
③ 連接個數分析 : 輸出層每個單元 , 都連接 F6F_6F6? 全連接層的所有單元 , 這里每個圖片都有 848484 個連接 , 101010 個圖片有 有 10×84=84010 \times 84 = 84010×84=840 個連接 ;
④ 連接 與 像素值對應 : 輸出層每個單元 ( 每張圖片 ) 都有 848484 個連接 , 這里直接與每個圖片的 12×7=8412 \times 7 = 8412×7=84 個像素點對應 ;
⑤ 連接本質 : 連接的權值就是真實像素值 ;
3 . 連接權值描述 :
① F6F_6F6? 層與輸出層的連接權值 : 全連接層 F6F_6F6? 中的第 jjj 個單元 是 xjx_jxj? , 與 輸出層 第 iii 個單元 進行連接 , 該連接的權值為 wijw_{ij}wij? ;
② wijw_{ij}wij? 連接權值 : 該連接權值就是 第 iii 張圖片對應的 F6F_6F6? 層 像素點位置 的真實像素值 ;
4 . 輸出計算 : 每個單元的輸出值使用 yyy 標記 , 輸出層 101010 個單元 , 第 iii 個單元的輸出值為 yiy_iyi? , 計算公式如下 :
yi=∑j=184(xj?wij)2y_i = \sum_{j = 1}^{84}(x_j - w_{ij})^2yi?=j=1∑84?(xj??wij?)2
yiy_iyi? 表示輸出層第 iii 個單元的輸出 ;
xjx_jxj? 表示經過多個 卷積 池化 后的 計算出的像素值 ;
wijw_{ij}wij? 指的是 12×712 \times 712×7 圖片上的對應的真實像素值 ;
(xj?wij)2(x_j - w_{ij})^2(xj??wij?)2 取平方 , 是為了獲取其誤差 , 避免符號干擾 ; 這是誤差平方公式 , 整體是誤差平方和公式 ;
5 . yiy_iyi? 輸出意義 :
① 像素位置說明 : xjx_jxj? 表示識別出的像素圖片第 jjj 個像素的位置 , wijw_{ij}wij? 表示第 iii 張圖片的第 jjj 個像素的位置 ;
② 同一位置像素相減 : 假如這兩張圖片是同一張圖片 , 那么 xjx_jxj? 與 wijw_{ij}wij? 是相同的 , 或者相似的 , 其相減數值很小 , 基本為 000 ;
③ 值越小相似度越大 : yiy_iyi? 值很小時 , 說明此時該圖片與第 iii 張圖片及其相似 , 該圖片就被識別成 iii 圖片 ;
④ 輸出結果分析 : 輸出的 101010 個 yiy_iyi? , 哪個值最小 , 就將輸入圖片分類成該 第 iii 張圖片 ;
XIII . 卷積神經網絡 完整流程示例整體圖示 ( 10 )
XIV . 卷積神經網絡 總結
1 . 先卷積池化 再全連接訓練 : 卷積神經網絡 一般會進行多層的卷積 池化 操作 , 然后將維度降低到可接受程度以后 , 再將圖片的像素值輸入到傳統神經網絡中 , 該網絡中各層都是全連接的 , 又叫全連接層 , 然后進行訓練 , 找到合適的參數 ;
2 . 卷積 池化作用 : 卷積 和 池化操作 目的是為了提取圖片的特征 , 降低輸入圖像的維度 , 進而減少訓練的參數個數 ;
3 . 全連接層本質 : 全連接層 與 輸出層 組合 , 就是一個傳統的神經網絡 , 有輸入層 , 隱藏層 , 輸出層 , 起到將卷積池化后的圖像輸入然后分類的作用 , 就是一個分類器 ;
4 . 特征提取性能 : 每次卷積 , 都會 使用 卷積核 提取 底層紋理特征 , 卷積次數越多 , 提取的特征越多 , 學習到的特征就越豐富 , 與之相對的是神經網絡變得越來越復雜 ;
XV . 卷積神經網絡 與 傳統神經網絡
卷積神經網絡 與 傳統神經網絡 :
① 訓練過程一致 : 卷積神經網絡看起來很復雜 , 但其訓練過程與傳統的神經網絡基本一樣 , 也是使用反向傳播算法 ; 只是加入了 卷積 池化的 步驟 ;
② 向前傳播輸入 : 將輸入圖進行多次 卷積 池化操作 , 提取特征 , 將提取到的特征屬性輸入到全連接層 , 然后就是計算各層輸入輸出 ;
③ 向后傳播誤差 : 計算輸出值 , 與實際值的誤差 , 然后向后將誤差傳播回去 , 作為修改全連接層中的權值和偏置的依據 ; 使用梯度下降方法更新權值和偏置 ;
總結
以上是生活随笔為你收集整理的【数据挖掘】卷积神经网络 ( 池化 | 丢弃 | 批量规范化 | 卷积神经网络完整流程示例 | 卷积 | 池化 | 全连接 | 输出 | 卷积神经网络总结 )的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【数据挖掘】卷积神经网络 ( 视觉原理
- 下一篇: 【Android 应用开发】Androi