0
已經(jīng)很久沒有更新內(nèi)容了,今天抽空來給大家分享一些關(guān)于計(jì)算機(jī)視覺領(lǐng)域的一個重點(diǎn),那就是 “深度學(xué)習(xí)”,接下來就來詳細(xì)聊聊深度學(xué)習(xí)(為什么要深度學(xué)習(xí)特征???),然后來說說深度網(wǎng)絡(luò)的搭建,最后讓我們自己用手 DIY 屬于自己的網(wǎng)絡(luò),現(xiàn)在就開始 ing......
介紹
一說起 “深度學(xué)習(xí)”,大家有想過為什么要去搭建復(fù)雜網(wǎng)絡(luò),去學(xué)習(xí)更高級的特征呢?其實(shí)很簡單,因?yàn)橼厔菔浅惸X那個大方向,現(xiàn)在類腦工作已經(jīng)得到很多研究員的關(guān)注。
類腦計(jì)算實(shí)際上存在兩個技術(shù)層面:第 1 層面是 “走出諾依曼框架”,主要屬于人工神經(jīng)網(wǎng)絡(luò)的大范疇;第 2 層面是 “基于神經(jīng)科學(xué)的計(jì)算機(jī)算法”,試圖超越人工神經(jīng)網(wǎng)絡(luò)框架和擺脫權(quán)值計(jì)算模型,實(shí)現(xiàn)對生物腦的高逼真性模擬。所以歐盟都已經(jīng)聯(lián)合開始研究人腦,都成立一個叫 “人類腦計(jì)劃”,美國也開始關(guān)注類腦。所以類腦計(jì)算這個方向是前途無量的。
第 1 類
主要有歐盟的 “人類腦計(jì)劃” 和美國的 “BRAINs” 計(jì)劃,雖然技術(shù)路徑不同,但都是從生物腦的微觀層面的實(shí)驗(yàn)數(shù)據(jù)和知識入手,通過逐漸整合,向上尋找中觀和宏觀層面上的數(shù)量關(guān)系規(guī)律,最終建立起整體的腦理論模型。
該類方法的特點(diǎn)是 “自下而上”,一場大規(guī)模的微觀海量的數(shù)據(jù)和碎片化的實(shí)驗(yàn)知識的 “拼圖工程”。首先發(fā)展高尖端技術(shù)工具,以實(shí)現(xiàn)對腦的微觀的結(jié)構(gòu)和功能的全面測量和記錄;然后建立起全腦微觀數(shù)據(jù)庫;在此基礎(chǔ)上,逐漸向大規(guī)模的腦計(jì)算模型上發(fā)展,并試圖形成對腦活動、腦病變和腦智能的機(jī)制性解讀的整體理論;最后形成比較成熟的類腦計(jì)算技術(shù)和類腦人工智能。這種研究屬于長周期的大科學(xué)或大工程,需要動員大量人力物力和財力。
第 2 類
研究方法的特點(diǎn)是 “自上而下”。直接將研究重心放在一個 “好的” 腦理論的建造上,然后向下導(dǎo)出神經(jīng)元模型和神經(jīng)元群體網(wǎng)絡(luò)模型;之后測試和檢驗(yàn)?zāi)P团c微觀神經(jīng)知識和數(shù)據(jù)之間的契合度。這種研究的關(guān)鍵在于怎樣找到正確的理論入手點(diǎn),這一步不是單純的建模方法問題,也不是一般的學(xué)科性理論問題,而是若干個重要學(xué)科的理論進(jìn)程中的匯合點(diǎn)上的再綜合,屬于科學(xué)大周期性的結(jié)晶過程。這種研究屬于長周期和 “形而上” 的小科學(xué)。目前,采用第 2 類方法的主要有美國 Numenta 公司和中國的神經(jīng)深構(gòu)造運(yùn)算與腦計(jì) 算 機(jī) 實(shí) 驗(yàn) 室(Neural Deep Structure Computing & MindComputer Lab,Mindputer Lab),兩個實(shí)驗(yàn)室技術(shù)路徑雖異,但總體方法都是先從全腦角度來建立理論框架,然后將理論逐漸地向下細(xì)化,導(dǎo)出中觀和微觀的計(jì)算模型,之后再檢驗(yàn)與微觀層面的實(shí)驗(yàn)數(shù)據(jù)和知識的互恰性。
各有利弊
兩類研究方法各有利弊,第 1 類方法就像在萬米懸崖峭壁貼身攀巖,向上的每一步很費(fèi)時且充滿未知。因?yàn)?,從海量的?shù)據(jù)中去試圖進(jìn)行全腦網(wǎng)絡(luò)的微觀拼圖,是一個大隨機(jī)性的事件,即使有超級計(jì)算機(jī)或其他先進(jìn)微觀技術(shù)的幫助,歐美兩個腦項(xiàng)目的 10 年計(jì)劃時間是遠(yuǎn)遠(yuǎn)不夠的。而第 2 類方法更像是空中傘降,難點(diǎn)在降落傘上,只要降落傘做得好,則向下定點(diǎn)降落的時間和復(fù)雜度比攀巖小的多??茖W(xué)史已經(jīng)證明,一個好的理論是大大削減科學(xué)探險隨機(jī)性風(fēng)險的銳利刀具。
有點(diǎn)說偏了,今天我們主要來說說深度學(xué)習(xí)這些事!
為什么要深度學(xué)習(xí)?
先來一個簡單的例子:
這都是底層特征的可視化,說明底層特征也只能學(xué)習(xí)一些基礎(chǔ)的紋理等特征,但是如果達(dá)到人腦的視覺感知,就必須要學(xué)習(xí)更高級的高層語義特征。所以才會出現(xiàn)更深更復(fù)雜的網(wǎng)絡(luò),可以理解為挖掘更高層的語義特征來進(jìn)行目標(biāo)的表示。如下:
什么才是深度學(xué)習(xí)?
一般會有:1)組合模型;2)端到端的學(xué)習(xí)(End-to-End)。
學(xué)習(xí)
從具體 ------------------------> 抽象
1)組合模型
猶如上面的流程圖,充分說明了模型的組合學(xué)習(xí)。
2)End-to-End
下面兩個鏈接是前期推送的內(nèi)容,充分表明了網(wǎng)絡(luò)的端到端學(xué)習(xí)過程。
神經(jīng)網(wǎng)絡(luò)介紹—利用反向傳播算法的模式學(xué)習(xí)
接下來參考了 “slide credit Marc’aurelio Ranzato,CVPR ‘14 tutorial”
下面這個鏈接也詳細(xì)介紹了 CNN 的演變與改進(jìn):
框架
深度學(xué)習(xí)發(fā)展迅速,隨之不同的框架也大量涌現(xiàn)出來。
Torch7
NYU
scientific computing framework in Lua
supported by Facebook
Theano/Pylearn2
U. Montreal
scientific computing framework in Python
symbolic computation and automatic differentiation
Cuda-Convnet2
Alex Krizhevsky
Very fast on state-of-the-art GPUs with Multi-GPU parallelism
C++ / CUDA library
TF(大家很熟悉了,不詳細(xì)介紹)
等等。
因?yàn)槲胰腴T到現(xiàn)在一直用 Caffe,所以今天節(jié)詳細(xì)說說這個框架。
原因(參考):
Expression: models + optimizations are plaintext schemas, not code.
Speed: for state-of-the-art models and massive data.
Modularity: to extend to new tasks and settings.
Openness: common code and reference models for reproducibility.
Community: joint discussion and development through BSD-2 licensing.
Pure C++ / CUDA architecture for deep learning
Command line, Python, MATLAB interfaces
Fast, well-tested code
Tools, reference models, demos, and recipes
Seamless switch between CPU and GPU
網(wǎng)絡(luò)(Net)
一個網(wǎng)絡(luò)是由一組不同層連接而成:
name: "dummy-net"
layers{name: "data" …}
layers {name: "conv" …}
layers {name: "pool" …}
… more layers …
layers {name: "loss" …}
LeNet:
層(Layer)
name: "conv1"
type: CONVOLUTION
bottom: "data"
top: "conv1"
convolution_param {
num_output: 20
kernel_size: 5
stride: 1
weight_filler {
type: "xavier"
}
}
Protobuf
網(wǎng)絡(luò)(Net)和層(Layer)就是通過 Protobuf 來定義的。
Blob
Solving: 訓(xùn)練一個網(wǎng)絡(luò)
train_net: "lenet_train.prototxt"
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
max_iter: 10000
snapshot_prefix: "lenet_snapshot"
如果你需要 GPU 訓(xùn)練:
caffe train -solver lenet_solver.prototxt -gpu 0
最后舉一些流行的例子,有興趣的朋友可以自己動手去 DIY。
目標(biāo)檢測
R-CNN: Regions with Convolutional Neural Networks
http://nbviewer.ipython.org/github/BVLC/caffe/blob/master/examples/detection.ipynb
Full R-CNN scripts available at https://github.com/rbgirshick/rcnn
視覺風(fēng)格識別
Karayev et al. Recognizing Image Style. BMVC14. Caffe fine-tuning example.
Demo online at http://demo.vislab.berkeleyvision.org/
場景識別
微調(diào)(Fine-tuning)
輸入:不同的源文件;
最后一層:不同的分類器。
今天就到這里,希望可以給需要的朋友一帶來一些幫助,謝謝!
雷鋒網(wǎng)按:本文原作者Edison_G,本文原載于其微信公眾號計(jì)算機(jī)視覺戰(zhàn)隊(duì)(ID: ComputerVisionGzq)。計(jì)算機(jī)視覺戰(zhàn)隊(duì)成立于2017年,主要由來自于大學(xué)的研究生組成的團(tuán)隊(duì),目前已得到較大關(guān)注與支持,該平臺從事機(jī)器學(xué)習(xí)與深度學(xué)習(xí)領(lǐng)域,主要在人臉檢測與識別,多目標(biāo)檢測研究方向。每日通過計(jì)算機(jī)視覺平臺分享最近的成果,分析現(xiàn)在流行的模型、算法與思路。
深度學(xué)習(xí)之神經(jīng)網(wǎng)絡(luò)特訓(xùn)班
20年清華大學(xué)神經(jīng)網(wǎng)絡(luò)授課導(dǎo)師鄧志東教授,帶你系統(tǒng)學(xué)習(xí)人工智能之神經(jīng)網(wǎng)絡(luò)理論及應(yīng)用!
課程鏈接:http://www.mooc.ai/course/65
加入AI慕課學(xué)院人工智能學(xué)習(xí)交流QQ群:624413030,與AI同行一起交流成長
雷峰網(wǎng)版權(quán)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。