深度学习之二:特征
關(guān)于特征
??????? 特征是機(jī)器學(xué)習(xí)系統(tǒng)的原材料,對(duì)最終模型的影響是毋庸置疑的。如果數(shù)據(jù)被很好的表達(dá)成了特征,通常線性模型就能達(dá)到滿意的精度。那對(duì)于特征,我們需要考慮什么呢?
4.1、特征表示的粒度
??????? 學(xué)習(xí)算法在一個(gè)什么粒度上的特征表示,才有能發(fā)揮作用?就一個(gè)圖片來(lái)說(shuō),像素級(jí)的特征根本沒(méi)有價(jià)值。例如下面的摩托車,從像素級(jí)別,根本得不到任何信息,其無(wú)法進(jìn)行摩托車和非摩托車的區(qū)分。而如果特征是一個(gè)具有結(jié)構(gòu)性(或者說(shuō)有含義)的時(shí)候,比如是否具有車把手(handle),是否具有車輪(wheel),就很容易把摩托車和非摩托車區(qū)分,學(xué)習(xí)算法才能發(fā)揮作用。
?
?
4.2、初級(jí)(淺層)特征表示
??????? 既然像素級(jí)的特征表示方法沒(méi)有作用,那怎樣的表示才有用呢?
??????? 1995 年前后,Bruno Olshausen和 David Field 兩位學(xué)者任職 Cornell University,他們?cè)噲D同時(shí)用生理學(xué)和計(jì)算機(jī)的手段,雙管齊下,研究視覺(jué)問(wèn)題。
??????? 他們收集了很多黑白風(fēng)景照片,從這些照片中,提取出400個(gè)小碎片,每個(gè)照片碎片的尺寸均為 16x16 像素,不妨把這400個(gè)碎片標(biāo)記為 S[i], i = 0,.. 399。接下來(lái),再?gòu)倪@些黑白風(fēng)景照片中,隨機(jī)提取另一個(gè)碎片,尺寸也是 16x16 像素,不妨把這個(gè)碎片標(biāo)記為 T。
????????他們提出的問(wèn)題是,如何從這400個(gè)碎片中,選取一組碎片,S[k], 通過(guò)疊加的辦法,合成出一個(gè)新的碎片,而這個(gè)新的碎片,應(yīng)當(dāng)與隨機(jī)選擇的目標(biāo)碎片 T,盡可能相似,同時(shí),S[k] 的數(shù)量盡可能少。用數(shù)學(xué)的語(yǔ)言來(lái)描述,就是:
??????? Sum_k (a[k] * S[k]) --> T,???? 其中 a[k] 是在疊加碎片 S[k] 時(shí)的權(quán)重系數(shù)。
??????? 為解決這個(gè)問(wèn)題,Bruno Olshausen和 David Field 發(fā)明了一個(gè)算法,稀疏編碼(Sparse Coding)。
??????? 稀疏編碼是一個(gè)重復(fù)迭代的過(guò)程,每次迭代分兩步:
1)選擇一組 S[k],然后調(diào)整 a[k],使得Sum_k (a[k] * S[k]) 最接近 T。
2)固定住 a[k],在 400 個(gè)碎片中,選擇其它更合適的碎片S’[k],替代原先的 S[k],使得Sum_k (a[k] * S’[k]) 最接近 T。
????????經(jīng)過(guò)幾次迭代后,最佳的 S[k] 組合,被遴選出來(lái)了。令人驚奇的是,被選中的 S[k],基本上都是照片上不同物體的邊緣線,這些線段形狀相似,區(qū)別在于方向。
??????? Bruno Olshausen和 David Field 的算法結(jié)果,與 David Hubel 和Torsten Wiesel 的生理發(fā)現(xiàn),不謀而合!
??????? 也就是說(shuō),復(fù)雜圖形,往往由一些基本結(jié)構(gòu)組成。比如下圖:一個(gè)圖可以通過(guò)用64種正交的edges(可以理解成正交的基本結(jié)構(gòu))來(lái)線性表示。比如樣例的x可以用1-64個(gè)edges中的三個(gè)按照0.8,0.3,0.5的權(quán)重調(diào)和而成。而其他基本edge沒(méi)有貢獻(xiàn),因此均為0 。
??????? 另外,大牛們還發(fā)現(xiàn),不僅圖像存在這個(gè)規(guī)律,聲音也存在。他們從未標(biāo)注的聲音中發(fā)現(xiàn)了20種基本的聲音結(jié)構(gòu),其余的聲音可以由這20種基本結(jié)構(gòu)合成。
?
?
4.3、結(jié)構(gòu)性特征表示
??????? 小塊的圖形可以由基本edge構(gòu)成,更結(jié)構(gòu)化,更復(fù)雜的,具有概念性的圖形如何表示呢?這就需要更高層次的特征表示,比如V2,V4。因此V1看像素級(jí)是像素級(jí)。V2看V1是像素級(jí),這個(gè)是層次遞進(jìn)的,高層表達(dá)由底層表達(dá)的組合而成。專業(yè)點(diǎn)說(shuō)就是基basis。V1取提出的basis是邊緣,然后V2層是V1層這些basis的組合,這時(shí)候V2區(qū)得到的又是高一層的basis。即上一層的basis組合的結(jié)果,上上層又是上一層的組合basis……(所以有大牛說(shuō)Deep learning就是“搞基”,因?yàn)殡y聽(tīng),所以美其名曰Deep learning或者Unsupervised Feature Learning)
??????? 直觀上說(shuō),就是找到make sense的小patch再將其進(jìn)行combine,就得到了上一層的feature,遞歸地向上learning feature。
??????? 在不同object上做training是,所得的edge basis 是非常相似的,但object parts和models 就會(huì)completely different了(那咱們分辨car或者face是不是容易多了):
??????? 從文本來(lái)說(shuō),一個(gè)doc表示什么意思?我們描述一件事情,用什么來(lái)表示比較合適?用一個(gè)一個(gè)字嘛,我看不是,字就是像素級(jí)別了,起碼應(yīng)該是term,換句話說(shuō)每個(gè)doc都由term構(gòu)成,但這樣表示概念的能力就夠了嘛,可能也不夠,需要再上一步,達(dá)到topic級(jí),有了topic,再到doc就合理。但每個(gè)層次的數(shù)量差距很大,比如doc表示的概念->topic(千-萬(wàn)量級(jí))->term(10萬(wàn)量級(jí))->word(百萬(wàn)量級(jí))。
??????? 一個(gè)人在看一個(gè)doc的時(shí)候,眼睛看到的是word,由這些word在大腦里自動(dòng)切詞形成term,在按照概念組織的方式,先驗(yàn)的學(xué)習(xí),得到topic,然后再進(jìn)行高層次的learning。
?
4.4、需要有多少個(gè)特征?
?????? 我們知道需要層次的特征構(gòu)建,由淺入深,但每一層該有多少個(gè)特征呢?
任何一種方法,特征越多,給出的參考信息就越多,準(zhǔn)確性會(huì)得到提升。但特征多意味著計(jì)算復(fù)雜,探索的空間大,可以用來(lái)訓(xùn)練的數(shù)據(jù)在每個(gè)特征上就會(huì)稀疏,都會(huì)帶來(lái)各種問(wèn)題,并不一定特征越多越好。
?
??????
?????? 好了,到了這一步,終于可以聊到Deep learning了。上面我們聊到為什么會(huì)有Deep learning(讓機(jī)器自動(dòng)學(xué)習(xí)良好的特征,而免去人工選取過(guò)程。還有參考人的分層視覺(jué)處理系統(tǒng)),我們得到一個(gè)結(jié)論就是Deep learning需要多層來(lái)獲得更抽象的特征表達(dá)。那么多少層才合適呢?用什么架構(gòu)來(lái)建模呢?怎么進(jìn)行非監(jiān)督訓(xùn)練呢?
總結(jié)
- 上一篇: 深度学习之一:概述
- 下一篇: 深度学习之三:深度学习基本思想