卷積神經網絡各個層級結構,如下圖:
上圖中CNN要做的事情是:給定一張圖片,是車是馬還是飛機未知,現在需要模型判斷這張圖片里具體是一個什麼東西
最左邊是
中間是
最右邊是
對圖像(不同的數據窗口數據)和濾波矩陣(一組固定的權重:因為每個神經元的多個權重固定,所以又可以看做一個恆定的濾波器filter)做內積( 逐個元素相乘再求和 )的操作就是所謂的 『卷積』 操作,也是卷積神經網絡的名字來源
舉個具體的例子。比如下圖中,圖中左邊部分是原始輸入數據,圖中中間部分是濾波器filter,圖中右邊是輸出的新的二維數據,右上角是具體的計算過程
在下圖對應的計算過程中,左邊是圖像輸入,中間部分就是濾波器filter(帶著一組固定權重的神經元),不同的濾波器filter會得到不同的輸出數據,比如顏色深淺、輪廓等。如果想提取圖像的不同特徵,則可以用不同的濾波器
在CNN中,濾波器filter(帶著一組固定權重的神經元)對局部輸入數據進行卷積計算。每計算完一個數據窗口內的局部數據後,數據窗口不斷平移滑動,直到計算完所有數據。這個過程中,有這麼幾個參數:
CS231n課程中有一張卷積動圖
從圖中可以看到:
然後分別以兩個濾波器filter為軸滑動數組進行卷積計算,得到兩組不同的結果
隨著左邊數據窗口的平移滑動,濾波器Filter w0 / Filter w1對不同的局部數據進行卷積計算
值得一提的是:左邊數據在變化,每次濾波器都是針對某一局部的數據窗口進行卷積,這就是所謂的CNN中的 局部感知 機制。打個比方,濾波器就像一雙眼睛,人類視角有限,一眼望去,只能看到這世界的局部。如果一眼就看到全世界,你會累死,而且一下子接受全世界所有信息,你大腦接收不過來
與此同時,數據窗口滑動,導致輸入在變化,但中間濾波器Filter w0的權重(即每個神經元連接數據窗口的權重)是固定不變的,這個權重不變即所謂的CNN中的 參數(權重)共享 機制
最後提一點,從圖上我們可以看到,每個filter下面都有一個bias,因此要在原來的內積計算結束後,再加上這個bias,得到最終的對應位置值