本篇最後由 megus002 於 2018/01/10 15:37:45 編輯
當深度學習又有什麼重大突破時,這些進展十有八九都和卷積神經網路(Convolutional Neural Networks,CNN)有關。CNN 又被稱為 CNNs 或 ConvNets,它是目前深度神經網路(deep neural network)領域的發展主力,在圖片辨別上甚至可以做到比人類還精準的程度。如果要說有任何方法能不負大家對深度學習的期望,CNN 絕對是首選。
CNN 最棒的地方是在一步一步說明原理的情況下,它是個很好理解的演算法。所以以下我將為各位說明 CNN,也歡迎參考上方比圖片更詳細的影片。如果中間有什麼不懂的地方,只要點擊圖片,就能跳到影片中對應的說明。
在這裡 CNN 最重要的工作,就是每當我們給它一張圖,它就會回報上面的符號是圈還是叉。對它來說結果永遠是這兩者之一。
辨別圖片最簡單的方法,是直接用圈和叉的圖片去比對新的圖片,看圖上的符號比較像哪個。但事情沒有這麼簡單,因為電腦在比對這些圖片的時候非常刻板。在電腦看來,這些圖片只是一群排成二維矩陣、帶有位置編號的像素(就跟棋盤一樣)。在我們的例子裡,白色格子(即筆畫)的值為 1,黑色格子(即背景)的值為 -1。所以在比對圖片時,如果有任何一個格子的值不相等,電腦就會認為兩張圖不一樣。理想上,我們希望不管在平移、縮小、旋轉或變形等情況下,電腦都能正確判斷符號。這時 CNN 就派上用場了。
Feature:
CNNs 會比較兩張圖片裡的各個局部,這些局部被稱為特徵(feature)。比起比較整張圖片,藉由在相似的位置上比對大略特徵,CNNs 能更好地分辨兩張圖片是否相同。
一張圖片裡的每個特徵都像一張更小的圖片,也就是更小的二維矩陣。這些特徵會捕捉圖片中的共通要素。以叉叉的圖片為例,它最重要的特徵包括對角線和中間的交叉。也就是說,任何叉叉的線條或中心點應該都會符合這些特徵。
convolution : **
每當 CNN 分辨一張新圖片時,在不知道上述特徵在哪的情況下,CNN 會比對圖片中的任何地方。為了計算整張圖片裡有多少相符的特徵,我們在這裡創造了一套篩選機制。這套機制背後的數學原理被稱為卷積(convolution)
卷積的基本原理,其實只需要小六程度的數學就能理解。要計算特徵和圖片局部的相符程度,只要將兩者各個像素上的值相乘、再將總和除以像素的數量。如果兩個像素都是白色(值為 1),乘積就是 1 * 1 = 1;如果都是黑色(值為 -1),乘積就是 (-1) * (-1) = 1。也就是說像素相符的乘積為 1,像素相異的乘積為 -1。如果兩張圖的每個相素都相符,將這些乘積加總、再除以像素數量就會得到 1;反之,如果兩者的像素完全相異,就會得到 -1。+
然後,我們可以根據每次卷積的值和位置,製作一個新的二維矩陣。這也就是利用特徵篩選過後的原圖,它可以告訴我們在原圖的哪些地方可以找到該特徵。值越接近 1 的局部和該特徵越相符,值越接近 -1 則相差越大,至於接近值接近 0 的局部,則幾乎沒有任何相似度可言。
.............目前只做到這..哈..再來的.. pooling ...等想到再說...
讀這個...或許比..看..老舊的..主控..什麼價量..輚折..有趣多了...