-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
神經(jīng)網(wǎng)絡(luò)計(jì)算分為(神經(jīng)網(wǎng)絡(luò)計(jì)算分為哪幾類)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于神經(jīng)網(wǎng)絡(luò)計(jì)算分為的問題,以下是小編對(duì)此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、第五章 神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò) :神經(jīng)網(wǎng)絡(luò)是由具有適應(yīng)性的簡單單元組成的廣泛并行互連的網(wǎng)絡(luò),它的組織能夠模擬生物神經(jīng)系統(tǒng)對(duì)真實(shí)世界物體所作出的交互反應(yīng)。
神經(jīng)網(wǎng)絡(luò)中最基本的成分便是 神經(jīng)元模型 。
M-P神經(jīng)元模型:
感知機(jī)由兩層神經(jīng)元組成,分別為輸入層、輸出層。
以下是具體過程:
多層神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu)如圖:
如上圖可知,多層網(wǎng)絡(luò)由輸入層、隱含層和輸出層組成,頂層是輸出層,底層是輸入層,中間的便是隱含層。隱含層與輸出層都具有功能神經(jīng)元。
多層前饋神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)需要滿足:
1、每層神經(jīng)元必須與下一層完全互連
2、神經(jīng)元之間不存在同層連接
3、神經(jīng)元不可跨層連接
只需包含一個(gè)足夠多神經(jīng)元的隱層,就能以任意精度逼近任意復(fù)雜度的連續(xù)函數(shù)
BP神經(jīng)網(wǎng)絡(luò)由于學(xué)習(xí)能力太強(qiáng)大比較榮譽(yù)造成過擬合問題,故有兩種策略來減緩過擬合的問題:
1、早停:將數(shù)據(jù)分成訓(xùn)練集和驗(yàn)證集,訓(xùn)練集學(xué)習(xí),驗(yàn)證集評(píng)估性能,在訓(xùn)練過程中,若訓(xùn)練集的累積誤差降低,而驗(yàn)證集的累積誤差提高,則終止訓(xùn)練;
2、引入正則化:其基本思想是在誤差目標(biāo)函數(shù)中增加一個(gè)用于描述網(wǎng)絡(luò)復(fù)雜程度的部分,有如連接權(quán)和閾值的平方和:
其中λ∈(0,1)用于對(duì)累積經(jīng)驗(yàn)誤差與網(wǎng)絡(luò)復(fù)雜度這兩項(xiàng)進(jìn)行折中,常通過交叉驗(yàn)證法來估計(jì)。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程可看作一個(gè)參數(shù)尋優(yōu)的過程,即尋找到適當(dāng)?shù)膮?shù)使得E最小。于是我們時(shí)常會(huì)談及“全局最小”和“局部最小”。
1、全局最小:即全局最小解,在參數(shù)空間中,所有其他點(diǎn)的誤差函數(shù)值均大于該點(diǎn);
2、局部最?。杭淳植孔钚〗?,在參數(shù)空間中,其鄰近的點(diǎn)的誤差函數(shù)值均大于該點(diǎn)。
我們要達(dá)到局部極小點(diǎn),很容易,只要滿足梯度為零的點(diǎn)便是了,局部極小點(diǎn)可以有多個(gè),但全局最小點(diǎn)只有一個(gè)。顯然,我們追求的是全局最小,而非局部極小,于是人們通常采用以下策略來試圖“跳出”局部極小,使其接近全局最?。?/p>
1、以多組不同參數(shù)值初始化多個(gè)神經(jīng)網(wǎng)絡(luò),按標(biāo)準(zhǔn)方法訓(xùn)練,在迭代停止后,取其中誤差最小的解作為最終參數(shù);
2、使用隨機(jī)梯度下降(在計(jì)算梯度時(shí)加入了隨機(jī)因素),使得在局部最小時(shí),計(jì)算的梯度仍可能不為0,從而可能跳出局部極小,繼續(xù)進(jìn)行迭代;
3、“模擬退火”技術(shù),在每一步都以一定的概率接受比當(dāng)前解更差的結(jié)果,但接受“次優(yōu)解”的概率要隨著迭代進(jìn)行,時(shí)間推移而逐漸減低以確保算法的穩(wěn)定。
1、RBF網(wǎng)絡(luò)
單隱層前饋神經(jīng)網(wǎng)絡(luò) ,使用徑向基函數(shù)作為隱層神經(jīng)元激活函數(shù),輸出層是對(duì)隱層神經(jīng)元輸出的線性組合。RBF網(wǎng)絡(luò)可表示為:
2、ART網(wǎng)絡(luò)
競爭型學(xué)習(xí) (神經(jīng)網(wǎng)絡(luò)中一種常用的 無監(jiān)督學(xué)習(xí) 策略),由 比較層、識(shí)別層、識(shí)別閾值和重置模塊 組成。接收到比較層的輸入信號(hào)后,識(shí)別層神經(jīng)元相互競爭以產(chǎn)生獲勝神經(jīng)元,最簡單的方式就是計(jì)算輸入向量與每個(gè)識(shí)別層神經(jīng)元所對(duì)應(yīng)的模式類代表向量間的距離,距離小者獲勝。若獲勝神經(jīng)元對(duì)應(yīng)的代表向量與輸入向量間 相似度大于識(shí)別閾值 ,則將輸入樣本歸為該代表向量所屬類別,網(wǎng)絡(luò) 連接權(quán) 也會(huì)進(jìn)行 更新 以保證后面接收到相似的輸入樣本時(shí)該模式類會(huì)計(jì)算出更大的相似度,使得這樣的樣本能夠歸于一類;如果 相似度不大于識(shí)別閾值 ,則 重置模塊 會(huì)在 識(shí)別層 加一個(gè)神經(jīng)元,其 代表向量 就 設(shè)置 為當(dāng)前 輸入向量 。
3、SOM網(wǎng)絡(luò)
競爭型學(xué)習(xí)的無監(jiān)督神經(jīng)網(wǎng)絡(luò) ,將高維輸入數(shù)據(jù)映射到低維空間(通常是二維),且保持輸入數(shù)據(jù)在高維空間的拓?fù)浣Y(jié)構(gòu)。
4、級(jí)聯(lián)相關(guān)網(wǎng)絡(luò)
結(jié)構(gòu)自適應(yīng)網(wǎng)絡(luò) 。
5、Elman網(wǎng)絡(luò)
遞歸神經(jīng)網(wǎng)絡(luò) 。
6、Boltzmann機(jī)
基于能量的模型,其神經(jīng)元分為顯層與隱層,顯層用于數(shù)據(jù)輸入輸出,隱層被理解為數(shù)據(jù)的內(nèi)在表達(dá)。其神經(jīng)元皆為布爾型,1為激活,0為抑制。
理論上,參數(shù)越多的模型其復(fù)雜程度越高,能完成更加復(fù)雜的學(xué)習(xí)任務(wù)。但是復(fù)雜模型的訓(xùn)練效率低下,容易過擬合。但由于大數(shù)據(jù)時(shí)代、云計(jì)算,計(jì)算能力大幅提升緩解了訓(xùn)練效率低下,而訓(xùn)練數(shù)據(jù)的增加則可以降低過擬合風(fēng)險(xiǎn)。
于是如何增加模型的復(fù)雜程度呢?
1、增加隱層數(shù);
2、增加隱層神經(jīng)元數(shù).
如何有效訓(xùn)練多隱層神經(jīng)網(wǎng)絡(luò)?
1、無監(jiān)督逐層訓(xùn)練:每次訓(xùn)練一層隱節(jié)點(diǎn),把上一層隱節(jié)點(diǎn)的輸出當(dāng)作輸入來訓(xùn)練,本層隱結(jié)點(diǎn)訓(xùn)練好后,輸出再作為下一層的輸入來訓(xùn)練,這稱為預(yù)訓(xùn)練,全部預(yù)訓(xùn)練完成后,再對(duì)整個(gè)網(wǎng)絡(luò)進(jìn)行微調(diào)?!邦A(yù)訓(xùn)練+微調(diào)”即把大量的參數(shù)進(jìn)行分組,先找出每組較好的設(shè)置,再基于這些局部最優(yōu)的結(jié)果來訓(xùn)練全局最優(yōu);
2、權(quán)共享:令同一層神經(jīng)元使用完全相同的連接權(quán),典型的例子是卷積神經(jīng)網(wǎng)絡(luò)。這樣做可以大大減少需要訓(xùn)練的參數(shù)數(shù)目。
深度學(xué)習(xí) 可理解為一種特征學(xué)習(xí)或者表示學(xué)習(xí),是通過 多層處理 ,逐漸將初始的 低層特征表示 轉(zhuǎn)化為 高層特征表示 后,用 簡單模型 即可完成復(fù)雜的分類等 學(xué)習(xí)任務(wù) 。
二、神經(jīng)網(wǎng)絡(luò)算法
20 世紀(jì)五、六⼗年代,科學(xué)家 Frank Rosenblatt其受到 Warren McCulloch 和 Walter Pitts早期的⼯作的影響,發(fā)明了感知機(jī)(Perceptrons)。
⼀個(gè)感知器接受⼏個(gè)⼆進(jìn)制輸⼊, ,并產(chǎn)⽣⼀個(gè)⼆進(jìn)制輸出:
如上圖所示的感知機(jī)有三個(gè)輸⼊: 。通??梢杂懈嗷蚋佥?#12042;。 我們再引⼊權(quán)重: ,衡量輸入對(duì)輸出的重要性。感知機(jī)的輸出為0 或者 1,則由分配權(quán)重后的總和 ⼩于等于或者⼤于閾值決定。和權(quán)重⼀樣,閾值(threshold)是⼀個(gè)實(shí)數(shù),⼀個(gè)神經(jīng)元的參數(shù)。⽤更精確的代數(shù)形式如下:
給三個(gè)因素設(shè)置權(quán)重來作出決定:
可以把這三個(gè)因素對(duì)應(yīng)地⽤⼆進(jìn)制變量 來表⽰。例如,如果天⽓好,我們把
,如果不好, 。類似地,如果你的朋友陪你去, ,否則 。 也類似。
這三個(gè)對(duì)于可能對(duì)你來說,“電影好不好看”對(duì)你來說最重要,而天氣顯得不是那么的重要。所以你會(huì)這樣分配權(quán)值: ,然后定義閾值threshold=5。
現(xiàn)在,你可以使⽤感知器來給這種決策建⽴數(shù)學(xué)模型。
例如:
隨著權(quán)重和閾值的變化,你可以得到不同的決策模型。很明顯,感知機(jī)不是⼈做出決策使⽤的全部模型。但是這個(gè)例⼦說明了⼀個(gè)感知機(jī)如何能權(quán)衡不同的依據(jù)來決策。這看上去也可以⼤致解釋⼀個(gè)感知機(jī)⽹絡(luò)有時(shí)確實(shí)能夠做出一些不錯(cuò)的決定。
現(xiàn)在我們隊(duì)上面的結(jié)構(gòu)做一點(diǎn)變化,令b=-threshold,即把閾值移到不等號(hào)左邊,變成偏置, 那么感知器的規(guī)則可以重寫為:
引⼊偏置只是我們描述感知器的⼀個(gè)很⼩的變動(dòng),但是我們后⾯會(huì)看到它引導(dǎo)更進(jìn)⼀步的符號(hào)簡化。因此,我們不再⽤閾值,⽽總是使⽤偏置。
感知機(jī)是首個(gè)可以學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò),它的出現(xiàn)引起的神經(jīng)網(wǎng)絡(luò)的第一層高潮。需要指出的是,感知機(jī)只能做簡單的線性分類任務(wù),而且Minsky在1969年出版的《Perceptron》書中,證明了感知機(jī)對(duì)XOR(異或)這樣的問題都無法解決。但是感知機(jī)的提出,對(duì)神經(jīng)網(wǎng)絡(luò)的發(fā)展是具有重要意義的。
通過上面的感知機(jī)的觀察我們發(fā)現(xiàn)一個(gè)問題,每個(gè)感知機(jī)的輸出只有0和1,這就意味著有時(shí)我們只是在單個(gè)感知機(jī)上稍微修改了一點(diǎn)點(diǎn)權(quán)值w或者偏置b,就可能造成最終輸出完全的反轉(zhuǎn)。也就是說,感知機(jī)的輸出是一個(gè)階躍函數(shù)。如下圖所示,在0附近的時(shí)候,輸出的變化是非常明顯的,而在遠(yuǎn)離0的地方,我們可能調(diào)整好久參數(shù)也不會(huì)發(fā)生輸出的變化。
這樣階躍的跳變并不是我們想要的,我們需要的是當(dāng)我們隊(duì)權(quán)值w或者偏置b做出微小的調(diào)整后,輸出也相應(yīng)的發(fā)生微小的改變。這同時(shí)也意味值我們的輸出不再只是0和1,還可以輸出小數(shù)。由此我們引入了S型神經(jīng)元。
S型神經(jīng)元使用 S 型函數(shù),也叫Sigmoid function函數(shù),我們用它作為激活函數(shù)。其表達(dá)式如下:
圖像如下圖所示:
利⽤實(shí)際的 σ 函數(shù),我們得到⼀個(gè),就像上⾯說明的,平滑的感知器。 σ 函數(shù)的平滑特性,正是關(guān)鍵因素,⽽不是其細(xì)部形式。 σ 的平滑意味著權(quán)重和偏置的微⼩變化,即 ∆w 和 ∆b,會(huì)從神經(jīng)元產(chǎn)⽣⼀個(gè)微⼩的輸出變化 ∆output。實(shí)際上,微積分告訴我們
∆output 可以很好地近似表⽰為:
上面的式子是⼀個(gè)反映權(quán)重、偏置變化和輸出變化的線性函數(shù)。這⼀線性使得我們可以通過選擇權(quán)重和偏置的微⼩變化來達(dá)到輸出的微⼩變化。所以當(dāng) S 型神經(jīng)元和感知器本質(zhì)上是相同的,但S型神經(jīng)元在計(jì)算處理如何變化權(quán)重和偏置來使輸出變化的時(shí)候會(huì)更加容易。
有了對(duì)S型神經(jīng)元的了解,我們就可以介紹神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)了。具體如下:
在⽹絡(luò)中最左邊的稱為輸⼊層,其中的神經(jīng)元稱為輸⼊神經(jīng)元。最右邊的,即輸出層包含有輸出神經(jīng)元,在圖中,輸出層只有⼀個(gè)神經(jīng)元。中間層,既然這層中的神經(jīng)元既不是輸⼊也不是輸出,則被稱為隱藏層。
這就是神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu),隨著后面的發(fā)展神經(jīng)網(wǎng)絡(luò)的層數(shù)也隨之不斷增加和復(fù)雜。
我們回顧一下神經(jīng)網(wǎng)絡(luò)發(fā)展的歷程。神經(jīng)網(wǎng)絡(luò)的發(fā)展歷史曲折蕩漾,既有被人捧上天的時(shí)刻,也有摔落在街頭無人問津的時(shí)段,中間經(jīng)歷了數(shù)次大起大落。
從單層神經(jīng)網(wǎng)絡(luò)(感知機(jī))開始,到包含一個(gè)隱藏層的兩層神經(jīng)網(wǎng)絡(luò),再到多層的深度神經(jīng)網(wǎng)絡(luò),一共有三次興起過程。詳見下圖。
我們希望有⼀個(gè)算法,能讓我們找到權(quán)重和偏置,以⾄于⽹絡(luò)的輸出 y(x) 能夠擬合所有的 訓(xùn)練輸⼊ x。為了量化我們?nèi)绾螌?shí)現(xiàn)這個(gè)⽬標(biāo),我們定義⼀個(gè)代價(jià)函數(shù):
這⾥ w 表⽰所有的⽹絡(luò)中權(quán)重的集合, b 是所有的偏置, n 是訓(xùn)練輸⼊數(shù)據(jù)的個(gè)數(shù),
a 是表⽰當(dāng)輸⼊為 x 時(shí)輸出的向量,求和則是在總的訓(xùn)練輸⼊ x 上進(jìn)⾏的。當(dāng)然,輸出 a 取決于 x, w和 b,但是為了保持符號(hào)的簡潔性,我沒有明確地指出這種依賴關(guān)系。符號(hào) ∥v∥ 是指向量 v 的模。我們把 C 稱為⼆次代價(jià)函數(shù);有時(shí)也稱被稱為均⽅誤差或者 MSE。觀察⼆次代價(jià)函數(shù)的形式我們可以看到 C(w, b) 是⾮負(fù)的,因?yàn)榍蠛凸街械拿?#12032;項(xiàng)都是⾮負(fù)的。此外,代價(jià)函數(shù) C(w,b)的值相當(dāng)⼩,即 C(w; b) ≈ 0,精確地說,是當(dāng)對(duì)于所有的訓(xùn)練輸⼊ x, y(x) 接近于輸出 a 時(shí)。因
此如果我們的學(xué)習(xí)算法能找到合適的權(quán)重和偏置,使得 C(w; b) ≈ 0,它就能很好地⼯作。相反,當(dāng) C(w; b) 很⼤時(shí)就不怎么好了,那意味著對(duì)于⼤量地輸⼊, y(x) 與輸出 a 相差很⼤。因此我們的訓(xùn)練算法的⽬的,是最⼩化權(quán)重和偏置的代價(jià)函數(shù) C(w; b)。換句話說,我們想要找到⼀系列能讓代價(jià)盡可能⼩的權(quán)重和偏置。我們將采⽤稱為梯度下降的算法來達(dá)到這個(gè)⽬的。
下面我們將代價(jià)函數(shù)簡化為C(v)。它可以是任意的多元實(shí)值函數(shù), 。
注意我們⽤ v 代替了 w 和 b 以強(qiáng)調(diào)它可能是任意的函數(shù),我們現(xiàn)在先不局限于神經(jīng)⽹絡(luò)的環(huán)境。
為了使問題更加簡單我們先考慮兩個(gè)變量的情況,想象 C 是⼀個(gè)只有兩個(gè)變量 和 的函數(shù),我們的目的是找到 和 使得C最小。
如上圖所示,我們的目的就是找到局部最小值。對(duì)于這樣的一個(gè)問題,一種方法就是通過微積分的方法來解決,我們可以通過計(jì)算導(dǎo)數(shù)來求解C的極值點(diǎn)。但是對(duì)于神經(jīng)網(wǎng)絡(luò)來說,我們往往面對(duì)的是非常道的權(quán)值和偏置,也就是說v的維數(shù)不只是兩維,有可能是億萬維的。對(duì)于一個(gè)高維的函數(shù)C(v)求導(dǎo)數(shù)幾乎是不可能的。
在這種情況下,有人提出了一個(gè)有趣的算法。想象一下一個(gè)小球從山頂滾下山谷的過程, 我們的⽇常經(jīng)驗(yàn)告訴我們這個(gè)球最終會(huì)滾到⾕底。我們先暫時(shí)忽略相關(guān)的物理定理, 對(duì)球體的⾁眼觀察是為了激發(fā)我們的想象⽽不是束縛我們的思維。因此與其陷進(jìn)物理學(xué)⾥凌亂的細(xì)節(jié),不如我們就這樣問⾃⼰:如果我們扮演⼀天的上帝,能夠構(gòu)造⾃⼰的物理定律,能夠⽀配球體可以如何滾動(dòng),那么我們將會(huì)采取什么樣的運(yùn)動(dòng)學(xué)定律來讓球體能夠總是滾落到⾕底呢?
為了更精確地描述這個(gè)問題,讓我們思考⼀下,當(dāng)我們在 和 ⽅向分別將球體移動(dòng)⼀個(gè)很⼩的量,即 ∆ 和 ∆ 時(shí),球體將會(huì)發(fā)⽣什么情況。微積分告訴我們 C 將會(huì)有如下變化:
也可以用向量表示為
現(xiàn)在我們的問題就轉(zhuǎn)換為不斷尋找一個(gè)小于0的∆C,使得C+∆C不斷變小。
假設(shè)我們選?。?/p>
這⾥的 η 是個(gè)很⼩的正數(shù)(稱為學(xué)習(xí)速率),于是
由于 ∥∇C∥2 ≥ 0,這保證了 ∆C ≤ 0,即,如果我們按照上述⽅程的規(guī)則去改變 v,那么 C
會(huì)⼀直減⼩,不會(huì)增加。
所以我們可以通過不斷改變v來C的值不斷下降,是小球滾到最低點(diǎn)。
總結(jié)⼀下,梯度下降算法⼯作的⽅式就是重復(fù)計(jì)算梯度 ∇C,然后沿著相反的⽅向移動(dòng),沿著⼭⾕“滾落”。我們可以想象它像這樣:
為了使梯度下降能夠正確地運(yùn)⾏,我們需要選擇合適的學(xué)習(xí)速率η,確保C不斷減少,直到找到最小值。
知道了兩個(gè)變量的函數(shù) C 的梯度下降方法,我們可以很容易的把它推廣到多維。我們假設(shè) C 是⼀個(gè)有 m 個(gè)變量 的多元函數(shù)。 ∆C 將會(huì)變?yōu)椋?/p>
其中, ∇C為
∆v為:
更新規(guī)則為:
在回到神經(jīng)網(wǎng)絡(luò)中,w和b的更新規(guī)則為:
前面提到神經(jīng)⽹絡(luò)如何使⽤梯度下降算法來學(xué)習(xí)他們⾃⾝的權(quán)重和偏置。但是,這⾥還留下了⼀個(gè)問題:我們并沒有討論如何計(jì)算代價(jià)函數(shù)的梯度。這里就需要用到一個(gè)非常重要的算法:反向傳播算法(backpropagation)。
反向傳播算法的啟示是數(shù)學(xué)中的鏈?zhǔn)椒▌t。
四個(gè)方程:
輸出層誤差方程:
當(dāng)前層誤差方程:
誤差方程關(guān)于偏置的關(guān)系:
誤差方程關(guān)于權(quán)值的關(guān)系
算法描述:
檢視這個(gè)算法,你可以看到為何它被稱作反向傳播。我們從最后⼀層開始向后計(jì)算誤差向量δ。這看起來有點(diǎn)奇怪,為何要從后⾯開始。但是如果你認(rèn)真思考反向傳播的證明,這種反向移動(dòng)其實(shí)是代價(jià)函數(shù)是⽹絡(luò)輸出的函數(shù)的結(jié)果。為了理解代價(jià)隨前⾯層的權(quán)重和偏置變化的規(guī)律,我們需要重復(fù)作⽤鏈?zhǔn)椒▌t,反向地獲得需要的表達(dá)式。
參考鏈接: http://neuralnetworksanddeeplearning.com/
三、神經(jīng)網(wǎng)絡(luò)算法是什么
神經(jīng)網(wǎng)絡(luò)算法是指邏輯性的思維是指根據(jù)邏輯規(guī)則進(jìn)行推理的過程;神經(jīng)網(wǎng)絡(luò)的研究內(nèi)容相當(dāng)廣泛,反映了多學(xué)科交叉技術(shù)領(lǐng)域的特點(diǎn),主要的研究工作集中在生物原型研究、建立理論模型、網(wǎng)絡(luò)模型與算法研究、人工神經(jīng)網(wǎng)絡(luò)應(yīng)用系統(tǒng)等方面;生物原型研究:從生理學(xué)、心理學(xué)、解剖學(xué)、腦科學(xué)、病理學(xué)等生物科學(xué)方面研究神經(jīng)細(xì)胞、神經(jīng)網(wǎng)絡(luò)、神經(jīng)系統(tǒng)的生物原型結(jié)構(gòu)及其功能機(jī)理;建立理論模型:根據(jù)生物原型的研究,建立神經(jīng)元、神經(jīng)網(wǎng)絡(luò)的理論模型;網(wǎng)絡(luò)模型與算法研究:在理論模型研究的基礎(chǔ)上構(gòu)作具體的神經(jīng)網(wǎng)絡(luò)模型,以實(shí)現(xiàn)計(jì)算機(jī)模擬或準(zhǔn)備制作硬件;人
四、一文讀懂神經(jīng)網(wǎng)絡(luò)
要說近幾年最引人注目的技術(shù),無疑的,非人工智能莫屬。無論你是否身處科技互聯(lián)網(wǎng)行業(yè),隨處可見人工智能的身影:從 AlphaGo 擊敗世界圍棋冠軍,到無人駕駛概念的興起,再到科技巨頭 All in AI,以及各大高校向社會(huì)輸送海量的人工智能專業(yè)的畢業(yè)生。以至于人們開始萌生一個(gè)想法:新的革命就要來了,我們的世界將再次發(fā)生一次巨變;而后開始焦慮:我的工作是否會(huì)被機(jī)器取代?我該如何才能抓住這次革命?
人工智能背后的核心技術(shù)是深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network),大概是一年前這個(gè)時(shí)候,我正在回老家的高鐵上學(xué)習(xí) 3Blue1Brown 的 Neural Network 系列視頻課程,短短 4 集 60 多分鐘的時(shí)間,就把神經(jīng)網(wǎng)絡(luò)從 High Level 到推導(dǎo)細(xì)節(jié)說得清清楚楚,當(dāng)時(shí)的我除了獲得新知的興奮之外,還有一點(diǎn)新的認(rèn)知,算是給頭腦中的革命性的技術(shù)潑了盆冷水:神經(jīng)網(wǎng)絡(luò)可以解決一些復(fù)雜的、以前很難通過寫程序來完成的任務(wù)——例如圖像、語音識(shí)別等,但它的實(shí)現(xiàn)機(jī)制告訴我,神經(jīng)網(wǎng)絡(luò)依然沒有達(dá)到生物級(jí)別的智能,短期內(nèi)期待它來取代人也是不可能的。
一年后的今天,依然在這個(gè)春運(yùn)的時(shí)間點(diǎn),將我對(duì)神經(jīng)網(wǎng)絡(luò)的理解寫下來,算是對(duì)這部分知識(shí)的一個(gè)學(xué)習(xí)筆記,運(yùn)氣好的話,還可以讓不了解神經(jīng)網(wǎng)絡(luò)的同學(xué)了解起來。
維基百科這樣解釋 神經(jīng)網(wǎng)絡(luò) :
這個(gè)定義比較寬泛,你甚至還可以用它來定義其它的機(jī)器學(xué)習(xí)算法,例如之前我們一起學(xué)習(xí)的邏輯回歸和 GBDT 決策樹。下面我們具體一點(diǎn),下圖是一個(gè)邏輯回歸的示意圖:
其中 x1 和 x2 表示輸入,w1 和 w2 是模型的參數(shù),z 是一個(gè)線性函數(shù):
接著我們對(duì) z 做一個(gè) sigmod 變換(圖中藍(lán)色圓),得到輸出 y:
其實(shí),上面的邏輯回歸就可以看成是一個(gè)只有 1 層 輸入層 , 1 層 輸出層 的神經(jīng)網(wǎng)絡(luò),圖中容納數(shù)字的圈兒被稱作 神經(jīng)元 ;其中,層與層之間的連接 w1、w2 以及 b,是這個(gè) 神經(jīng)網(wǎng)絡(luò)的參數(shù) ,層之間如果每個(gè)神經(jīng)元之間都保持著連接,這樣的層被稱為 全連接層 (Full Connection Layer),或 稠密層 (Dense Layer);此外,sigmoid 函數(shù)又被稱作 激活函數(shù) (Activation Function),除了 sigmoid 外,常用的激活函數(shù)還有 ReLU、tanh 函數(shù)等,這些函數(shù)都起到將線性函數(shù)進(jìn)行非線性變換的作用。我們還剩下一個(gè)重要的概念: 隱藏層 ,它需要把 2 個(gè)以上的邏輯回歸疊加起來加以說明:
如上圖所示,除輸入層和輸出層以外,其他的層都叫做 隱藏層 。如果我們多疊加幾層,這個(gè)神經(jīng)網(wǎng)絡(luò)又可以被稱作 深度神經(jīng)網(wǎng)絡(luò) (Deep Neural Network),有同學(xué)可能會(huì)問多少層才算“深”呢?這個(gè)沒有絕對(duì)的定論,個(gè)人認(rèn)為 3 層以上就算吧:)
以上,便是神經(jīng)網(wǎng)絡(luò),以及神經(jīng)網(wǎng)絡(luò)中包含的概念,可見,神經(jīng)網(wǎng)絡(luò)并不特別,廣義上講,它就是
可見,神經(jīng)網(wǎng)絡(luò)和人腦神經(jīng)也沒有任何關(guān)聯(lián),如果我們說起它的另一個(gè)名字—— 多層感知機(jī)(Mutilayer Perceptron) ,就更不會(huì)覺得有多么玄乎了,多層感知機(jī)創(chuàng)造于 80 年代,可為什么直到 30 年后的今天才爆發(fā)呢?你想得沒錯(cuò),因?yàn)楦牧藗€(gè)名字……開個(gè)玩笑;實(shí)際上深度學(xué)習(xí)這項(xiàng)技術(shù)也經(jīng)歷過很長一段時(shí)間的黑暗低谷期,直到人們開始利用 GPU 來極大的提升訓(xùn)練模型的速度,以及幾個(gè)標(biāo)志性的事件:如 AlphaGo戰(zhàn)勝李世石、Google 開源 TensorFlow 框架等等,感興趣的同學(xué)可以翻一下這里的歷史。
就拿上圖中的 3 個(gè)邏輯回歸組成的神經(jīng)網(wǎng)絡(luò)作為例子,它和普通的邏輯回歸比起來,有什么優(yōu)勢呢?我們先來看下單邏輯回歸有什么劣勢,對(duì)于某些情況來說,邏輯回歸可能永遠(yuǎn)無法使其分類,如下面數(shù)據(jù):
這 4 個(gè)樣本畫在坐標(biāo)系中如下圖所示
因?yàn)檫壿嫽貧w的決策邊界(Decision Boundary)是一條直線,所以上圖中的兩個(gè)分類,無論你怎么做,都無法找到一條直線將它們分開,但如果借助神經(jīng)網(wǎng)絡(luò),就可以做到這一點(diǎn)。
由 3 個(gè)邏輯回歸組成的網(wǎng)絡(luò)(這里先忽略 bias)如下:
觀察整個(gè)網(wǎng)絡(luò)的計(jì)算過程,在進(jìn)入輸出層之前,該網(wǎng)絡(luò)所做的計(jì)算實(shí)際上是:
即把輸入先做了一次線性變換(Linear Transformation),得到 [z1, z2] ,再把 [z1, z2] 做了一個(gè)非線性變換(sigmoid),得到 [x1', x2'] ,(線性變換的概念可以參考 這個(gè)視頻 )。從這里開始,后面的操作就和一個(gè)普通的邏輯回歸沒有任何差別了,所以它們的差異在于: 我們的數(shù)據(jù)在輸入到模型之前,先做了一層特征變換處理(Feature Transformation,有時(shí)又叫做特征抽取 Feature Extraction),使之前不可能被分類的數(shù)據(jù)變得可以分類了 。
我們繼續(xù)來看下特征變換的效果,假設(shè) 為 ,帶入上述公式,算出 4 個(gè)樣本對(duì)應(yīng)的 [x1', x2'] 如下:
再將變換后的 4 個(gè)點(diǎn)繪制在坐標(biāo)系中:
顯然,在做了特征變換之后,這兩個(gè)分類就可以很容易的被一條決策邊界分開了。
所以, 神經(jīng)網(wǎng)絡(luò)的優(yōu)勢在于,它可以幫助我們自動(dòng)的完成特征變換或特征提取 ,尤其對(duì)于聲音、圖像等復(fù)雜問題,因?yàn)樵诿鎸?duì)這些問題時(shí),人們很難清晰明確的告訴你,哪些特征是有用的。
在解決特征變換的同時(shí),神經(jīng)網(wǎng)絡(luò)也引入了新的問題,就是我們需要設(shè)計(jì)各式各樣的網(wǎng)絡(luò)結(jié)構(gòu)來針對(duì)性的應(yīng)對(duì)不同的場景,例如使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)來處理圖像、使用長短期記憶網(wǎng)絡(luò)(LSTM)來處理序列問題、使用生成式對(duì)抗網(wǎng)絡(luò)(GAN)來寫詩和作圖等,就連去年自然語言處理(NLP)中取得突破性進(jìn)展的 Transformer/Bert 也是一種特定的網(wǎng)絡(luò)結(jié)構(gòu)。所以, 學(xué)好神經(jīng)網(wǎng)絡(luò),對(duì)理解其他更高級(jí)的網(wǎng)絡(luò)結(jié)構(gòu)也是有幫助的 。
上面說了,神經(jīng)網(wǎng)絡(luò)可以看作一個(gè)非線性函數(shù),該函數(shù)的參數(shù)是連接神經(jīng)元的所有的 Weights 和 Biases,該函數(shù)可以簡寫為 f(W, B) ,以手寫數(shù)字識(shí)別的任務(wù)作為例子:識(shí)別 MNIST 數(shù)據(jù)集 中的數(shù)字,數(shù)據(jù)集(MNIST 數(shù)據(jù)集是深度學(xué)習(xí)中的 HelloWorld)包含上萬張不同的人寫的數(shù)字圖片,共有 0-9 十種數(shù)字,每張圖片為 28*28=784 個(gè)像素,我們設(shè)計(jì)一個(gè)這樣的網(wǎng)絡(luò)來完成該任務(wù):
把該網(wǎng)絡(luò)函數(shù)所具備的屬性補(bǔ)齊:
接下來的問題是,這個(gè)函數(shù)是如何產(chǎn)生的?這個(gè)問題本質(zhì)上問的是這些參數(shù)的值是怎么確定的。
在機(jī)器學(xué)習(xí)中,有另一個(gè)函數(shù) c 來衡量 f 的好壞,c 的參數(shù)是一堆數(shù)據(jù)集,你輸入給 c 一批 Weights 和 Biases,c 輸出 Bad 或 Good,當(dāng)結(jié)果是 Bad 時(shí),你需要繼續(xù)調(diào)整 f 的 Weights 和 Biases,再次輸入給 c,如此往復(fù),直到 c 給出 Good 為止,這個(gè) c 就是損失函數(shù) Cost Function(或 Loss Function)。在手寫數(shù)字識(shí)別的列子中,c 可以描述如下:
可見,要完成手寫數(shù)字識(shí)別任務(wù),只需要調(diào)整這 12730 個(gè)參數(shù),讓損失函數(shù)輸出一個(gè)足夠小的值即可,推而廣之,絕大部分神經(jīng)網(wǎng)絡(luò)、機(jī)器學(xué)習(xí)的問題,都可以看成是定義損失函數(shù)、以及參數(shù)調(diào)優(yōu)的問題。
在手寫識(shí)別任務(wù)中,我們既可以使用交叉熵(Cross Entropy)損失函數(shù),也可以使用 MSE(Mean Squared Error)作為損失函數(shù),接下來,就剩下如何調(diào)優(yōu)參數(shù)了。
神經(jīng)網(wǎng)絡(luò)的參數(shù)調(diào)優(yōu)也沒有使用特別的技術(shù),依然是大家剛接觸機(jī)器學(xué)習(xí),就學(xué)到的梯度下降算法,梯度下降解決了上面迭代過程中的遺留問題——當(dāng)損失函數(shù)給出 Bad 結(jié)果時(shí),如何調(diào)整參數(shù),能讓 Loss 減少得最快。
梯度可以理解為:
把 Loss 對(duì)應(yīng)到 H,12730 個(gè)參數(shù)對(duì)應(yīng)到 (x,y),則 Loss 對(duì)所有參數(shù)的梯度可以表示為下面向量,該向量的長度為 12730:
$$
nabla L(w,b) = left[
frac{partial L}{partial w_1},
frac{partial L}{partial w_2},...,
frac{partial L}{partial b_{26}}
right] ^top
$$
所以,每次迭代過程可以概括為
用梯度來調(diào)整參數(shù)的式子如下(為了簡化,這里省略了 bias):
上式中, 是學(xué)習(xí)率,意為每次朝下降最快的方向前進(jìn)一小步,避免優(yōu)化過頭(Overshoot)。
由于神經(jīng)網(wǎng)絡(luò)參數(shù)繁多,所以需要更高效的計(jì)算梯度的算法,于是,反向傳播算法(Backpropagation)呼之欲出。
在學(xué)習(xí)反向傳播算法之前,我們先復(fù)習(xí)一下微積分中的鏈?zhǔn)椒▌t(Chain Rule):設(shè) g = u(h) , h = f(x) 是兩個(gè)可導(dǎo)函數(shù),x 的一個(gè)很小的變化 △x 會(huì)使 h 產(chǎn)生一個(gè)很小的變化 △h,從而 g 也產(chǎn)生一個(gè)較小的變化 △g,現(xiàn)要求 △g/△x,可以使用鏈?zhǔn)椒▌t:
有了以上基礎(chǔ),理解反向傳播算法就簡單了。
假設(shè)我們的演示網(wǎng)絡(luò)只有 2 層,輸入輸出都只有 2 個(gè)神經(jīng)元,如下圖所示:
其中 是輸入, 是輸出, 是樣本的目標(biāo)值,這里使用的損失函數(shù) L 為 MSE;圖中的上標(biāo) (1) 或 (2) 分別表示參數(shù)屬于第 (1) 層或第 (2) 層,下標(biāo) 1 或 2 分別表示該層的第 1 或 第 2 個(gè)神經(jīng)元。
現(xiàn)在我們來計(jì)算 和 ,掌握了這 2 個(gè)參數(shù)的偏導(dǎo)數(shù)計(jì)算之后,整個(gè)梯度的計(jì)算就掌握了。
所謂反向傳播算法,指的是從右向左來計(jì)算每個(gè)參數(shù)的偏導(dǎo)數(shù),先計(jì)算 ,根據(jù)鏈?zhǔn)椒▌t
對(duì)左邊項(xiàng)用鏈?zhǔn)椒▌t展開
又 是輸出值, 可以直接通過 MSE 的導(dǎo)數(shù)算出:
而 ,則 就是 sigmoid 函數(shù)的導(dǎo)數(shù)在 處的值,即
于是 就算出來了:
再來看 這一項(xiàng),因?yàn)?/p>
所以
注意:上面式子對(duì)于所有的 和 都成立,且結(jié)果非常直觀,即 對(duì) 的偏導(dǎo)為左邊的輸入 的大小;同時(shí),這里還隱含著另一層意思:需要調(diào)整哪個(gè) 來影響 ,才能使 Loss 下降得最快,從該式子可以看出,當(dāng)然是先調(diào)整較大的 值所對(duì)應(yīng)的 ,效果才最顯著 。
于是,最后一層參數(shù) 的偏導(dǎo)數(shù)就算出來了
我們再來算上一層的 ,根據(jù)鏈?zhǔn)椒▌t :
繼續(xù)展開左邊這一項(xiàng)
你發(fā)現(xiàn)沒有,這幾乎和計(jì)算最后一層一摸一樣,但需要注意的是,這里的 對(duì) Loss 造成的影響有多條路徑,于是對(duì)于只有 2 個(gè)輸出的本例來說:
上式中, 都已經(jīng)在最后一層算出,下面我們來看下 ,因?yàn)?/p>
于是
同理
注意:這里也引申出梯度下降的調(diào)參直覺:即要使 Loss 下降得最快,優(yōu)先調(diào)整 weight 值比較大的 weight。
至此, 也算出來了
觀察上式, 所謂每個(gè)參數(shù)的偏導(dǎo)數(shù),通過反向傳播算法,都可以轉(zhuǎn)換成線性加權(quán)(Weighted Sum)計(jì)算 ,歸納如下:
式子中 n 代表分類數(shù),(l) 表示第 l 層,i 表示第 l 層的第 i 個(gè)神經(jīng)元。 既然反向傳播就是一個(gè)線性加權(quán),那整個(gè)神經(jīng)網(wǎng)絡(luò)就可以借助于 GPU 的矩陣并行計(jì)算了 。
最后,當(dāng)你明白了神經(jīng)網(wǎng)絡(luò)的原理,是不是越發(fā)的認(rèn)為,它就是在做一堆的微積分運(yùn)算,當(dāng)然,作為能證明一個(gè)人是否學(xué)過微積分,神經(jīng)網(wǎng)絡(luò)還是值得學(xué)一下的。Just kidding ..
本文我們通過
這四點(diǎn),全面的學(xué)習(xí)了神經(jīng)網(wǎng)絡(luò)這個(gè)知識(shí)點(diǎn),希望本文能給你帶來幫助。
參考:
以上就是關(guān)于神經(jīng)網(wǎng)絡(luò)計(jì)算分為相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
神經(jīng)網(wǎng)絡(luò)的特點(diǎn)(循環(huán)神經(jīng)網(wǎng)絡(luò)的特點(diǎn))
lstm神經(jīng)網(wǎng)絡(luò)和bp神經(jīng)網(wǎng)絡(luò)(lm bp神經(jīng)網(wǎng)絡(luò))
ai神經(jīng)網(wǎng)絡(luò)算法(ai神經(jīng)網(wǎng)絡(luò)算法智能車)
杭州g20峰會(huì)主會(huì)場蓮花(杭州g20峰會(huì)花銷)
猜你喜歡
西安百度推廣網(wǎng)站(西安百度推廣網(wǎng)站有哪些)
谷歌網(wǎng)站收錄提交入口(谷歌網(wǎng)站收錄提交入口是什么)
調(diào)整網(wǎng)頁視頻播放速度(調(diào)整網(wǎng)頁視頻播放速度的方法)
win7怎么優(yōu)化電腦性能(win7怎么優(yōu)化電腦性能參數(shù))
直通車點(diǎn)擊率低怎么辦(直通車點(diǎn)擊率低會(huì)影響權(quán)重嗎)
云服務(wù)ecs屬于哪一層級(jí)服務(wù)(云服務(wù)ecs屬于哪一層級(jí)服務(wù)模式)