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

熱線電話:13121318867

登錄
首頁精彩閱讀深入淺出BP神經(jīng)網(wǎng)絡(luò)算法的原理
深入淺出BP神經(jīng)網(wǎng)絡(luò)算法的原理
2018-08-06
收藏

深入淺出BP神經(jīng)網(wǎng)絡(luò)算法的原理

相信每位剛接觸神經(jīng)網(wǎng)絡(luò)的時(shí)候都會(huì)先碰到BP算法的問題,如何形象快速地理解BP神經(jīng)網(wǎng)絡(luò)就是我們學(xué)習(xí)的高級(jí)樂趣了(畫外音:樂趣?你在跟我談樂趣?)

本篇博文就是要簡單粗暴地幫助各位童鞋快速入門采取BP算法的神經(jīng)網(wǎng)絡(luò)

BP神經(jīng)網(wǎng)絡(luò)是怎樣的一種定義?看這句話:一種按“誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練”的多層前饋網(wǎng)絡(luò)。

BP的思想就是:利用輸出后的誤差來估計(jì)輸出層前一層的誤差,再用這層誤差來估計(jì)更前一層誤差,如此獲取所有各層誤差估計(jì)。這里的誤差估計(jì)可以理解為某種偏導(dǎo)數(shù),我們就是根據(jù)這種偏導(dǎo)數(shù)來調(diào)整各層的連接權(quán)值,再用調(diào)整后的連接權(quán)值重新計(jì)算輸出誤差。直到輸出的誤差達(dá)到符合的要求或者迭代次數(shù)溢出設(shè)定值。

說來說去,“誤差”這個(gè)詞說的很多嘛,說明這個(gè)算法是不是跟誤差有很大的關(guān)系?

沒錯(cuò),BP的傳播對(duì)象就是“誤差”,傳播目的就是得到所有層的估計(jì)誤差。

它的學(xué)習(xí)規(guī)則是:使用最速下降法,通過反向傳播(就是一層一層往前傳)不斷調(diào)整網(wǎng)絡(luò)的權(quán)值和閾值,最后使全局誤差系數(shù)最小。

它的學(xué)習(xí)本質(zhì)就是:對(duì)各連接權(quán)值的動(dòng)態(tài)調(diào)整。

拓?fù)浣Y(jié)構(gòu)如上圖:輸入層(input),隱藏層(hide layer),輸出層(output)

BP網(wǎng)絡(luò)的優(yōu)勢就是能學(xué)習(xí)和儲(chǔ)存大量的輸入輸出的關(guān)系,而不用事先指出這種數(shù)學(xué)關(guān)系。那么它是如何學(xué)習(xí)的?

BP利用處處可導(dǎo)的激活函數(shù)來描述該層輸入與該層輸出的關(guān)系,常用S型函數(shù)δ來當(dāng)作激活函數(shù)。

    

我們現(xiàn)在開始有監(jiān)督的BP神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法:

1、正向傳播得到輸出層誤差e

=>輸入層輸入樣本=>各隱藏層=>輸出層

2、判斷是否反向傳播

=>若輸出層誤差與期望不符=>反向傳播

3、誤差反向傳播

=>誤差在各層顯示=>修正各層單元的權(quán)值,直到誤差減少到可接受程度。

算法闡述起來比較簡單,接下來通過數(shù)學(xué)公式來認(rèn)識(shí)BP的真實(shí)面目。

假設(shè)我們的網(wǎng)絡(luò)結(jié)構(gòu)是一個(gè)含有N個(gè)神經(jīng)元的輸入層,含有P個(gè)神經(jīng)元的隱層,含有Q個(gè)神經(jīng)元的輸出層。



這些變量分別如下:

認(rèn)識(shí)好以上變量后,開始計(jì)算:

一、用(-1,1)內(nèi)的隨機(jī)數(shù)初始化誤差函數(shù),并設(shè)定精度ε,最多迭代次數(shù)M

二、隨機(jī)選取第k個(gè)輸入樣本及對(duì)應(yīng)的期望輸出

重復(fù)以下步驟至誤差達(dá)到要求:

三、計(jì)算隱含層各神經(jīng)元的輸入和輸出

四、計(jì)算誤差函數(shù)e對(duì)輸出層各神經(jīng)元的偏導(dǎo)數(shù),根據(jù)輸出層期望輸出和實(shí)際輸出以及輸出層輸入等參數(shù)計(jì)算。

五、計(jì)算誤差函數(shù)對(duì)隱藏層各神經(jīng)元的偏導(dǎo)數(shù),根據(jù)后一層(這里即輸出層)的靈敏度(稍后介紹靈敏度)δo(k),后一層連接權(quán)值w,以及該層的輸入值等參數(shù)計(jì)算


六、利用第四步中的偏導(dǎo)數(shù)來修正輸出層連接權(quán)值

七、利用第五步中的偏導(dǎo)數(shù)來修正隱藏層連接權(quán)值

八、計(jì)算全局誤差(m個(gè)樣本,q個(gè)類別)

比較具體的計(jì)算方法介紹好了,接下來用比較簡潔的數(shù)學(xué)公式來大致地概括這個(gè)過程,相信看完上述的詳細(xì)步驟都會(huì)有些了解和領(lǐng)悟。

假設(shè)我們的神經(jīng)網(wǎng)絡(luò)是這樣的,此時(shí)有兩個(gè)隱藏層。

我們先來理解靈敏度是什么?

看下面一個(gè)公式:

這個(gè)公式是誤差對(duì)b的一個(gè)偏導(dǎo)數(shù),這個(gè)b是怎么?它是一個(gè)基,靈敏度δ就是誤差對(duì)基的變化率,也就是導(dǎo)數(shù)。

因?yàn)?u/?b=1,所以?E/?b=?E/?u=δ,也就是說bias基的靈敏度?E/?b=δ等于誤差E對(duì)一個(gè)節(jié)點(diǎn)全部輸入u的導(dǎo)數(shù)?E/?u。

也可以認(rèn)為這里的靈敏度等于誤差E對(duì)該層輸入的導(dǎo)數(shù),注意了,這里的輸入是上圖U級(jí)別的輸入,即已經(jīng)完成層與層權(quán)值計(jì)算后的輸入。

每一個(gè)隱藏層第l層的靈敏度為:

這里的“?”表示每個(gè)元素相乘,不懂的可與上面詳細(xì)公式對(duì)比理解

而輸出層的靈敏度計(jì)算方法不同,為:

而最后的修正權(quán)值為靈敏度乘以該層的輸入值,注意了,這里的輸入可是未曾乘以權(quán)值的輸入,即上圖的Xi級(jí)別。

對(duì)于每一個(gè)權(quán)值(W)ij都有一個(gè)特定的學(xué)習(xí)率ηIj,由算法學(xué)習(xí)完成。

數(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)檢測極驗(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ù)說明請(qǐng)參見: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); }