• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      淺析BP神經(jīng)網(wǎng)絡(luò)基本模型的C語言實(shí)現(xiàn)﹡

      2013-09-17 12:30:32趙朝鳳令曉明
      通信技術(shù) 2013年1期
      關(guān)鍵詞:神經(jīng)元權(quán)重公式

      趙朝鳳, 令曉明

      (蘭州交通大學(xué) 光電技術(shù)與智能控制教育部重點(diǎn)實(shí)驗(yàn)室,甘肅 蘭州 730070)

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

      1.1 BP神經(jīng)網(wǎng)絡(luò)的基本模型

      人大腦信息的傳遞、對外界刺激產(chǎn)生反應(yīng)都由神經(jīng)元控制的,人腦就是由上百億個的這樣神經(jīng)元構(gòu)成。每個神經(jīng)元平均與幾千個神經(jīng)元相連接,構(gòu)成了人腦的神經(jīng)網(wǎng)絡(luò),如圖1所示。一個神經(jīng)元并非每次接到其他神經(jīng)元傳遞過來的刺激都產(chǎn)生反應(yīng)。它首先會與其相鄰的神經(jīng)元傳來的刺激進(jìn)行積累,到一定的時(shí)候產(chǎn)生自己的刺激將其傳遞給一些相鄰的神經(jīng)元。這樣工作的百億個神經(jīng)元構(gòu)成了人腦對外界進(jìn)行的反應(yīng)。而人腦對外界刺激的學(xué)習(xí)的機(jī)制就是通過調(diào)節(jié)這些神經(jīng)元之間聯(lián)系以及其強(qiáng)度。當(dāng)然,實(shí)際上以上說的是對人腦真正神經(jīng)工作的一種簡化的生物模型,利用這種簡化的生物模型可以將它推廣至機(jī)器學(xué)習(xí)中來,并把它描述成人工神經(jīng)網(wǎng)絡(luò)[1]。

      圖1 神經(jīng)網(wǎng)絡(luò)中神經(jīng)元示意

      神經(jīng)元積累的刺激是由其它神經(jīng)元傳遞過來的刺激量和對應(yīng)的權(quán)重之和,用 Xi表示這種積累,Yi表示某個神經(jīng)元傳遞過來的刺激量,Wi表示鏈接某個神經(jīng)元刺激的權(quán)重,得到公式:

      Xj=(Y1×W1)+(Y2×W2)+…+(Yi+Wi)+…+(Yn+Wn)。

      當(dāng)Xj完成積累后,完成積累的神經(jīng)元本身對周圍的一些神經(jīng)元傳播刺激,將其表示為yj得到如下所示:

      神經(jīng)元根據(jù)積累后Xj的結(jié)果進(jìn)行處理,對外傳遞刺激 yj。用 f函數(shù)映射來表示這種處理,將它稱之為激活函數(shù)。

      1.2 BP神經(jīng)網(wǎng)絡(luò)的構(gòu)成

      BP神經(jīng)網(wǎng)絡(luò)組成網(wǎng)絡(luò)后的情形,用圖形來說明是最直觀的方法,如圖2所示。

      圖2 BP神經(jīng)網(wǎng)絡(luò)示意

      對第一區(qū)域來說,它們相當(dāng)于外界的刺激,是刺激的來源并且將刺激傳遞給神經(jīng)元,因此把第一區(qū)域命名為輸入層。第二區(qū)域,表示神經(jīng)元相互之間傳遞刺激相當(dāng)于人腦里面,因此把第二區(qū)域命名為隱藏層。第三區(qū)域,表示神經(jīng)元經(jīng)過多層次相互傳遞后對外界的反應(yīng),因此把第三區(qū)域命名為輸出層。

      輸入層將刺激傳遞給隱藏層,隱藏層通過神經(jīng)元之間聯(lián)系的強(qiáng)度(權(quán)重)和傳遞規(guī)則(激活函數(shù))將刺激傳到輸出層,輸出層整理隱藏層處理后的刺激產(chǎn)生最終結(jié)果。若有正確的結(jié)果,那么將正確的結(jié)果和產(chǎn)生的結(jié)果進(jìn)行比較,得到誤差,再逆推對神經(jīng)網(wǎng)絡(luò)中的鏈接權(quán)重進(jìn)行反饋修正,從而來完成學(xué)習(xí)的過程。這就是BP神經(jīng)網(wǎng)絡(luò)的反饋機(jī)制。

      2 BP神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)推導(dǎo)

      從神經(jīng)網(wǎng)絡(luò)的生物模型中,可以得到關(guān)于 BP神經(jīng)網(wǎng)絡(luò)的公式(1)[1-2]:

      對于神經(jīng)元本身的輸出的激活函數(shù),一般來說選取Sigmoid函數(shù),那么可以得到公式(2):

      通過以上兩個公式,可以分析出來 BP神經(jīng)網(wǎng)絡(luò)中輸出結(jié)果的計(jì)算過程。每個神經(jīng)元收到刺激yi,然后加權(quán)積累(權(quán)重Wji)完成后產(chǎn)生xj,再通過激活函數(shù)產(chǎn)生刺激 yj,向下一層與它相連的神經(jīng)元傳遞,依次類推得到最終的輸出結(jié)果。

      要修正 Wji就需要得到誤差量。首先用 dj來表示真實(shí)的正確結(jié)果,并且設(shè)誤差為E,那么(yj– dj)對應(yīng)的就是E對于yj的微分增量,即yj減去(yj– dj)后就能得到正確值,得到公式(3):

      然后,需要知道的是對于權(quán)重Wji的誤差量,也就是的值。而由公式(1)中知道Wji與xj相關(guān),那么可以推導(dǎo)出公式(4):的值了。它的推導(dǎo)如下:

      需要求得Wji的誤差量,轉(zhuǎn)換為需要求

      所以最終得到的誤差量的值為:

      這樣完成了運(yùn)用神經(jīng)網(wǎng)絡(luò)的輸出值yj和正確值dj對最后一層隱藏層Wji的修正。

      這樣所有的誤差量的都可以同理推導(dǎo)完成。

      最后一步修正jiW ,設(shè)置一個l(0 到 1 之間)學(xué)習(xí)率。

      3 代碼的實(shí)現(xiàn)

      3.1 部分?jǐn)?shù)據(jù)的定義

      首先,介紹些下文中描述的程序里面的一些重要數(shù)據(jù)的定義。

      #define Data 820

      #define In 2

      #define Out 1

      #define Neuron 45

      #define TrainC 5500

      Data用來表示已經(jīng)知道的數(shù)據(jù)樣本的數(shù)量,也就是訓(xùn)練樣本的數(shù)量。In表示對于每個樣本有多少個輸入變量;Out表示對于每個樣本有多少個輸出變量。Neuron表示神經(jīng)元的數(shù)量,TrainC來表示訓(xùn)練的次數(shù)。

      接下來是對神經(jīng)網(wǎng)絡(luò)描述的數(shù)據(jù)定義,圖3里面的數(shù)據(jù)類型都是double型。

      圖3 神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)定義圖

      d_in[Data][In]存儲Data個樣本,每個樣本的In個輸入。d_out[Data][Out]存儲Data個樣本,每個樣本的Out個輸出。用鄰接表法來表示圖3中的網(wǎng)絡(luò),w[Neuron][In]表示某個輸入對某個神經(jīng)元的權(quán)重,v[Out][Neuron]來表示某個神經(jīng)元對某個輸出的權(quán)重;與之對應(yīng)的保存它們兩個修正量的數(shù)組dw[Neuron][In]和 dv[Out][Neuron]。數(shù)組 o[Neuron]記錄的是神經(jīng)元通過激活函數(shù)對外的輸出,Output[Data][Out] 存儲BP神經(jīng)網(wǎng)絡(luò)的輸出。

      3.2 執(zhí)行過程

      程序的流程用偽代碼來表示,如下:

      主函數(shù)

      int main{

      讀取樣本數(shù)ReadData();

      //初始化BP神經(jīng)網(wǎng)絡(luò)

      InitBPNework(){

      包括數(shù)據(jù)的歸一,神經(jīng)元的初始化w[Neuron][In]、v[Out][Neuron]等;

      }

      //BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練

      TrainNetwork(){

      do{

      for(i小于樣本容量Data)

      {

      計(jì)算按照第 i 個樣本輸入,產(chǎn)生的BP神經(jīng)網(wǎng)絡(luò)的輸出ComputO(i);

      累記誤差精度;

      反饋調(diào)節(jié) BP神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元,完成第i個樣本的學(xué)習(xí)BackUpdate(i);

      }

      }while(達(dá)到訓(xùn)練次數(shù)或者符合誤差精度);

      }

      存儲訓(xùn)練好的神經(jīng)元信息WriteNeuron();

      用一些數(shù)據(jù)來測試,訓(xùn)練出來的BP神經(jīng)網(wǎng)絡(luò)的結(jié)果;

      return 0;

      }

      以上是處理的流程,其中函數(shù) ComputO(i)(O是output縮寫)是計(jì)算BP神經(jīng)網(wǎng)絡(luò)預(yù)測第i個樣本的輸出,也就是第一個過程。BackUpdate(i)是根據(jù)預(yù)測的第i個樣本輸出對神經(jīng)網(wǎng)絡(luò)的權(quán)重進(jìn)行更新。

      3.3 主要函數(shù)的闡述

      3.3.1 初始化BP神經(jīng)網(wǎng)絡(luò)

      初始化主要是涉及2個方面的功能:

      1)是對讀取的訓(xùn)練樣本數(shù)據(jù)進(jìn)行歸一化處理,歸一化處理就是指的就是將數(shù)據(jù)轉(zhuǎn)換成0~1之間。由于理論模型沒考慮到 BP神經(jīng)網(wǎng)絡(luò)收斂的速率問題,但是實(shí)際實(shí)踐過程中,歸一化處理是不可或缺的。一般來說神經(jīng)元的輸出對于0~1之間的數(shù)據(jù)非常敏感,歸一化能夠顯著提高訓(xùn)練效率??梢杂靡韵鹿絹韺ζ溥M(jìn)行歸一化,其中加個常數(shù)A是為了防止出現(xiàn) 0的情況(0不能為分母)。y=(x–nMin Value+A)/(nMaxValue–nMinValue+A)。

      2)是對神經(jīng)元的權(quán)重進(jìn)行初始化了,數(shù)據(jù)歸一到了(0~1)之間,那么權(quán)重初始化為(-1~1)之間的數(shù)據(jù),另外對修正量賦值為0。

      3.3.2 BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練

      BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練是整個BP神經(jīng)網(wǎng)絡(luò)形成的引擎,驅(qū)動著樣本訓(xùn)練過程的執(zhí)行。由 BP神經(jīng)網(wǎng)絡(luò)的基本模型知道,反饋學(xué)習(xí)機(jī)制包括2個部分:①是 BP神經(jīng)網(wǎng)絡(luò)產(chǎn)生預(yù)測的結(jié)果;②是通過預(yù)測的結(jié)果和樣本的準(zhǔn)確結(jié)果進(jìn)行比對,然后對神經(jīng)元進(jìn)行誤差量的修正。因此,用兩個函數(shù)來表示這樣的兩個過程,訓(xùn)練過程中還對平均誤差e進(jìn)行監(jiān)控,如果達(dá)到了設(shè)定的精度即可完成訓(xùn)練。由于不一定能夠到達(dá)預(yù)期設(shè)定的精度要求,添加一個訓(xùn)練次數(shù)的參數(shù),如果次數(shù)達(dá)到也退出訓(xùn)練。

      4 結(jié)語

      利用神經(jīng)網(wǎng)絡(luò)的生物模型來講述 BP神經(jīng)網(wǎng)絡(luò)的數(shù)學(xué)推導(dǎo)過程。在用偽代碼模擬神經(jīng)網(wǎng)絡(luò)的基本模型中,主要分析了 BP神經(jīng)網(wǎng)絡(luò)的初始化函數(shù)和訓(xùn)練函數(shù)。其中初始化函數(shù)中采用的歸一化處理原因是實(shí)踐中需要考慮的訓(xùn)練效率,另一方面又初始化了神經(jīng)元的權(quán)重;而 BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練則是神經(jīng)網(wǎng)絡(luò)形成的引擎,在這里用了兩個函數(shù)來表示反饋學(xué)習(xí)機(jī)制的兩部分。由此模擬了 BP神經(jīng)網(wǎng)絡(luò)的基本模型。

      [1] ANDERSON J A. An Introduction to Neural Networks[M].[s.l.]:Massachusetts Institute of Technology,1995:7-60.

      [2] RUMELHART D E,HINTON G E,WILLIAMS R J.Learning Representations by Back-propagating Errors[J].Nature,323(08):533-536.

      [3] 高雋.人工神經(jīng)網(wǎng)絡(luò)原理及仿真實(shí)例[M].北京:機(jī)械工業(yè)出版社,2003:49-70.

      [4] 郭艷兵,齊占慶,王雪光.一種改進(jìn)的 BP網(wǎng)絡(luò)學(xué)習(xí)算法[J].自動化技術(shù)與應(yīng)用,2002(02):13-14.

      [5] 韓力群.人工神經(jīng)網(wǎng)絡(luò)理論、設(shè)計(jì)及應(yīng)用[M].北京:化學(xué)工業(yè)出版社,2002:1-29.

      [6] 唐建鋒,張登玉,羅湘南.一種基于多尺度小波變換的自適應(yīng)濾波新算法[J].通信技術(shù),2008,42(12):405-407.

      [7] 史志舉,康桂華,胡波,等.解碼協(xié)作分集技術(shù)研究[J].通信技術(shù),2010,43(06):38-40.

      [8] 董楊鑫,鄭建宏.編碼協(xié)作通信技術(shù)的研究[J].通信技術(shù),2007,40(11):65-67.

      [9] 王陽艷,蔡皖東.一種基于串行代理的重路由匿名通信系統(tǒng)[J].信息安全與通信保密,2008(06):123-125.

      猜你喜歡
      神經(jīng)元權(quán)重公式
      組合數(shù)與組合數(shù)公式
      排列數(shù)與排列數(shù)公式
      《從光子到神經(jīng)元》書評
      自然雜志(2021年6期)2021-12-23 08:24:46
      等差數(shù)列前2n-1及2n項(xiàng)和公式與應(yīng)用
      權(quán)重常思“浮名輕”
      為黨督政勤履職 代民行權(quán)重?fù)?dān)當(dāng)
      例說:二倍角公式的巧用
      躍動的神經(jīng)元——波蘭Brain Embassy聯(lián)合辦公
      基于公約式權(quán)重的截短線性分組碼盲識別方法
      基于二次型單神經(jīng)元PID的MPPT控制
      剑阁县| 交口县| 七台河市| 琼结县| 新乐市| 织金县| 大方县| 东阿县| 腾冲县| 房产| 通河县| 上栗县| 平邑县| 紫金县| 安义县| 德保县| 辉县市| 通州区| 巴东县| 禄丰县| 噶尔县| 射阳县| 延吉市| 府谷县| 黑山县| 合肥市| 清徐县| 青海省| 呼和浩特市| 田林县| 吉首市| 普陀区| 安顺市| 泰来县| 汶川县| 贞丰县| 武穴市| 蓬安县| 黔江区| 确山县| 阜宁县|