google CNN 視頻教程
如果你的數(shù)據(jù)具有某種結(jié)構(gòu)鳖擒,但你的網(wǎng)絡(luò)并不需要從頭開始學(xué)習(xí)這個結(jié)構(gòu),他可能表現(xiàn)的更好芋忿,比如字母或者數(shù)字的分類識別炸客,這里,即使戈钢,數(shù)據(jù)是RGB結(jié)構(gòu)痹仙,顏色不是分類的重要因素,可以采用灰度模型進(jìn)行分類殉了。
如果你的任務(wù)只是確定圖片中是否有物體开仰,而不需要指明物體在圖片中的位置,這就是平移不變性,位置不一樣众弓,但是物體是一樣的恩溅,在文本中也是一樣,有些時候不需要關(guān)心你考察的文字在文本的哪個段落谓娃,這叫權(quán)重共享脚乡,當(dāng)知道兩個輸入包含相同的信息時,你可以共享他們的權(quán)重傻粘,并利用這些輸入共同訓(xùn)練權(quán)重每窖,統(tǒng)計不變性,基本不會隨時間空間改變弦悉,對于圖像窒典,可以使用卷積神經(jīng)網(wǎng)絡(luò),對于一般的文本和序列稽莉,則涉及嵌入和循環(huán)神經(jīng)網(wǎng)絡(luò)瀑志。
卷積神經(jīng)網(wǎng)絡(luò)是在空間上共享參數(shù)的一種神經(jīng)網(wǎng)絡(luò),假設(shè)你有一張具有寬度高度和深度的圖片污秆,深度是指圖片的RGB三色通道劈猪,現(xiàn)在拿出圖片的一小塊(patch),運行一個具有K個輸出的小神經(jīng)網(wǎng)絡(luò),在不改變權(quán)重的情況下良拼,把這個小神經(jīng)網(wǎng)絡(luò)滑過整個圖片战得,這樣他的深度寬度長度都與輸入不同,得到K個顏色通道庸推,這種操作就叫卷積常侦,如果patch的大小與整個圖片一樣,那他和普通的神經(jīng)網(wǎng)絡(luò)沒有區(qū)別贬媒,正因為有了較小的patch聋亡,并且共享權(quán)重,卷積網(wǎng)絡(luò)則是一個深度網(wǎng)絡(luò)际乘,總的想法是他們形成金字塔形狀坡倔,底部是一個大而淺的圖片,并有3 個顏色通道脖含,通過卷積操作不斷擠壓空間維度罪塔,同事不斷增加深度,在頂端养葵,可以放一個分類器垢袱,所有空間被壓縮成一個表示。patch又是也叫作核(kernel),另一個重要概念是stride(步幅)港柜,它是移動過濾器時平移像素的數(shù)量请契,步幅為1時咳榜,輸出尺寸與輸入大體相同,步幅為2時尺寸為一半爽锥,大體是因為取決于在圖像邊界怎么做涌韩,如果從不超過邊界,叫有效填充(valid padding)氯夷,如果超過邊界并有0填充臣樱,就回到與輸入相同大小的輸出圖,叫相同填充(same padding)腮考。
如果使用相同填充且步幅為1雇毫,則輸出高度與寬度與輸入相同,我們想輸入圖像添加0只為了讓尺寸相同踩蔚,如果是有效填充步幅為1棚放,則不會存在填充,如果你不適用填充且要讓你的小過濾器與輸入圖像匹配馅闽,則需要在圖片的一半溢出一列和一行飘蚯,因此寬度長度減2,如果步幅為2福也,則減一半局骤。
Padding | Stride | Width | Height | Depth |
---|---|---|---|---|
Same | 1 | 28 | 28 | 8 |
Valid | 1 | 26 | 26 | 8 |
Valid | 2 | 13 | 13 | 8 |
就是這樣,你可以構(gòu)建一個簡單的卷積網(wǎng)絡(luò)暴凑,你不必自己實現(xiàn)把卷積疊加起來峦甩,然后嘗試使用降維的方法,一層一層的增加網(wǎng)絡(luò)深度现喳,一旦你得到一個既深又窄的表示穴店,把所有這些連接到基層常規(guī)的全連接層(fully connected layer),你就可以訓(xùn)練你的分類器了,你可能好奇訓(xùn)練和鏈?zhǔn)椒▌t是怎樣拿穴,特別是當(dāng)想這樣使用共享權(quán)重時,其實啥也沒發(fā)生忧风,就和公式一樣默色,你只是將圖片中所有位置的微分疊加了起來。注意狮腿,全連接層是一個標(biāo)準(zhǔn)的非卷積層腿宰,將所有輸入連接到輸出的神經(jīng)元上,也叫密集層缘厢。
池化(poling)能更好的降低金字塔中特征圖的空間范圍吃度,目前為止,我們已經(jīng)使用調(diào)整的步幅來平移濾波器贴硫,每次移動幾個像素從而降低特征圖的尺寸椿每,他移除了很多信息伊者,如果我們不采用每兩個卷積跳過一個,而依然執(zhí)行非常小的步幅间护,比如說1亦渗,但是我們通過某種方法把向鄰近的所有卷積結(jié)合在一起,這就叫池化汁尺,最常見的是max pooling法精,在特征圖的每一個點,查看它周圍很小范圍的點痴突,計算附近所有點的最大值搂蜓,使用最大池化有很多優(yōu)點,首先辽装,他不會增加參數(shù)數(shù)量帮碰,所有不用擔(dān)心過擬合,其次如迟,他通常會提高模型的準(zhǔn)確性收毫,然而,由于在非常低的步幅下進(jìn)行卷積殷勘,模型必然需要更多的計算量此再,且有更多的超參數(shù)需要調(diào)整,比如池區(qū)尺寸和池化步幅玲销,他們不必完全一樣输拇,一種典型的卷積神經(jīng)網(wǎng)絡(luò)為幾層卷積和最大池化交替,然后在最末端連接幾層全連接層贤斜。另一種形式是平均池化策吠,相比于采用最大值,采用了周圍像素窗口的平均值瘩绒,像是給輸入圖片提供了一個低分辨率圖片猴抹。
1*1 convolutions.他關(guān)注的不是圖像,而僅僅是像素锁荔,傳統(tǒng)的卷積基本上是運行在一小塊圖像上的小分類器蟀给,但僅僅是線性分類器,但如果加上了1*1卷積阳堕,運行在一塊圖像上的神經(jīng)網(wǎng)絡(luò)代替了線性分類器跋理,在軍及分布中三步一些1*1卷積是一種使模型變得更深的低時高效的方法,并且會有更多參數(shù)恬总,但并未完全改變神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)前普。
Inception module。它的原理是在你的卷積網(wǎng)絡(luò)的每一層壹堰,你可以選擇池化運算拭卿,卷積運算骡湖,然后你需要決定使用1*1、3*3還是5*5大小的卷積记劈,所有這些實際上對你的網(wǎng)絡(luò)的建模能力都是有益的勺鸦,所以何必選呢,把他們都選上吧目木,inception模型就是這樣的换途,他不是一個單一的卷積,而是平均池化后跟1*1刽射,然后是1*1卷積军拟,然后1*1后跟3*3,然后1*1后跟5*5誓禁,然后在頂部懈息,你只需要鏈接每個的輸出即可,看起來很復(fù)雜摹恰,但有趣的是辫继,你可以選擇這些參數(shù),是模型的參數(shù)總數(shù)要小俗慈,而且比簡單的卷積網(wǎng)絡(luò)要好姑宽。