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

熱線電話:13121318867

登錄
首頁精彩閱讀深度學習:神經(jīng)網(wǎng)絡中的前向傳播和反向傳播算法推導
深度學習:神經(jīng)網(wǎng)絡中的前向傳播和反向傳播算法推導
2018-08-20
收藏

深度學習神經(jīng)網(wǎng)絡中的前向傳播和反向傳播算法推導

1. 神經(jīng)網(wǎng)絡
這是一個常見的神經(jīng)網(wǎng)絡的圖:

這是一個常見的三層神經(jīng)網(wǎng)絡的基本構成,Layer L1是輸入層,Layer L2是隱含層,Layer L3是隱含層,當我們輸入x1,x2,x3等數(shù)據(jù)時,通過隱含層的計算、轉換,輸出你的期望,當你的輸入和輸出是一樣的時候,成為自編碼模型(Auto-Encoder),而當你輸入和輸出是不一致的時候,也就是我們常說的人工神經(jīng)網(wǎng)絡。

2.  如何計算傳播
首先我們先構建一個簡單的網(wǎng)絡層作為例子:

在這個網(wǎng)絡層中有

    第一層輸入層:里面包含神經(jīng)元i1,i2,截距:b1,權重:w1,w2,w3,w4
    第二層是隱含層:里面包含h1,h2,截距:b2,權重:w5,w6,w7,w8
    第三層是輸出層:里面包含o1,o2

我們使用sigmoid作為激活函數(shù)

假定我們輸入數(shù)據(jù)i1: 0.02 i2: 0.04 截距b1:0.4 b2:0.7 期望的輸出數(shù)據(jù)o1:0.5  o2:0.9
未知的是權重w1,w2,w3,w4,w5,w6,w7,w8
我們的目的是為了能的到o1:0.5 o2:0.9的期望的值,計算出w1,w2,w3....w8的權重值

先假如構造一個權重w1,w2,w3.....w8的值,通過計算獲取到最佳的w1,w2,w3....w8的權重

權重的初使值:

    w1=0.25
    w2=0.25
    w3=0.15
    w4=0.20
    w5=0.30
    w6=0.35
    w7=0.40
    w8=0.35


2.1 前向傳播
2.1.1 輸入層到隱含層
NET(h1)=w1*i1+w2*i2+b1=0.25*0.02+0.25*0.04+0.4=0.005+0.01+0.4=0.415

神經(jīng)元h1到輸出h1的激活函數(shù)是sigmoid

OUT(h1)=1/(1+e^(-NET(h1)))=1/(1+0.660340281)=0.602286177

同理我們也可以獲取OUT(h2)的值
NET(h2)=w3*i1+w4*i2+b1=0.15*0.02+0.20*0.04+0.4=0.003+0.008+0.4=0.411
OUT(h2)=1/(1+e^(-NET(h2)))=1/(1+0.662986932)=0.601327636

2.1.2 從隱含層到輸出層
計算輸出層的神經(jīng)元o1, o2的值,計算方法和輸出層到隱含層類似
NET(o1)=w5*h1+w6*h2+b2=0.3*0.602286177+0.35*0.601327636+0.7=0.180685853+0.210464672+0.7=1.091150525
OUT(o1)=1/(1+e^(-NET(o1)))=1/(1+0.335829891)=0.748598311
同理
NET(o2)=w7*h1+w8*h2+b2=0.4*0.602286177+0.35*0.601327636+0.7=0.240914471+0.210464672+0.7=1.151379143
OUT(o2)=1/(1+e^(-NET(o2)))=1/1.316200383=0.759762733

o1:0.748598311   o2:0.759762733 距離我們期望的o1:0.5  o2:0.9還是有很大的距離
2.2 計算總誤差

公式:

也就是我們需要計算每個期望誤差的和
E(total)= E(o0)+E(o1)=(1/2)*(0.748598311-0.5)^2+(1/2)*(0.759762733-0.9)^2=0.01545028+0.009833246=0.025283526

2.3 反向傳播

每一個權重對誤差的影響,我們可以通過下圖更直觀的看清楚誤差的反向傳播

2.3.1 隱含層到輸出層的權值更新

隱含層到輸出層的權值,在上面的例子里是W5,W6,W7,W8

我們以W6參數(shù)為例子,計算W6對整體誤差的影響有多大,可以使用整體誤差對W6參數(shù)求偏導:


很明顯并沒有W6對Etotal的計算公式,我們只有W6對Net(o1)的計算公式
但根據(jù)偏導數(shù)的鏈式法則,我們可以將我們存在的推導公式進行鏈式乘法

我們來計算每一個公式的偏導:


這是一個復合函數(shù)的導數(shù)

,則復合函數(shù)的導數(shù)為:


這里g(x)=target(o1)-out(o1)  g'(x)=-1

=-(0.5-0.748598311)=0.248598311

  • 計算
已知

我們來推導一下
還是復合函數(shù)的推導



最后推導的結果:

最后我們的公式



=0.248598311*0.18819888*0.601327636=0.028133669

2.3.1.1 跟新W6的權重

W6=W6-x*
其中 x 就是我們常說的學習速率,設置x學習速率為0.1 那么新的w6的權重就是

0.35-0.1*0.028133669=0.347186633

相同的道理,我們也可以計算新的W5,W6,W7,W8的權重

可是如何計算和跟新W1,W2,W3,W4的權重呢?

2.3.2 隱含層的權值跟新

大概的算法還是和前面類似,如下圖所展示:



計算公式:

2.3.2.1 計算

對Out(h1)來說Etotal并不依賴于Out(h1)計算,需要將Total分拆成兩個Eo1和Eo2來計算
公式如下:

接著推導公式:
  • 計算



  • 同理也可以計算

2.3.2.2 計算



2.3.2.3 計算



最后三者相乘:

2.3.2.4 整體公式

根據(jù)前面的公式,我們可以推導出最后的公式




2.3.2.4 跟新W1的權重

和計算W6的權重一樣:

設置學習速率,計算的到w1的權重值


3. 計算獲取最佳的權重

我們將獲取的新的權重不停的迭代,迭代一定的次數(shù)后直到接近期望值o1:0.5 o2:0.9后,所的到權重w1...w8,就是所需要的權重。


數(shù)據(jù)分析咨詢請掃描二維碼

若不方便掃碼,搜微信號: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(), // 加隨機數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調用 initGeetest 進行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調,回調的第一個參數(shù)驗證碼對象,之后可以使用它調用相應的接口 initGeetest({ // 以下 4 個配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺檢測極驗服務器是否宕機 new_captcha: data.new_captcha, // 用于宕機時表示是新驗證碼的宕機 product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說明請參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計時完成 $(".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 = '請輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請輸入正確的'+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); }