99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀深入淺出|深度學(xué)習(xí)算法之BP神經(jīng)網(wǎng)絡(luò) 詳細(xì)公式推導(dǎo)
深入淺出|深度學(xué)習(xí)算法之BP神經(jīng)網(wǎng)絡(luò) 詳細(xì)公式推導(dǎo)
2018-08-29
收藏

深入淺出|深度學(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)值。


BP神經(jīng)網(wǎng)絡(luò)算法

由上面可以得知:神經(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)的基本步驟

1、數(shù)據(jù)歸一化

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

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }