
深入淺出|深度學(xué)習(xí)算法之BP神經(jīng)網(wǎng)絡(luò) 詳細(xì)公式推導(dǎo)
所謂神經(jīng)網(wǎng)絡(luò),目前用得最廣泛的一個(gè)定義是“的神經(jīng)網(wǎng)絡(luò)是由具有適應(yīng)性簡(jiǎn)單單元組成的廣泛并行互連的網(wǎng)絡(luò),它的組織能夠模擬生物神經(jīng)系統(tǒng)對(duì)真實(shí)世界物體所做出的交互反應(yīng)”。
BP(back propagation)神經(jīng)網(wǎng)絡(luò)一種按照誤差逆向傳播算法訓(xùn)練的多層前饋神經(jīng)網(wǎng)絡(luò),是目前應(yīng)用最廣泛的神經(jīng)網(wǎng)絡(luò)。
神經(jīng)元模型
神經(jīng)網(wǎng)絡(luò)中最基本的單元是神經(jīng)元模型(neuron)。在生物神經(jīng)網(wǎng)絡(luò)的原始機(jī)制中,每個(gè)神經(jīng)元通常都有多個(gè)樹(shù)突(dendrite),一個(gè)軸突(axon)和一個(gè)細(xì)胞體(cell body),樹(shù)突短而多分支,軸突長(zhǎng)而只有一個(gè);在功能上,樹(shù)突用于傳入其它神經(jīng)元傳遞的神經(jīng)沖動(dòng),而軸突用于將神經(jīng)沖動(dòng)傳出到其它神經(jīng)元,當(dāng)樹(shù)突或細(xì)胞體傳入的神經(jīng)沖動(dòng)使得神經(jīng)元興奮時(shí),該神經(jīng)元就會(huì)通過(guò)軸突向其它神經(jīng)元傳遞興奮。神經(jīng)元的生物學(xué)結(jié)構(gòu)如下圖所示:
一直沿用至今的“M-P神經(jīng)元模型”正是對(duì)這一結(jié)構(gòu)進(jìn)行了抽象,也稱“閾值邏輯單元“,其中樹(shù)突對(duì)應(yīng)于輸入部分,每個(gè)神經(jīng)元收到n個(gè)其他神經(jīng)元傳遞過(guò)來(lái)的輸入信號(hào),這些信號(hào)通過(guò)帶權(quán)重的連接傳遞給細(xì)胞體,這些權(quán)重又稱為連接權(quán)(connection weight)。細(xì)胞體分為兩部分,前一部分計(jì)算總輸入值(即輸入信號(hào)的加權(quán)和,或者說(shuō)累積電平),后一部分先計(jì)算總輸入值與該神經(jīng)元閾值的差值,然后通過(guò)激活函數(shù)(activation
function)的處理,產(chǎn)生輸出從軸突傳送給其它神經(jīng)元。M-P神經(jīng)元模型如下圖所示:
與線性分類十分相似,神經(jīng)元模型最理想的激活函數(shù)也是階躍函數(shù),即將神經(jīng)元輸入值與閾值的差值映射為輸出值1或0,若差值大于零輸出1,對(duì)應(yīng)興奮;若差值小于零則輸出0,對(duì)應(yīng)抑制。但階躍函數(shù)不連續(xù),不光滑(定義域內(nèi)不完全可導(dǎo)),故在M-P神經(jīng)元模型中,采用Sigmoid函數(shù)來(lái)近似, Sigmoid函數(shù)將較大范圍內(nèi)變化的輸入值擠壓到 (0,1) 輸出值范圍內(nèi),所以也稱為擠壓函數(shù)(squashing function)。
將多個(gè)神經(jīng)元按一定的層次結(jié)構(gòu)連接起來(lái),就得到了神經(jīng)網(wǎng)絡(luò)。它是一種包含多個(gè)參數(shù)的模型,比方說(shuō)10個(gè)神經(jīng)元兩兩連接,則有100個(gè)參數(shù)需要學(xué)習(xí)(每個(gè)神經(jīng)元有9個(gè)連接權(quán)以及1個(gè)閾值),若將每個(gè)神經(jīng)元都看作一個(gè)函數(shù),則整個(gè)神經(jīng)網(wǎng)絡(luò)就是由這些函數(shù)相互嵌套而成。
多次前饋神經(jīng)網(wǎng)絡(luò)有三部分組成,分別是輸入層(input layer),隱藏層(hide layer),輸出層(output layer)。隱藏層可以有,也可以沒(méi)有,輸入層和輸出層必須要有。沒(méi)有隱藏層的神經(jīng)網(wǎng)絡(luò)是線性的,只能處理線性可分的問(wèn)題(線性可分問(wèn)題從二維的角度就是分界線是一條直線,多維就是存在線性超平面將其分類)。一個(gè)沒(méi)有隱藏層且輸出層只有一個(gè)單元的神經(jīng)網(wǎng)絡(luò)就相當(dāng)于線性的Logistic模型。
感知機(jī)與多層網(wǎng)絡(luò)
感知機(jī)(Perceptron)是由兩層神經(jīng)元組成的一個(gè)簡(jiǎn)單模型,但只有輸出層是M-P神經(jīng)元,即只有輸出層神經(jīng)元進(jìn)行激活函數(shù)處理,也稱為功能神經(jīng)元(functionalneuron);輸入層只是接受外界信號(hào)(樣本屬性)并傳遞給輸出層(輸入層的神經(jīng)元個(gè)數(shù)等于樣本的屬性數(shù)目),而沒(méi)有激活函數(shù)。這樣一來(lái),感知機(jī)與之前線性回歸的思想基本是一樣的,都是通過(guò)對(duì)屬性加權(quán)與另一個(gè)常數(shù)求和,再使用sigmoid函數(shù)將這個(gè)輸出值壓縮到0-1之間,從而解決分類問(wèn)題。不同的是感知機(jī)的輸出層應(yīng)該可以有多個(gè)神經(jīng)元,從而可以實(shí)現(xiàn)多分類問(wèn)題,同時(shí)兩個(gè)模型所用的參數(shù)估計(jì)方法十分不同。
給定訓(xùn)練集,則感知機(jī)的n+1個(gè)參數(shù)(n個(gè)權(quán)重+1個(gè)閾值)都可以通過(guò)學(xué)習(xí)得到。閾值Θ可以看作一個(gè)輸入值固定為-1的啞結(jié)點(diǎn)的權(quán)重ωn+1,即假設(shè)有一個(gè)固定輸入xn+1=-1的輸入層神經(jīng)元,其對(duì)應(yīng)的權(quán)重為ωn+1,這樣就把權(quán)重和閾值統(tǒng)一為權(quán)重的學(xué)習(xí)了。簡(jiǎn)單感知機(jī)的結(jié)構(gòu)如下圖所示:
感知機(jī)權(quán)重的學(xué)習(xí)規(guī)則如下:對(duì)于訓(xùn)練樣本(x,y),當(dāng)該樣本進(jìn)入感知機(jī)學(xué)習(xí)后,會(huì)產(chǎn)生一個(gè)輸出值,若該輸出值與樣本的真實(shí)標(biāo)記不一致,則感知機(jī)會(huì)對(duì)權(quán)重進(jìn)行調(diào)整,若激活函數(shù)為階躍函數(shù),則調(diào)整的方法與Logistic回歸類似(基于梯度下降法)。
感知機(jī)是通過(guò)逐個(gè)樣本輸入來(lái)更新權(quán)重,首先設(shè)定好初始權(quán)重(一般為隨機(jī)),逐個(gè)地輸入樣本數(shù)據(jù),若輸出值與真實(shí)標(biāo)記相同則繼續(xù)輸入下一個(gè)樣本,若不一致則更新權(quán)重,然后再重新逐個(gè)檢驗(yàn),直到每個(gè)樣本數(shù)據(jù)的輸出值都與真實(shí)標(biāo)記相同。容易看出:感知機(jī)模型總是能將訓(xùn)練數(shù)據(jù)的每一個(gè)樣本都預(yù)測(cè)正確,和決策樹(shù)模型總是能將所有訓(xùn)練數(shù)據(jù)都分開(kāi)一樣,感知機(jī)模型很容易產(chǎn)生過(guò)擬合問(wèn)題。
由于感知機(jī)模型只有一層功能神經(jīng)元,因此其功能十分有限,只能處理線性可分的問(wèn)題,對(duì)于這類問(wèn)題,感知機(jī)的學(xué)習(xí)過(guò)程一定會(huì)收斂(converge),因此總是可以求出適當(dāng)?shù)臋?quán)值。
由上面可以得知:神經(jīng)網(wǎng)絡(luò)的學(xué)習(xí)主要蘊(yùn)含在權(quán)重和閾值中,多層網(wǎng)絡(luò)使用上面簡(jiǎn)單感知機(jī)的權(quán)重調(diào)整規(guī)則顯然不夠用了,BP神經(jīng)網(wǎng)絡(luò)算法即誤差逆?zhèn)鞑ニ惴ㄕ菫閷W(xué)習(xí)多層前饋神經(jīng)網(wǎng)絡(luò)而設(shè)計(jì),BP神經(jīng)網(wǎng)絡(luò)算法是迄今為止最成功的的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法。
一般而言,只需包含一個(gè)足夠多神經(jīng)元的隱層,就能以任意精度逼近任意復(fù)雜度的連續(xù)函數(shù),故下面以訓(xùn)練單隱層的前饋神經(jīng)網(wǎng)絡(luò)為例,介紹BP神經(jīng)網(wǎng)絡(luò)的算法思想。
上圖為一個(gè)單隱層前饋神經(jīng)網(wǎng)絡(luò)的拓?fù)浣Y(jié)構(gòu),BP神經(jīng)網(wǎng)絡(luò)算法也使用梯度下降法(gradient descent),以單個(gè)樣本的均方誤差的負(fù)梯度方向?qū)?quán)重進(jìn)行調(diào)節(jié)??梢钥闯觯築P算法首先將誤差反向傳播給隱層神經(jīng)元,調(diào)節(jié)隱層到輸出層的連接權(quán)重與輸出層神經(jīng)元的閾值;接著根據(jù)隱含層神經(jīng)元的均方誤差,來(lái)調(diào)節(jié)輸入層到隱含層的連接權(quán)值與隱含層神經(jīng)元的閾值。BP算法基本的推導(dǎo)過(guò)程與感知機(jī)的推導(dǎo)過(guò)程原理是相同的,下面給出調(diào)整隱含層到輸出層的權(quán)重調(diào)整規(guī)則的推導(dǎo)過(guò)程:
BP算法的最終目標(biāo)是要最小化整個(gè)訓(xùn)練集D上的累積誤差
學(xué)習(xí)率η∈(0,1)控制著沿反梯度方向下降的步長(zhǎng),若步長(zhǎng)太大則下降太快容易產(chǎn)生震蕩,若步長(zhǎng)太小則收斂速度太慢,一般地常把η設(shè)置為0.1,有時(shí)更新權(quán)重時(shí)會(huì)將輸出層與隱含層設(shè)置為不同的學(xué)習(xí)率。BP算法的基本流程如下所示:
BP算法的更新規(guī)則是基于每個(gè)樣本的預(yù)測(cè)值與真實(shí)類標(biāo)的均方誤差來(lái)進(jìn)行權(quán)值調(diào)節(jié),即BP算法每次更新只針對(duì)于單個(gè)樣例。需要注意的是:BP算法的最終目標(biāo)是要最小化整個(gè)訓(xùn)練集D上的累積誤差。
BP神經(jīng)網(wǎng)絡(luò)matlab實(shí)現(xiàn)的基本步驟
2、數(shù)據(jù)分類,主要包括打亂數(shù)據(jù)順序,抽取正常訓(xùn)練用數(shù)據(jù)、變量數(shù)據(jù)、測(cè)試數(shù)據(jù)
3、建立神經(jīng)網(wǎng)絡(luò),包括設(shè)置多少層網(wǎng)絡(luò)(一般3層以內(nèi)既可以,每層的節(jié)點(diǎn)數(shù)(具體節(jié)點(diǎn)數(shù),尚無(wú)科學(xué)的模型和公式方法確定,可采用試湊法,但輸出層的節(jié)點(diǎn)數(shù)應(yīng)和需要輸出的量個(gè)數(shù)相等),設(shè)置隱含層的傳輸函數(shù)等
4、指定訓(xùn)練參數(shù)進(jìn)行訓(xùn)練,這步非常重要
5、完成訓(xùn)練后,就可以調(diào)用訓(xùn)練結(jié)果,輸入測(cè)試數(shù)據(jù),進(jìn)行測(cè)試
6、數(shù)據(jù)進(jìn)行反歸一化
7、誤差分析、結(jié)果預(yù)測(cè)或分類,作圖等
應(yīng)用案例
問(wèn)題的matlab代碼:
P=[0.2286 0.1292 0.0720 0.1592 0.1335 0.0733 0.1159 0.0940 0.0522 0.1345 0.0090 0.1260 0.3619 0.0690 0.1828;
0.2090 0.0947 0.1393 0.1387 0.2558 0.0900 0.0771 0.0882 0.0393 0.1430 0.0126 0.1670 0.2450 0.0508 0.1328;
0.0442 0.0880 0.1147 0.0563 0.3347 0.1150 0.1453 0.0429 0.1818 0.0378 0.0092 0.2251 0.1516 0.0858 0.0670;
0.2603 0.1715 0.0702 0.2711 0.1491 0.1330 0.0968 0.1911 0.2545 0.0871 0.0060 0.1793 0.1002 0.0789 0.0909;
0.3690 0.2222 0.0562 0.5157 0.1872 0.1614 0.1425 0.1506 0.1310 0.0500 0.0078 0.0348 0.0451 0.0707 0.0880;
0.0359 0.1149 0.1230 0.5460 0.1977 0.1248 0.0624 0.0832 0.1640 0.1002 0.0059 0.1503 0.1837 0.1295 0.0700;
0.1759 0.2347 0.1829 0.1811 0.2922 0.0655 0.0774 0.2273 0.2056 0.0925 0.0078 0.1852 0.3501 0.1680 0.2668;
0.0724 0.1909 0.1340 0.2409 0.2842 0.0450 0.0824 0.1064 0.1909 0.1586 0.0116 0.1698 0.3644 0.2718 0.2494;
0.2634 0.2258 0.1165 0.1154 0.1074 0.0657 0.0610 0.2623 0.2588 0.1155 0.0050 0.0978 0.1511 0.2273 0.3220]';
T=[1 0 0;1 0 0;1 0 0;
0 1 0;0 1 0;0 1 0;
0 0 1;0 0 1;0 0 1]';
%輸入向量的最大值和最小值
threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];
net=newff(threshold,[31 3],{'tansig','logsig'},'trainlm');
%訓(xùn)練次數(shù)為1000,訓(xùn)練目標(biāo)為0.01,學(xué)習(xí)速率為0.1
net.trainParam.epochs=1000;
net.trainParam.goal=0.01;
LP.lr=0.1;
net = train(net,P,T);
%測(cè)試數(shù)據(jù),和訓(xùn)練數(shù)據(jù)不一致
P_test=[0.2101 0.0950 0.1298 0.1359 0.2601 0.1001 0.0753 0.0890 0.0389 0.1451 0.0128 0.1590 0.2452 0.0512 0.1319;
0.2593 0.1800 0.0711 0.2801 0.1501 0.1298 0.1001 0.1891 0.2531 0.0875 0.0058 0.1803 0.0992 0.0802 0.1002;
0.2599 0.2235 0.1201 0.1171 0.1102 0.0683 0.0621 0.2597 0.2602 0.1167 0.0048 0.1002 0.1521 0.2281 0.3205]';
Y=sim(net,P_test)
%計(jì)算訓(xùn)練誤差res(P106)
t=[1 0 0;
0 1 0;
0 0 1];
error=Y-t
res=norm(error)
數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼
若不方便掃碼,搜微信號(hào):CDAshujufenxi
LSTM 模型輸入長(zhǎng)度選擇技巧:提升序列建模效能的關(guān)鍵? 在循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)家族中,長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)憑借其解決長(zhǎng)序列 ...
2025-07-11CDA 數(shù)據(jù)分析師報(bào)考條件詳解與準(zhǔn)備指南? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代浪潮下,CDA 數(shù)據(jù)分析師認(rèn)證愈發(fā)受到矚目,成為眾多有志投身數(shù) ...
2025-07-11數(shù)據(jù)透視表中兩列相乘合計(jì)的實(shí)用指南? 在數(shù)據(jù)分析的日常工作中,數(shù)據(jù)透視表憑借其強(qiáng)大的數(shù)據(jù)匯總和分析功能,成為了 Excel 用戶 ...
2025-07-11尊敬的考生: 您好! 我們誠(chéng)摯通知您,CDA Level I和 Level II考試大綱將于 2025年7月25日 實(shí)施重大更新。 此次更新旨在確保認(rèn) ...
2025-07-10BI 大數(shù)據(jù)分析師:連接數(shù)據(jù)與業(yè)務(wù)的價(jià)值轉(zhuǎn)化者? ? 在大數(shù)據(jù)與商業(yè)智能(Business Intelligence,簡(jiǎn)稱 BI)深度融合的時(shí)代,BI ...
2025-07-10SQL 在預(yù)測(cè)分析中的應(yīng)用:從數(shù)據(jù)查詢到趨勢(shì)預(yù)判? ? 在數(shù)據(jù)驅(qū)動(dòng)決策的時(shí)代,預(yù)測(cè)分析作為挖掘數(shù)據(jù)潛在價(jià)值的核心手段,正被廣泛 ...
2025-07-10數(shù)據(jù)查詢結(jié)束后:分析師的收尾工作與價(jià)值深化? ? 在數(shù)據(jù)分析的全流程中,“query end”(查詢結(jié)束)并非工作的終點(diǎn),而是將數(shù) ...
2025-07-10CDA 數(shù)據(jù)分析師考試:從報(bào)考到取證的全攻略? 在數(shù)字經(jīng)濟(jì)蓬勃發(fā)展的今天,數(shù)據(jù)分析師已成為各行業(yè)爭(zhēng)搶的核心人才,而 CDA(Certi ...
2025-07-09【CDA干貨】單樣本趨勢(shì)性檢驗(yàn):捕捉數(shù)據(jù)背后的時(shí)間軌跡? 在數(shù)據(jù)分析的版圖中,單樣本趨勢(shì)性檢驗(yàn)如同一位耐心的偵探,專注于從單 ...
2025-07-09year_month數(shù)據(jù)類型:時(shí)間維度的精準(zhǔn)切片? ? 在數(shù)據(jù)的世界里,時(shí)間是最不可或缺的維度之一,而year_month數(shù)據(jù)類型就像一把精準(zhǔn) ...
2025-07-09CDA 備考干貨:Python 在數(shù)據(jù)分析中的核心應(yīng)用與實(shí)戰(zhàn)技巧? ? 在 CDA 數(shù)據(jù)分析師認(rèn)證考試中,Python 作為數(shù)據(jù)處理與分析的核心 ...
2025-07-08SPSS 中的 Mann-Kendall 檢驗(yàn):數(shù)據(jù)趨勢(shì)與突變分析的有力工具? ? ? 在數(shù)據(jù)分析的廣袤領(lǐng)域中,準(zhǔn)確捕捉數(shù)據(jù)的趨勢(shì)變化以及識(shí)別 ...
2025-07-08備戰(zhàn) CDA 數(shù)據(jù)分析師考試:需要多久?如何規(guī)劃? CDA(Certified Data Analyst)數(shù)據(jù)分析師認(rèn)證作為國(guó)內(nèi)權(quán)威的數(shù)據(jù)分析能力認(rèn)證 ...
2025-07-08LSTM 輸出不確定的成因、影響與應(yīng)對(duì)策略? 長(zhǎng)短期記憶網(wǎng)絡(luò)(LSTM)作為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)的一種變體,憑借獨(dú)特的門(mén)控機(jī)制,在 ...
2025-07-07統(tǒng)計(jì)學(xué)方法在市場(chǎng)調(diào)研數(shù)據(jù)中的深度應(yīng)用? 市場(chǎng)調(diào)研是企業(yè)洞察市場(chǎng)動(dòng)態(tài)、了解消費(fèi)者需求的重要途徑,而統(tǒng)計(jì)學(xué)方法則是市場(chǎng)調(diào)研數(shù) ...
2025-07-07CDA數(shù)據(jù)分析師證書(shū)考試全攻略? 在數(shù)字化浪潮席卷全球的當(dāng)下,數(shù)據(jù)已成為企業(yè)決策、行業(yè)發(fā)展的核心驅(qū)動(dòng)力,數(shù)據(jù)分析師也因此成為 ...
2025-07-07剖析 CDA 數(shù)據(jù)分析師考試題型:解鎖高效備考與答題策略? CDA(Certified Data Analyst)數(shù)據(jù)分析師考試作為衡量數(shù)據(jù)專業(yè)能力的 ...
2025-07-04SQL Server 字符串截取轉(zhuǎn)日期:解鎖數(shù)據(jù)處理的關(guān)鍵技能? 在數(shù)據(jù)處理與分析工作中,數(shù)據(jù)格式的規(guī)范性是保證后續(xù)分析準(zhǔn)確性的基礎(chǔ) ...
2025-07-04CDA 數(shù)據(jù)分析師視角:從數(shù)據(jù)迷霧中探尋商業(yè)真相? 在數(shù)字化浪潮席卷全球的今天,數(shù)據(jù)已成為企業(yè)決策的核心驅(qū)動(dòng)力,CDA(Certifie ...
2025-07-04CDA 數(shù)據(jù)分析師:開(kāi)啟數(shù)據(jù)職業(yè)發(fā)展新征程? ? 在數(shù)據(jù)成為核心生產(chǎn)要素的今天,數(shù)據(jù)分析師的職業(yè)價(jià)值愈發(fā)凸顯。CDA(Certified D ...
2025-07-03