iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 11
6
AI & Data

英雄集結:深度學習的魔法使們系列 第 11

[魔法陣系列] Convolutional Neural Network(CNN)之術式解析

2012年,Alex Krizhesky 和 Geoff Hinton 提出的 AlexNet 在 ImageNet 的圖像分類競賽中以巨大優勢贏得冠軍,使 Convolutional Neural Network(CNN,又稱卷積神經網絡)開始被廣泛研究,成為學術界的焦點,可以說是王者回歸。但在此之前,CNN 的鋒芒一直被「手工設計特徵 + SVM」的分層結構所蓋過,這個分層結構沒有 CNN 這種端到端(end-to-end)學習的特色。我想下一篇也許可以來解析為什麼 AlexNet 能夠有這樣的突破。

CNN 是深度學習的一種架構,被廣泛用在圖片處理以及物體辨認(object recognition)上。在深入 CNN 結構之前,想先跟各位聊聊圖片
https://ithelp.ithome.com.tw/upload/images/20181024/20112540VdxrEGfGwU.png
這張圖片,若視野擺放的位置不同就有不同的理解(正面與側臉)。這代表面對一張圖,人類不需要把整張圖看完才能理解它,有時候看部分就能瞬間理解。

來欣賞 CNN 的魔法陣樣貌:
https://ithelp.ithome.com.tw/upload/images/20181025/20112540M9bSO4HxYg.png

截圖自 [地圖] 深度學習世界的魔法陣們

CNN 主要由下列概念所組成:

  1. Convolution Operation
  2. Pooling
  3. Fully Connected Networks
  • Convolution Operation

神經網絡隨機生成 Kernel(又稱 Filter)來抓取不同的特徵,將特徵存入 feature maps 中,再透過訓練決定哪些類型是重要的。Filter 在過程中可將圖片變小,使得圖片能夠更容易以及快速被神經網絡處理。

Convolution Operation

圖片來源:https://www.kdnuggets.com/2017/11/understanding-deep-convolutional-neural-networks-tensorflow-keras.html

謎之牙狼族:在這過程中是否會遺失掉訊息嗎?

答案:會的。不過就如同前面探討的圖片,實際上我們在看圖時不會每個 pixel 都看,例如可能只看眼睛、鼻子等特徵(feature),而這些特徵被保存在 feature map 中。

Filter 抓取特徵的例子:
https://ithelp.ithome.com.tw/upload/images/20181024/20112540QjmBLyNvnk.png

  • Pooling(池化)
    電腦不如人類聰明,同一張圖片在不同的角度、光線、質地、部位會使電腦判斷成是完全不同的特徵,如何讓神經網絡能夠聰明一點,彈性的處理這些特徵?這就是 Pooling 的功能了,它有不同種形式:
  1. Mean pooling
  2. Max pooling
  3. Sum pooling

以 Max pooling 為例:
https://ithelp.ithome.com.tw/upload/images/20181025/20112540IVp4Q56RA4.png

圖片來源:https://computersciencewiki.org/index.php/Max-pooling_/_Pooling

如圖所示,抓出矩陣中的最大值。Max pooling 擁有去雜訊的功能,且當圖片平移的話也不會影響電腦的判斷。
下面是實際例子:
https://ithelp.ithome.com.tw/upload/images/20181025/20112540rRHUauG2vi.png

圖片來源:https://computersciencewiki.org/index.php/Max-pooling_/_Pooling

  • Fully Connected
    這邊的全連接層將前一層的輸出做平坦化(Flatten)攤平合併到一個大向量內,之後接到 ANN,ANN 的魔法陣術式在前面有介紹過了,就不再詳述。
    https://ithelp.ithome.com.tw/upload/images/20181025/20112540qdK9acTxJx.png

圖片來源:https://www.kdnuggets.com/2017/11/understanding-deep-convolutional-neural-networks-tensorflow-keras.html/2

全連接層(Fully Connected Layer)起到分類任務的作用,而前面的層充當特徵提取器,整個 CNN 的流程如下圖:
https://ithelp.ithome.com.tw/upload/images/20181024/20112540Ye5mg9UymX.png

最後的最後,提供一個延伸閱讀:2D Visualization of a Convolutional Neural Network,視覺化 CNN 在手寫數字上的效果,各位見習魔法使們可以玩玩看。


上一篇
[魔王出沒] 深度學習中的魔王軍簡介
下一篇
[魔法陣系列] 王者誕生:AlexNet 之術式解析
系列文
英雄集結:深度學習的魔法使們31

尚未有邦友留言

立即登入留言