1.1計算機視覺
(1)計算機視覺的應用包括圖像分類、目標檢測、圖像分割、風格遷移等,下圖展示了風格遷移案例:
(2)圖像的特征量非常之大,比如一個3通道的1000*1000的照片,其特征為3*1000*1000達到300萬,如果第一個隱藏層有1000個單元那么W[1]有20億個參數,計算量不僅大,而且由於圖像樣本相對於特征實在是太少,導致很容易過擬合,所以需要其他的方式來連接,即卷積。
1.2邊緣檢測示例
(1)卷積運算是輸入圖像與過濾器(也叫核)進行的運算,得到輸出圖像。卷積核與圖像對應的位置相乘求和得到一個新值,如下圖所示:
輸出中第一個綠色框的值為:
(2)每個不同的核可以檢測到不同的邊緣特性,如下面的核就可以檢測到圖像的垂直特性,即輸入圖像中的邊緣會在輸出圖像中用白色顯示出來,非邊緣部分顯示為黑色或灰色。同理還有其他水平邊緣檢測等各種核(過濾器)。
1.3更多邊緣檢測的內容
(1)除了上面提到的卷積核,還有其他許多卷積核,把上面3*3的卷積核看成9個參數,然后不是通過人工的確定,而是通過神經網絡來學習這些參數,這就是卷積神經網絡。
1.4Padding
(1)邊緣不填充會有兩個缺點:第一是隨着不斷卷積,圖像會變得越來越小,有時你可不想讓它變小;第二是最角落的點只被使用了一次,這意味着在下傳的過程中丟掉了圖像邊緣位置的信息。如下圖所示(角落的綠色點只被計算了一次,中間紅色點可以被計算多次):
(2)Padding經常可以設置成為兩個參數:第一個是Valid,即不做填充;第二個是Same,即輸出尺寸與輸入尺寸相等。
(3)在步長為1是有公式:n+2p-f+1為輸出的尺寸。其中n是輸入的尺寸(比如說寬),f是卷積核的大小(比如3),p是每一邊額外添加的列數(如添加一列就為1)。所以根據這個式子很容易計算出用Same參數時,p=(f-1)/2,注意此處前提都是步長為1。
1.5卷積步長
(1)輸入與輸出的尺寸關系如下,注意當結果不是整數時是向下取整。
(2)在深度學習的卷積沒有必要像數學或者信號處理教材中,先將卷積核順時針旋轉90°,然后在水平翻轉,最后再進行與上面相同的卷積運算。深度學習直接忽略了那些旋轉翻轉的步驟。影響不大。
1.6三維卷積
(1)三維的卷積方法如下圖所示,卷積核的通道數與輸入圖像的通道數相同,輸出圖像的通道數為所使用的卷積核的個數,至於高和寬還是按照上面提到的公式計算:
1.7單層卷積網絡
(1)每一個卷積核的輸出對應一個實數b(偏差),然后在進行激活函數的非線性轉換得到輸出,如下圖所示:
(2)參數個數的計算:比如10個卷積核3*3*3,b的個數跟卷積核個數相同,所以總的參數為(3*3*3+1)*10=280,不管輸入尺寸多大,參數個數始終保持不變,而在全連接網絡中參數個數是會隨着輸入不同而不同的。
(3)一些符號如下所示,習慣上w用m*nH[l]*nW[l]*nC[l]表示,b用1*1*1*nC[l]。
1.8簡答的卷積網絡示例
(1)案例圖如下:最核心的就是要會計算輸出尺寸(公式((n+2p-f)/s)+1,向下取整)。
1.9池化層
(1)池化層中沒有需要學習的參數,所以通常不把池化層當做獨立的一層來看。
(2)池化層是一般不會設置padding,即一般padding為0。
(3)fitter為2,stride為2是最常見的參數設置,尺寸圖像縮小為原來的一半。
(4)卷積時用的尺寸計算公式同樣適用於池化層,如下圖所示:
(5)最大池化層比平均池化層更為常用。
1.10卷積神經網絡示例
(1)下面是一個0-9數組分類的網絡,包括了卷積層、池化層、全連接層:
(2)一般而言,不斷卷積之后,圖像的高度和寬度會變小,通道數(深度)會增加。
(3)在神經網絡中,另一個常見的模式就是一個或多個卷積層之后跟隨一個池化層,然后一個或多個卷積層之后跟隨一個池化層,然后跟幾個全連接層,最后是一個softmax.
(4)下面是針對上面網絡的一些輸出和參數的個數,其中參數一欄最后三行的值應該是48000+120、10080+84、840+10,208應改為(5*5*3+1)*8=608,416應改為(5*5*8+1)*16=3216。
1.11為什么使用卷積
(1)卷積網絡的參數遠少於全連接的原因主要有兩點:第一是參數共享,如左上角用一個垂直的卷積核檢測,那么這個卷積核也同樣適用於圖像的其他區域;第二是稀疏連接,如某個輸出值只與特定的幾個值相連接(如九個值)。
(2)卷積神經網絡善於捕捉偏移不變形,例如把圖像往右平移幾個像素,對於網絡而言沒什么影響。