為什么使用卷積缨睡?(Why convolutions?)
我們來分析一下卷積在神經(jīng)網(wǎng)絡(luò)中如此受用的原因鸟悴,然后對如何整合這些卷積,如何通過一個標(biāo)注過的訓(xùn)練集訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)做個簡單概括奖年。和只用全連接層相比细诸,卷積層的兩個主要優(yōu)勢在于參數(shù)共享和稀疏連接,舉例說明一下陋守。
假設(shè)有一張32×32×3維度的圖片震贵,這是上節(jié)課的示例,假設(shè)用了6個大小為5×5的過濾器水评,輸出維度為28×28×6猩系。32×32×3=3072,28×28×6=4704中燥。我們構(gòu)建一個神經(jīng)網(wǎng)絡(luò)寇甸,其中一層含有3072個單元,下一層含有4074個單元疗涉,兩層中的每個神經(jīng)元彼此相連拿霉,然后計算權(quán)重矩陣,它等于4074×3072≈1400萬咱扣,所以要訓(xùn)練的參數(shù)很多绽淘。
雖然以現(xiàn)在的技術(shù),我們可以用1400多萬個參數(shù)來訓(xùn)練網(wǎng)絡(luò)闹伪,因為這張32×32×3的圖片非常小沪铭,訓(xùn)練這么多參數(shù)沒有問題。如果這是一張1000×1000的圖片偏瓤,權(quán)重矩陣會變得非常大杀怠。我們看看這個卷積層的參數(shù)數(shù)量,每個過濾器都是5×5厅克,一個過濾器有25個參數(shù)赔退,再加上偏差參數(shù),那么每個過濾器就有26個參數(shù)已骇,一共有6個過濾器离钝,所以參數(shù)共計156個,參數(shù)數(shù)量還是很少褪储。
卷積網(wǎng)絡(luò)映射這么少參數(shù)有兩個原因:
一是參數(shù)共享卵渴。
觀察發(fā)現(xiàn),特征檢測如垂直邊緣檢測如果適用于圖片的某個區(qū)域鲤竹,那么它也可能適用于圖片的其他區(qū)域浪读。也就是說,如果你用一個3×3的過濾器檢測垂直邊緣辛藻,那么圖片的左上角區(qū)域碘橘,以及旁邊的各個區(qū)域(左邊矩陣中藍(lán)色方框標(biāo)記的部分)都可以使用這個3×3的過濾器。每個特征檢測器以及輸出都可以在輸入圖片的不同區(qū)域中使用同樣的參數(shù)吱肌,以便提取垂直邊緣或其它特征痘拆。
它不僅適用于邊緣特征這樣的低階特征,同樣適用于高階特征氮墨,例如提取臉上的眼睛纺蛆,貓或者其他特征對象。即使減少參數(shù)個數(shù)规揪,這9個參數(shù)同樣能計算出16個輸出桥氏。
直觀感覺是,一個特征檢測器猛铅,如垂直邊緣檢測器用于檢測圖片左上角區(qū)域的特征字支,這個特征很可能也適用于圖片的右下角區(qū)域。因此在計算圖片左上角和右下角區(qū)域時奸忽,你不需要添加其它特征檢測器堕伪。假如有一個這樣的數(shù)據(jù)集,其左上角和右下角可能有不同分布月杉,也有可能稍有不同刃跛,但很相似,整張圖片共享特征檢測器苛萎,提取效果也很好桨昙。
第二個方法是使用稀疏連接
第二個方法是使用稀疏連接,我來解釋下腌歉。這個0是通過3×3的卷積計算得到的蛙酪,它只依賴于這個3×3的輸入的單元格,右邊這個輸出單元(元素0)僅與36個輸入特征中9個相連接翘盖。而且其它像素值都不會對輸出產(chǎn)生任影響桂塞,這就是稀疏連接的概念(這個要搞清楚na,記住了)馍驯。
再舉一個例子阁危,這個輸出(右邊矩陣中紅色標(biāo)記的元素 30)僅僅依賴于這9個特征(左邊矩陣紅色方框標(biāo)記的區(qū)域)玛痊,看上去只有這9個輸入特征與輸出相連接,其它像素對輸出沒有任何影響狂打。
神經(jīng)網(wǎng)絡(luò)可以通過這兩種機制減少參數(shù)擂煞,以便我們用更小的訓(xùn)練集來訓(xùn)練它,從而預(yù)防過度擬合趴乡。
你們也可能聽過对省,卷積神經(jīng)網(wǎng)絡(luò)善于捕捉平移不變。通過觀察可以發(fā)現(xiàn)晾捏,向右移動兩個像素蒿涎,圖片中的貓依然清晰可見,因為神經(jīng)網(wǎng)絡(luò)的卷積結(jié)構(gòu)使得即使移動幾個像素惦辛,這張圖片依然具有非常相似的特征劳秋,應(yīng)該屬于同樣的輸出標(biāo)記。
實際上裙品,我們用同一個過濾器生成各層中俗批,圖片的所有像素值,希望網(wǎng)絡(luò)通過自動學(xué)習(xí)變得更加健壯市怎,以便更好地取得所期望的平移不變屬性岁忘。
這就是卷積或卷積網(wǎng)絡(luò)在計算機視覺任務(wù)中表現(xiàn)良好的原因。
最后区匠,我們把這些層整合起來干像,看看如何訓(xùn)練這些網(wǎng)絡(luò)。
比如我們要構(gòu)建一個貓咪檢測器驰弄,
我們有下面這個標(biāo)記訓(xùn)練集麻汰,x表示一張圖片,^y是二進制標(biāo)記或某個重要標(biāo)記戚篙。
我們選定了一個卷積神經(jīng)網(wǎng)絡(luò)五鲫,輸入圖片,增加卷積層和池化層岔擂,然后添加全連接層位喂,最后輸出一個softmax,即^y乱灵。
卷積層和全連接層有不同的參數(shù)w和偏差b塑崖,我們可以用任何參數(shù)集合來定義代價函數(shù)。
一個類似于我們之前講過的那種代價函數(shù)痛倚,并隨機初始化其參數(shù)w和b规婆,代價函數(shù)J等于神經(jīng)網(wǎng)絡(luò)對整個訓(xùn)練集的預(yù)測的損失總和再除以m
所以訓(xùn)練神經(jīng)網(wǎng)絡(luò),你要做的就是使用梯度下降法,或其它算法抒蚜,例如Momentum梯度下降法掘鄙,含RMSProp或其它因子的梯度下降來優(yōu)化神經(jīng)網(wǎng)絡(luò)中所有參數(shù),以減少代價函數(shù)J的值嗡髓。通過上述操作你可以構(gòu)建一個高效的貓咪檢測器或其它檢測器通铲。
你已經(jīng)學(xué)習(xí)了卷積神經(jīng)網(wǎng)絡(luò)的所有基本構(gòu)造模塊,以及如何在高效圖片識別系統(tǒng)中整合這些模塊器贩。
下周,我們將繼續(xù)深入學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)朋截。我曾提到卷積神經(jīng)網(wǎng)絡(luò)中有很多超參數(shù)蛹稍,下周,我打算具體展示一些最有效的卷積神經(jīng)網(wǎng)絡(luò)示例部服,你也可以嘗試去判斷哪些網(wǎng)絡(luò)架構(gòu)類型效率更高唆姐。人們通常的做法是將別人發(fā)現(xiàn)和發(fā)表在研究報告上的架構(gòu)應(yīng)用于自己的應(yīng)用程序。下周看過更多具體的示例后廓八,相信你會做的更好奉芦。此外,下星期我們也會深入分析卷積神經(jīng)網(wǎng)絡(luò)如此高效的原因剧蹂,同時講解一些新的計算機視覺應(yīng)用程序声功,例如,對象檢測和神經(jīng)風(fēng)格遷移以及如何利用這些算法創(chuàng)造新的藝術(shù)品形式宠叼。期待與您再次相遇先巴!