神經(jīng)網(wǎng)絡(luò)最早是由心理學(xué)家和神經(jīng)學(xué)家提出的,旨在尋求開發(fā)和測試神經(jīng)的計算模擬。
粗略地說挪捕,神經(jīng)網(wǎng)絡(luò)是一組連接的輸入/輸出單元甥桂,其中每個連接都與一個權(quán)相關(guān)聯(lián)。在學(xué)習(xí)階段,通過調(diào)整權(quán)值,使得神經(jīng)網(wǎng)絡(luò)的預(yù)測準(zhǔn)確性逐步提高。由于單元之間的連接片排,神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)又稱連接者學(xué)習(xí)。
神經(jīng)網(wǎng)絡(luò)是以模擬人腦神經(jīng)元的數(shù)學(xué)模型為基礎(chǔ)而建立的速侈,它由一系列神經(jīng)元組成率寡,單元之間彼此連接。從信息處理角度看倚搬,神經(jīng)元可以看作是一個多輸入單輸出的信息處理單元冶共,根據(jù)神經(jīng)元的特性和功能,可以把神經(jīng)元抽象成一個簡單的數(shù)學(xué)模型潭枣。
神經(jīng)網(wǎng)絡(luò)有三個要素:拓撲結(jié)構(gòu)比默、連接方式、學(xué)習(xí)規(guī)則
神經(jīng)網(wǎng)絡(luò)的拓撲結(jié)構(gòu):神經(jīng)網(wǎng)絡(luò)的單元通常按照層次排列盆犁,根據(jù)網(wǎng)絡(luò)的層次數(shù)命咐,可以將神經(jīng)網(wǎng)絡(luò)分為單層神經(jīng)網(wǎng)絡(luò)、兩層神經(jīng)網(wǎng)絡(luò)谐岁、三層神經(jīng)網(wǎng)絡(luò)等醋奠。結(jié)構(gòu)簡單的神經(jīng)網(wǎng)絡(luò)榛臼,在學(xué)習(xí)時收斂的速度快,但準(zhǔn)確度低窜司。
神經(jīng)網(wǎng)絡(luò)的層數(shù)和每層的單元數(shù)由問題的復(fù)雜程度而定沛善。問題越復(fù)雜,神經(jīng)網(wǎng)絡(luò)的層數(shù)就越多塞祈。例如金刁,兩層神經(jīng)網(wǎng)絡(luò)常用來解決線性問題,而多層網(wǎng)絡(luò)就可以解決多元非線性問題
神經(jīng)網(wǎng)絡(luò)的連接:包括層次之間的連接和每一層內(nèi)部的連接议薪,連接的強度用權(quán)來表示尤蛮。
根據(jù)層次之間的連接方式,分為:
1)前饋式網(wǎng)絡(luò):連接是單向的斯议,上層單元的輸出是下層單元的輸入产捞,如反向傳播網(wǎng)絡(luò),Kohonen網(wǎng)絡(luò)
2)反饋式網(wǎng)絡(luò):除了單項的連接外哼御,還把最后一層單元的輸出作為第一層單元的輸入坯临,如Hopfield網(wǎng)絡(luò)
根據(jù)連接的范圍,分為:
1)全連接神經(jīng)網(wǎng)絡(luò):每個單元和相鄰層上的所有單元相連
2)局部連接網(wǎng)絡(luò):每個單元只和相鄰層上的部分單元相連
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)
根據(jù)學(xué)習(xí)方法分:
感知器:有監(jiān)督的學(xué)習(xí)方法恋昼,訓(xùn)練樣本的類別是已知的看靠,并在學(xué)習(xí)的過程中指導(dǎo)模型的訓(xùn)練
認知器:無監(jiān)督的學(xué)習(xí)方法,訓(xùn)練樣本類別未知焰雕,各單元通過競爭學(xué)習(xí)衷笋。
根據(jù)學(xué)習(xí)時間分:
離線網(wǎng)絡(luò):學(xué)習(xí)過程和使用過程是獨立的
在線網(wǎng)絡(luò):學(xué)習(xí)過程和使用過程是同時進行的
根據(jù)學(xué)習(xí)規(guī)則分:
相關(guān)學(xué)習(xí)網(wǎng)絡(luò):根據(jù)連接間的激活水平改變權(quán)系數(shù)
糾錯學(xué)習(xí)網(wǎng)絡(luò):根據(jù)輸出單元的外部反饋改變權(quán)系數(shù)
自組織學(xué)習(xí)網(wǎng)絡(luò):對輸入進行自適應(yīng)地學(xué)習(xí)
摘自《數(shù)學(xué)之美》對人工神經(jīng)網(wǎng)絡(luò)的通俗理解:
神經(jīng)網(wǎng)絡(luò)種類很多芳杏,常用的有如下四種:
1)Hopfield網(wǎng)絡(luò)矩屁,典型的反饋網(wǎng)絡(luò),結(jié)構(gòu)單層爵赵,有相同的單元組成
2)反向傳播網(wǎng)絡(luò)吝秕,前饋網(wǎng)絡(luò),結(jié)構(gòu)多層空幻,采用最小均方差的糾錯學(xué)習(xí)規(guī)則烁峭,常用于語言識別和分類等問題
3)Kohonen網(wǎng)絡(luò):典型的自組織網(wǎng)絡(luò),由輸入層和輸出層構(gòu)成秕铛,全連接
4)ART網(wǎng)絡(luò):自組織網(wǎng)絡(luò)
深度神經(jīng)網(wǎng)絡(luò):
Convolutional Neural Networks(CNN)卷積神經(jīng)網(wǎng)絡(luò)
Recurrent neural Network(RNN)循環(huán)神經(jīng)網(wǎng)絡(luò)
Deep Belief Networks(DBN)深度信念網(wǎng)絡(luò)
深度學(xué)習(xí)是指多層神經(jīng)網(wǎng)絡(luò)上運用各種機器學(xué)習(xí)算法解決圖像约郁,文本等各種問題的算法集合。深度學(xué)習(xí)從大類上可以歸入神經(jīng)網(wǎng)絡(luò)但两,不過在具體實現(xiàn)上有許多變化鬓梅。
深度學(xué)習(xí)的核心是特征學(xué)習(xí),旨在通過分層網(wǎng)絡(luò)獲取分層次的特征信息谨湘,從而解決以往需要人工設(shè)計特征的重要難題绽快。
Machine Learning vs. Deep Learning?
神經(jīng)網(wǎng)絡(luò)(主要是感知器)經(jīng)常用于分類
神經(jīng)網(wǎng)絡(luò)的分類知識體現(xiàn)在網(wǎng)絡(luò)連接上芥丧,被隱式地存儲在連接的權(quán)值中。
神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)就是通過迭代算法坊罢,對權(quán)值逐步修改的優(yōu)化過程续担,學(xué)習(xí)的目標(biāo)就是通過改變權(quán)值使訓(xùn)練集的樣本都能被正確分類。
神經(jīng)網(wǎng)絡(luò)特別適用于下列情況的分類問題:
1) 數(shù)據(jù)量比較小活孩,缺少足夠的樣本建立模型
2) 數(shù)據(jù)的結(jié)構(gòu)難以用傳統(tǒng)的統(tǒng)計方法來描述
3) 分類模型難以表示為傳統(tǒng)的統(tǒng)計模型
缺點:
1)?需要很長的訓(xùn)練時間物遇,因而對于有足夠長訓(xùn)練時間的應(yīng)用更合適。
2)?需要大量的參數(shù)憾儒,這些通常主要靠經(jīng)驗確定挎挖,如網(wǎng)絡(luò)拓撲或“結(jié)構(gòu)”。
3)?可解釋性差航夺。該特點使得神經(jīng)網(wǎng)絡(luò)在數(shù)據(jù)挖掘的初期并不看好蕉朵。
優(yōu)點:
1)分類的準(zhǔn)確度高
2)并行分布處理能力強
3)分布存儲及學(xué)習(xí)能力高
4)對噪音數(shù)據(jù)有很強的魯棒性和容錯能力
最流行的基于神經(jīng)網(wǎng)絡(luò)的分類算法是80年代提出的后向傳播算法。后向傳播算法在多路前饋神經(jīng)網(wǎng)絡(luò)上學(xué)習(xí)阳掐。?
定義網(wǎng)絡(luò)拓撲
在開始訓(xùn)練之前始衅,用戶必須說明輸入層的單元數(shù)、隱藏層數(shù)(如果多于一層)缭保、每一隱藏層的單元數(shù)和輸出層的單元數(shù)汛闸,以確定網(wǎng)絡(luò)拓撲。
對訓(xùn)練樣本中每個屬性的值進行規(guī)格化將有助于加快學(xué)習(xí)過程艺骂。通常诸老,對輸入值規(guī)格化,使得它們落入0.0和1.0之間钳恕。
離散值屬性可以重新編碼别伏,使得每個域值一個輸入單元。例如忧额,如果屬性A的定義域為(a0,a1,a2)厘肮,則可以分配三個輸入單元表示A。即睦番,我們可以用I0 ,I1 ,I2作為輸入單元类茂。每個單元初始化為0。如果A = a0托嚣,則I0置為1巩检;如果A = a1,I1置1示启;如此下去兢哭。
一個輸出單元可以用來表示兩個類(值1代表一個類,而值0代表另一個)丑搔。如果多于兩個類厦瓢,則每個類使用一個輸出單元提揍。
隱藏層單元數(shù)設(shè)多少個“最好” ,沒有明確的規(guī)則煮仇。
網(wǎng)絡(luò)設(shè)計是一個實驗過程劳跃,并可能影響準(zhǔn)確性。權(quán)的初值也可能影響準(zhǔn)確性浙垫。如果某個經(jīng)過訓(xùn)練的網(wǎng)絡(luò)的準(zhǔn)確率太低刨仑,則通常需要采用不同的網(wǎng)絡(luò)拓撲或使用不同的初始權(quán)值,重復(fù)進行訓(xùn)練夹姥。
后向傳播算法學(xué)習(xí)過程:
迭代地處理一組訓(xùn)練樣本杉武,將每個樣本的網(wǎng)絡(luò)預(yù)測與實際的類標(biāo)號比較。
每次迭代后辙售,修改權(quán)值轻抱,使得網(wǎng)絡(luò)預(yù)測和實際類之間的均方差最小。
這種修改“后向”進行旦部。即祈搜,由輸出層,經(jīng)由每個隱藏層士八,到第一個隱藏層(因此稱作后向傳播)容燕。盡管不能保證,一般地婚度,權(quán)將最終收斂蘸秘,學(xué)習(xí)過程停止。
算法終止條件:訓(xùn)練集中被正確分類的樣本達到一定的比例蝗茁,或者權(quán)系數(shù)趨近穩(wěn)定醋虏。
后向傳播算法分為如下幾步:
1) 初始化權(quán)
網(wǎng)絡(luò)的權(quán)通常被初始化為很小的隨機數(shù)(例如,范圍從-1.0到1.0评甜,或從-0.5到0.5)灰粮。
每個單元都設(shè)有一個偏置(bias),偏置也被初始化為小隨機數(shù)忍坷。
2) 向前傳播輸入
對于每一個樣本X,重復(fù)下面兩步:
向前傳播輸入熔脂,向后傳播誤差
計算各層每個單元的輸入和輸出佩研。輸入層:輸出=輸入=樣本X的屬性;即霞揉,對于單元j旬薯,Oj = Ij = Xj。隱藏層和輸出層:輸入=前一層的輸出的線性組合,即适秩,對于單元j绊序, Ij =wij Oi + θj硕舆,輸出=
3) 向后傳播誤差
計算各層每個單元的誤差。
輸出層單元j骤公,誤差:
Oj是單元j的實際輸出抚官,而Tj是j的真正輸出。
隱藏層單元j阶捆,誤差:
wjk是由j到下一層中單元k的連接的權(quán)凌节,Errk是單元k的誤差
更新權(quán)和偏差,以反映傳播的誤差洒试。
權(quán)由下式更新:
?其中倍奢,△wij是權(quán)wij的改變。l是學(xué)習(xí)率垒棋,通常取0和1之間的值卒煞。
?偏置由下式更新:
? 其中,△θj是偏置θj的改變叼架。
Example
人類視覺原理:
深度學(xué)習(xí)的許多研究成果跷坝,離不開對大腦認知原理的研究,尤其是視覺原理的研究碉碉。1981 年的諾貝爾醫(yī)學(xué)獎柴钻,頒發(fā)給了 David Hubel(出生于加拿大的美國神經(jīng)生物學(xué)家) 和Torsten Wiesel,以及Roger Sperry垢粮。前兩位的主要貢獻贴届,是“發(fā)現(xiàn)了視覺系統(tǒng)的信息處理”,可視皮層是分級的蜡吧。
人類的視覺原理如下:從原始信號攝入開始(瞳孔攝入像素Pixels)毫蚓,接著做初步處理(大腦皮層某些細胞發(fā)現(xiàn)邊緣和方向),然后抽象(大腦判定昔善,眼前的物體的形狀元潘,是圓形的),然后進一步抽象(大腦進一步判定該物體是只氣球)君仆。
對于不同的物體翩概,人類視覺也是通過這樣逐層分級,來進行認知的:
在最底層特征基本上是類似的返咱,就是各種邊緣钥庇,越往上,越能提取出此類物體的一些特征(輪子咖摹、眼睛评姨、軀干等),到最上層萤晴,不同的高級特征最終組合成相應(yīng)的圖像吐句,從而能夠讓人類準(zhǔn)確的區(qū)分不同的物體胁后。
可以很自然的想到:可以不可以模仿人類大腦的這個特點,構(gòu)造多層的神經(jīng)網(wǎng)絡(luò)嗦枢,較低層的識別初級的圖像特征攀芯,若干底層特征組成更上一層特征,最終通過多個層級的組合净宵,最終在頂層做出分類呢敲才?答案是肯定的,這也是許多深度學(xué)習(xí)算法(包括CNN)的靈感來源择葡。
卷積神經(jīng)網(wǎng)絡(luò)是一種多層神經(jīng)網(wǎng)絡(luò)紧武,擅長處理圖像特別是大圖像的相關(guān)機器學(xué)習(xí)問題。卷積網(wǎng)絡(luò)通過一系列方法敏储,成功將數(shù)據(jù)量龐大的圖像識別問題不斷降維阻星,最終使其能夠被訓(xùn)練。
CNN最早由Yann LeCun提出并應(yīng)用在手寫字體識別上已添。LeCun提出的網(wǎng)絡(luò)稱為LeNet妥箕,其網(wǎng)絡(luò)結(jié)構(gòu)如下:
這是一個最典型的卷積網(wǎng)絡(luò),由卷積層更舞、池化層畦幢、全連接層組成。其中卷積層與池化層配合缆蝉,組成多個卷積組宇葱,逐層提取特征,最終通過若干個全連接層完成分類刊头。
CNN通過卷積來模擬特征區(qū)分黍瞧,并且通過卷積的權(quán)值共享及池化,來降低網(wǎng)絡(luò)參數(shù)的數(shù)量級原杂,最后通過傳統(tǒng)神經(jīng)網(wǎng)絡(luò)完成分類等任務(wù)印颤。
降低參數(shù)量級:如果使用傳統(tǒng)神經(jīng)網(wǎng)絡(luò)方式,對一張圖片進行分類穿肄,那么年局,把圖片的每個像素都連接到隱藏層節(jié)點上,對于一張1000x1000像素的圖片被碗,如果有1M隱藏層單元某宪,一共有10^12個參數(shù),這顯然是不能接受的锐朴。
但是在CNN里,可以大大減少參數(shù)個數(shù)蔼囊,基于以下兩個假設(shè):
1)最底層特征都是局部性的焚志,也就是說衣迷,用10x10這樣大小的過濾器就能表示邊緣等底層特征
2)圖像上不同小片段,以及不同圖像上的小片段的特征是類似的酱酬,也就是說壶谒,能用同樣的一組分類器來描述各種各樣不同的圖像
基于以上兩個假設(shè),就能把第一層網(wǎng)絡(luò)結(jié)構(gòu)簡化
用100個10x10的小過濾器膳沽,就能夠描述整幅圖片上的底層特征汗菜。
卷積運算的定義如下圖所示:
如上圖所示,一個5x5的圖像挑社,用一個3x3的卷積核:
?? 1 0 1
?? 0 1 0
?? 1 0 1
來對圖像進行卷積操作(可以理解為有一個滑動窗口陨界,把卷積核與對應(yīng)的圖像像素做乘積然后求和),得到了3x3的卷積結(jié)果痛阻。
這個過程可以理解為使用一個過濾器(卷積核)來過濾圖像的各個小區(qū)域菌瘪,從而得到這些小區(qū)域的特征值。在實際訓(xùn)練過程中阱当,卷積核的值是在學(xué)習(xí)過程中學(xué)到的俏扩。
在具體應(yīng)用中,往往有多個卷積核弊添,可以認為录淡,每個卷積核代表了一種圖像模式,如果某個圖像塊與此卷積核卷積出的值大油坝,則認為此圖像塊十分接近于此卷積核嫉戚。如果設(shè)計了6個卷積核,可以理解為這個圖像上有6種底層紋理模式免钻,也就是用6種基礎(chǔ)模式就能描繪出一副圖像彼水。以下就是24種不同的卷積核的示例:
池化的過程如下圖所示:
可以看到,原始圖片是20x20的极舔,對其進行采樣凤覆,采樣窗口為10x10,最終將其采樣成為一個2x2大小的特征圖拆魏。
之所以這么做盯桦,是因為即使做完了卷積,圖像仍然很大(因為卷積核比較胁橙小)拥峦,所以為了降低數(shù)據(jù)維度,就進行采樣卖子。
即使減少了許多數(shù)據(jù)略号,特征的統(tǒng)計屬性仍能夠描述圖像,而且由于降低了數(shù)據(jù)維度,有效地避免了過擬合玄柠。
在實際應(yīng)用中突梦,分為最大值采樣(Max-Pooling)與平均值采樣(Mean-Pooling)。
LeNet網(wǎng)絡(luò)結(jié)構(gòu):
注意羽利,上圖中S2與C3的連接方式并不是全連接宫患,而是部分連接。最后这弧,通過全連接層C5娃闲、F6得到10個輸出,對應(yīng)10個數(shù)字的概率匾浪。
卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)類似皇帮,也是參照了反向傳播算法
第一階段,向前傳播階段:
a)從樣本集中取一個樣本(X,Yp)户矢,將X輸入網(wǎng)絡(luò)玲献;
b)計算相應(yīng)的實際輸出Op
第二階段,向后傳播階段
a)計算實際輸出Op與相應(yīng)的理想輸出Yp的差梯浪;
b)按極小化誤差的方法反向傳播調(diào)整權(quán)矩陣捌年。