基于C語言的BP神經(jīng)網(wǎng)絡預測程序開發(fā)說明書_第1頁
基于C語言的BP神經(jīng)網(wǎng)絡預測程序開發(fā)說明書_第2頁
基于C語言的BP神經(jīng)網(wǎng)絡預測程序開發(fā)說明書_第3頁
基于C語言的BP神經(jīng)網(wǎng)絡預測程序開發(fā)說明書_第4頁
基于C語言的BP神經(jīng)網(wǎng)絡預測程序開發(fā)說明書_第5頁
已閱讀5頁,還剩76頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

本科學生畢業(yè)設(shè)計 基于 C 語言的 BP神經(jīng)網(wǎng)絡預測程序開發(fā) 系部名稱: 汽車與交通工程學院 專業(yè)班級: 車輛 07 11 班 學生姓名: 指導教師: 職 稱: 實驗師 黑 龍 江 工 程 學 院 二 一一年六月 黑龍江工程學院本 科生畢業(yè)設(shè)計 I 摘 要 人工神經(jīng)網(wǎng)絡理論是新近發(fā)展起來的交叉學科,采用物理器件或計 算機軟硬件模擬生物體中神經(jīng)細胞的某些結(jié)構(gòu)與功能,進而將其應用于工程領(lǐng)域,尤其適合高度復雜的非線性動力學系統(tǒng)仿真。人工神經(jīng)網(wǎng)絡已經(jīng)在組合優(yōu)化、模式識別、圖象處理、自動控制、信號處理、機器人和人工智能等領(lǐng)域得到廣泛應用,尤其在工程領(lǐng)域逐漸受到廣泛重視。人工神經(jīng)網(wǎng)絡用于非線性動力學系統(tǒng)研究,近來在汽車動力學建模與仿真領(lǐng)域也引起了極大關(guān)注。 許多工業(yè)生產(chǎn)過程存在時滯和大時間常數(shù) , 控制難度較大 , 傳統(tǒng)的控制策略對此類控制問題很難取得滿意的效果。為了解決這類問題 , 預測控制應運而生。預測控制是一種基于模型的控 制策略。反向傳播 (BP) 神經(jīng)網(wǎng)絡是當前應用最為廣泛的一種神經(jīng)網(wǎng)絡 , 它結(jié)構(gòu)簡單 , 工作狀態(tài)穩(wěn)定 , 并且已有大量提高網(wǎng)絡訓練速度的改進算法。 關(guān)鍵字 : BP 神經(jīng)網(wǎng)絡;應用; C 語言 ;汽車保有量;預測 黑龍江工程學院本 科生畢業(yè)設(shè)計 II ABSTRACT Artificial neural network theory is newly developed the interdisciplinary, adopting physical device or computer hardware and software simulation of the nerve cells in biological structure and function, and then some of its application in engineering field, especially suitable for highly complex nonlinear dynamic system simulation. Artificial neural network has been in the combinatorial optimization, pattern recognition, image processing, automatic control, signal processing, robot, and artificial intelligence and other areas to be wide ly applied, especially in engineering areas has been gradually paid more attention . Artificial neural network for nonlinear dynamic system research in automotive dynamics, recently modeling and simulation field also get great attention. Many industrial production process exist time delay and large time constant, bigger control difficulty, traditional control strategies on such controlling problems is difficult to obtain satisfactory results. In order to solve this kind of problem, predictive control arises at the historic moment. Predictive control is a model based control strategy. Back propagation (BP) neural network is currently the most widely used neural network, it is simple in structure, work, and a large number of stable status network algorithm are proposed to increase training speed. Key words: BP neural network; Application; C language; Auto possession; Prediction 黑龍江工程學院本 科生畢業(yè)設(shè)計 目 錄 摘要 . I ABSTRACT .II 第 1 章 緒論 . 1 1.1 人工神經(jīng)網(wǎng)絡 的發(fā)展歷史 . 1 1.2 人工神經(jīng)網(wǎng)絡的特性 . 2 1.3 BP 神經(jīng)網(wǎng)絡 . 3 第 2 章 神經(jīng)網(wǎng)絡預測基本原理 . 5 2.1 生物神經(jīng) 元模型 . 5 2.2 人工神經(jīng)元模型 . 6 2.3 人工神經(jīng)網(wǎng)絡模型 . 10 2.4 人工神經(jīng)網(wǎng)絡的學習 . 11 2.5 本章小結(jié) . 12 第 3 章 BP 神經(jīng)網(wǎng)絡結(jié)構(gòu)及數(shù)學模型 . 13 3.1 BP 神經(jīng)網(wǎng)絡結(jié)構(gòu) . 13 3.2 BP 神經(jīng)元 . 14 3.3 BP 網(wǎng)絡 . 15 3.3.1 正向傳播 . 15 3.3.2 反向傳播 . 16 3.4 本章小結(jié) . 18 第 4 章 BP 網(wǎng)絡的自學習與預測編程 . 19 4.1 BP 網(wǎng)絡的學習與預測神經(jīng)編程 . 19 4.2 輸入模式順傳播 . 19 4.3 輸出誤差的逆?zhèn)鞑?. 21 4.4 循環(huán)記憶訓練 . 24 4.5 學習結(jié)果的判別 . 27 4.6 對數(shù)據(jù)的預測程序編寫 . 32 4.7 本章小結(jié) . 36 黑龍江工程學院本 科生畢業(yè)設(shè)計 第五章 BP 神經(jīng)網(wǎng)絡在汽車保有量預測中 的應用 . 37 5.1 汽車保有量預測的意義 . 37 5.2 基于 BP 神經(jīng)網(wǎng)絡的汽車保有量預測模型 . 37 5.2.1 汽車保有量主要影響因素分析 . 37 5.2.2 汽車保有量預測模型 . 37 5.2.3 實例分析 . 38 5.3 本章小結(jié) . 43 結(jié)論 . 44 參 考文獻 . 45 致謝 . 46 附錄 . 47 黑龍江工程學院本 科生畢業(yè)設(shè)計 1 第 1章 緒 論 1.1 人工神經(jīng)網(wǎng)絡的發(fā)展歷史 人工神經(jīng)網(wǎng)絡早期的研究工作應追溯至本世紀 40 年代。下面以時間順序,以著名的人物或某一方面突出的研究成果為線索,簡要介紹人工神經(jīng)網(wǎng)絡的發(fā)展歷史。 1943 年,心理學家 WMcculloch 和數(shù)理邏輯學家 WPitts 在分析、總結(jié)神經(jīng)元基本特性的基礎(chǔ)上首先提出神經(jīng)元的數(shù)學模型。此模型沿用至今,并且直接影響著這一領(lǐng)域研究的進展。因而,他們兩人可稱為人工神經(jīng)網(wǎng)絡研究的先驅(qū)。 1945 年馮 諾依曼領(lǐng)導的設(shè)計小組試制成功存儲程序式電子計算機,標志著電子計算機時代的開始。 1948 年,他在研究工作中比較了人腦結(jié)構(gòu)與存儲程序式計算機的根本區(qū)別,提出了以簡單神經(jīng)元構(gòu)成的再生自動機網(wǎng)絡結(jié)構(gòu)。但是,由于指令存儲式計算機技術(shù)的發(fā)展非常迅速,迫使他放棄了神經(jīng)網(wǎng)絡研究的新途徑,繼續(xù)投身于指令存儲 式計算機技術(shù)的研究,并在此領(lǐng)域作出了巨大貢獻。雖然,馮 諾依曼的名字是與普通計算機聯(lián)系在一起的,但他也是人工神經(jīng)網(wǎng)絡研究的先驅(qū)之一。 50 年代末, FRosenblatt 設(shè)計制作了 “感知機 ”,它是一種多層的神經(jīng)網(wǎng)絡。這項工作首次把人工神經(jīng)網(wǎng)絡的研究從理論探討付諸工程實踐。當時,世界上許多實驗室仿效制作感知機,分別應用于文字識別、聲音識別、聲納信號識別以及學習記憶問題的研究。然而,這次人工神經(jīng)網(wǎng)絡的研究高潮未能持續(xù)很久,許多人陸續(xù)放棄了這方面的研究工作,這是因為當時數(shù)字計算機的發(fā)展處于全盛時期,許多人誤 以為數(shù)字計算機可以解決人工智能、模式識別、專家系統(tǒng)等方面的一切問題,使感知機的工作得不到重視;其次,當時的電子技術(shù)工藝水平比較落后,主要的元件是電子管或晶體管,利用它們制作的神經(jīng)網(wǎng)絡體積龐大,價格昂貴,要制作在規(guī)模上與真實的神經(jīng)網(wǎng)絡相似是完全不可能的;另外,在 1968 年一本名為感知機的著作中指出線性感知機功能是有限的,它不能解決如異或這樣的基本問題,而且多層網(wǎng)絡還不能找到有效的計算方法,這些論點促使大批研究人員對于人工神經(jīng)網(wǎng)絡的前景失去信心。 60 年代末期,人工神經(jīng)網(wǎng)絡的研究進入了低潮。 另外,在 60 年代初期, Widrow 提出了自適應線性元件網(wǎng)絡,這是一種連續(xù)取值的線性加權(quán)求和閾值網(wǎng)絡。后來,在此基礎(chǔ)上發(fā)展了非線性多層自適應網(wǎng)絡。黑龍江工程學院本 科生畢業(yè)設(shè)計 2 當時,這些工作雖未標出神經(jīng)網(wǎng)絡的名稱,而實際上就是一種人工神經(jīng)網(wǎng)絡模型。 隨著人們對感知機興趣的衰退,神經(jīng)網(wǎng)絡的研究沉寂了相當長的時間。 80年代初期,模擬與數(shù)字混合的 超大規(guī)模集成電路 制作技術(shù)提高到新的水平,完全付諸實用化,此外,數(shù)字計算 機的發(fā)展在若干應用領(lǐng)域遇到困難。這一背景預示,向人工神經(jīng)網(wǎng)絡尋求出路的時機已經(jīng)成熟。 美國 的物理學家 Hopfield 于 1982 年和 1984 年在美國科學院院刊上發(fā)表了兩篇關(guān)于人工神經(jīng)網(wǎng)絡研究的論文,引起了巨大的反響。人們重新認識到神經(jīng)網(wǎng)絡的威力以及付諸應用的現(xiàn)實性。隨即,一大批學者和研究人員圍繞著 Hopfield 提出的方法展開了進一步的工作,形成了 80 年代中期以來人工神經(jīng)網(wǎng)絡的研究 熱潮。 1.2 人工神經(jīng)網(wǎng)絡的特性 思維學普遍認為,人類大腦的思維分為抽象(邏輯)思維、形象(直觀)思維和靈感(頓悟)思維三種基本方式。 邏輯性的思維是指根據(jù)邏輯規(guī)則進行推理的過程;它先將信息化成概念,并用符號表示,然后,根據(jù)符號運算按串行模式進行邏輯推理;這一過程可以寫成串行的指令,讓計算機執(zhí)行。然而,直觀性的思維是將分布式存儲的信息綜合起來,結(jié)果是忽然間產(chǎn)生想法或解決問題的辦法。這種思維方式的根本之點在于以下兩點 : 1 信息是通過神經(jīng)元上的興奮模式分布儲在網(wǎng)絡上 ; 2 信息處理是通過神經(jīng)元之間同時相互 作用的動態(tài)過程來完成的。 人工神經(jīng)網(wǎng)絡具有初步的自適應與自組織能力。在學習或訓練過程中改變突觸權(quán)重值,以適應周圍環(huán)境的要求。同一網(wǎng)絡因?qū)W習方式及內(nèi)容不同可具有不同的功能。人工神經(jīng)網(wǎng)絡是一個具有學習能力的系統(tǒng),可以發(fā)展知識,以致超過設(shè)計者原有的知識水平。通常,它的學習訓練方式可分為兩種,一種是有監(jiān)督或稱有導師的學習,這時利用給定的樣本標準進行分類或模仿;另一種是無監(jiān)督學習或稱無導師學習,這時,只規(guī)定學習方式或某些規(guī)則,則具體的學習內(nèi)容隨系統(tǒng)所處環(huán)境 (即輸入信號情況)而異,系統(tǒng)可以自動發(fā)現(xiàn)環(huán)境特征和規(guī)律 性,具有更近似人腦的功能。 神經(jīng)網(wǎng)絡的研究內(nèi)容相當廣泛,反映了多學科交叉技術(shù)領(lǐng)域的特點。目前,主要的研究工作集中在以下幾個方面: 1 生物原型研究。從生理學、心理學、解剖學、腦科學、病理學等生物科學方面研究神經(jīng)細胞、神經(jīng)網(wǎng)絡、神經(jīng)系統(tǒng)的生物原型結(jié)構(gòu)及其功能機理。 2 建立理論模型。根據(jù)生物原型的研究,建立神經(jīng)元、神經(jīng)網(wǎng)絡的理論模黑龍江工程學院本 科生畢業(yè)設(shè)計 3 型。其中包括概念模型、知識模型、物理化學模型、數(shù)學模型等。 3 網(wǎng)絡模型 與算法研究。在理論模型研究的基礎(chǔ)上構(gòu)作具體的 神經(jīng)網(wǎng)絡模型 ,以實現(xiàn)計算機饃擬或準備制作硬件,包括 網(wǎng)絡學習 算法的研究。這方面的工作也稱為技術(shù)模型研究。 4 人工神經(jīng)網(wǎng)絡應用系統(tǒng)。在網(wǎng)絡模型與算法研究的基礎(chǔ)上,利用人工神經(jīng)網(wǎng) 絡組成實際的應用系統(tǒng),例如,完成某種信號處理或 模式識別 的功能、構(gòu)作專家系統(tǒng)、制成機器人等等。 縱觀當代新興科學技術(shù)的發(fā)展歷史,人類在征服宇宙空間、基本粒子,生命起源等科學技術(shù)領(lǐng)域的進程中歷經(jīng)了崎嶇不平的道路。我們也會看到,探索人腦功能和神經(jīng)網(wǎng)絡的研究將伴隨著重重困難的克服而日新月異。 1.3 BP 神經(jīng)網(wǎng)絡 在人工神經(jīng)網(wǎng)絡發(fā)展歷史中,很長一段時間里沒有找到隱層的連接 權(quán)值調(diào)整問題的有效算法。直到誤差 反向傳播算法 ( BP 算法)的提出,成功地解決了求解非線性連續(xù)函數(shù)的 多層前饋神經(jīng)網(wǎng)絡 權(quán)重調(diào)整問題。 BP (Back Propagation)神經(jīng)網(wǎng)絡,即誤差反傳誤差反向傳播算法的學習過程,由信息的正向傳播 和誤差的反向傳播兩個過程組成。輸入層各神經(jīng)元負責接收來自外界的輸入信息,并傳遞給中間層各神經(jīng)元;中間層是內(nèi)部信息處理層,負責信息變換,根據(jù)信息變化能力的需求,中間層可以設(shè)計為單隱層或者多隱層結(jié)構(gòu);最后一個隱層傳遞到輸出層各神經(jīng)元的信息,經(jīng)進一步處理后,完成一次學習的正向傳播處理過程,由輸出層向外界輸出信息處理結(jié)果。當實際輸出與期望輸出不符時,進入誤差的反向傳播階段。誤差通過輸出層,按誤差梯度下降的方式修正各層權(quán)值,向隱層、輸入層逐層反傳。周而復始的信息正向傳播和誤差反向傳播過程,是各層權(quán)值不斷調(diào)整的過程,也 是神經(jīng)網(wǎng)絡學習訓練的過程,此過程一直進行到網(wǎng)絡輸出的誤差減少到可以接受的程度,或者預先設(shè)定的學習次數(shù)為止。 首先,由于學習速率是固定的,因此網(wǎng)絡的收斂速度慢,需要較長的訓練時間。對于一些復雜問題, BP 算法需要的訓練時間可能非常長,這主要是由于學習速率太小造成的,可采用變化的學習速率或自適應的學習速率加以改進。 其次, BP 算法可以使權(quán)值收斂到某個值,但并不保證其為誤差平面的全局最小值,這是因為采用梯度下降法可能產(chǎn)生一個局部最小值。對于這個問題,可以采用附加動量法來解決。 再次,網(wǎng)絡隱含層的層 數(shù)和單元數(shù)的選擇尚無理論上的指導,一般是根據(jù)經(jīng)黑龍江工程學院本 科生畢業(yè)設(shè)計 4 驗或者通過反復實驗確定。因此,網(wǎng)絡往往存在很大的冗余性,在一定程度上也增加了網(wǎng)絡學習的負擔。 最后,網(wǎng)絡的學習和記憶具有不穩(wěn)定性。也就是說,如果增加了學習樣本,訓練好的網(wǎng)絡就需要從頭開始訓練,對于以前的權(quán)值和閾值是沒有記憶的。 黑龍江工程學院本 科生畢業(yè)設(shè)計 5 第 2章 神經(jīng)網(wǎng)絡預測基本原理 2.1 生物神經(jīng)元模型 人工神經(jīng)網(wǎng)絡是參照生物神經(jīng)網(wǎng)絡發(fā)展起來的,為了學習和研究人工神經(jīng)網(wǎng)絡,了解生物神經(jīng)網(wǎng)絡的基本原理是很必 要的。人腦神經(jīng)系統(tǒng)的基本單元是神經(jīng)細胞,即生物神經(jīng)元。人腦神經(jīng)系統(tǒng)約由 1110個神經(jīng)元構(gòu)成,每個神經(jīng)元與約 410個其他神經(jīng)元連接。神經(jīng)細胞與人體中其他細胞的關(guān)鍵區(qū)別在于,神經(jīng)網(wǎng)絡具有產(chǎn)生、處理和傳遞信號的能力。一個神經(jīng)元的構(gòu)造如圖 2.1 所示,主要包括細胞體、樹突和軸突。 圖 2.1 生物神經(jīng)元示意圖 細胞體是由細胞核、細胞質(zhì)、細胞膜等組成。在高等動物的神經(jīng)細胞,除了特殊的無 “軸突 ”神經(jīng)元外,一般每個神經(jīng)元從細胞體伸 出一根粗細均勻、表面光滑的突起,長度從幾微米到 1m左右,稱為軸突,它的功能是傳出從細胞體來的神經(jīng)信息。從細胞體延伸出像樹枝一樣向四處分散開來的許多突起,稱之為樹突,其作用是感受其他神經(jīng)元的傳遞信號。軸突末端有許多細的分枝,稱之為神經(jīng)末梢,每一根神經(jīng)末梢可以與其他神經(jīng)元連接,其連接的末端稱之為突觸。神經(jīng)元黑龍江工程學院本 科生畢業(yè)設(shè)計 6 之間的連接是靠突觸實現(xiàn)的,主要有:軸突與樹突、軸突與細胞體、軸突與軸突、樹突與樹突等連接形式。 神經(jīng)細胞單元的信息是寬度和幅度都相同的脈沖串,若某個神經(jīng)細胞興奮,其軸突輸出的脈沖串的頻率就高;若某個神經(jīng)細胞抑 制,其軸突輸出的脈沖串的頻率就低,甚至無脈沖發(fā)出。根據(jù)突觸對下一個神經(jīng)細胞的功能活動的影響,突觸又可分為興奮性的和抑制性的兩種。興奮性的突觸可能引起下一個神經(jīng)細胞興奮,抑制性的突觸使下一個神經(jīng)細胞抑制。 神經(jīng)細胞的細胞膜將細胞體內(nèi)外分開,從而使細胞體內(nèi)外有不同的電位,一般內(nèi)部電位比外部低,其內(nèi)外電位差稱之為膜電位。突觸使神經(jīng)細胞的膜電位發(fā)生變化,且電位的變化是可以累加的,該神經(jīng)細胞膜電位是它所有突觸產(chǎn)生的電位總和,當該神經(jīng)細胞的膜電位升高到超過一個閾值時,會產(chǎn)生一個脈沖,從而總和的膜電位直接影響該神經(jīng)細胞興 奮發(fā)放的脈沖數(shù)。突觸傳遞信息需要一定的延遲,對溫血動物,延遲時間為 0.3ms1.0ms。一般每個神經(jīng)細胞的軸突大約連接 100 1000 個其他神經(jīng)細胞。神經(jīng)細胞的信息就這樣從一個神經(jīng)細胞傳到另一個神經(jīng)細胞,且這種傳播是正向的,不允許逆向傳播。 2.2 人工神經(jīng)元模型 人工神經(jīng)網(wǎng)絡是在現(xiàn)代神經(jīng)生物學研究基礎(chǔ)上提出的模擬生物過程,反映人腦某些特性的一種計算結(jié)構(gòu)。它不是人腦神經(jīng)系統(tǒng)的真實描寫,而只是它的某種抽象、簡化和模擬。根據(jù)前面對生物神經(jīng)網(wǎng)絡的介紹可知,神經(jīng)元及其突觸是神經(jīng)網(wǎng)絡的基本器件。因此,模擬生 物神經(jīng)網(wǎng)絡應首先模擬生物神經(jīng)元。在人工神經(jīng)網(wǎng)絡中,神經(jīng)元常被稱為 “處理單元 ”,有時從網(wǎng)絡的觀點出發(fā)常把它稱為 “節(jié)點 ”。人工神經(jīng)元是對生物神經(jīng)元的一種形式化描述,它對生物神經(jīng)元的信息處理過程進行抽象,并用數(shù)學語言予以描述;對生物神經(jīng)元的結(jié)構(gòu)和功能進行模擬,并用模型圖予以表達。 目前人們提出的神經(jīng)元模型己有很多,其中最早提出且影響最大的,是 1943年心理學和數(shù)學家在分析總結(jié)神經(jīng)元基本特性的基礎(chǔ)上首先提出的 M-P 模型。該模型經(jīng)過不斷改進后,形成目前廣泛應用的神經(jīng)元模型形式。關(guān)于神經(jīng)元的信息處理機制,該模型在簡化 的基礎(chǔ)上提出以下 6 點假定進行描述: 1 每個神經(jīng)元都是一個多輸入單輸出的信息處理單元; 2 神經(jīng)元輸入分興奮性輸入和抑制性輸入兩種類型; 3 神經(jīng)元具有空間整合特性和閡值特性; 4 神經(jīng)元輸入與輸出間有固定的時滯,主要取決于突觸延擱; 黑龍江工程學院本 科生畢業(yè)設(shè)計 7 5 忽略時間整合作用和不應期; 6 神經(jīng)元本身是非時變的,即其突觸時延和突觸強度均為常數(shù)。 顯然,上述假定是對生物神經(jīng)元信息處理過程的簡化和概括,它清晰地述了生物神經(jīng)元信息處理的點,而且便于進行形式化表上述假定,可用圖 2.2 中的神元模型示意圖進行圖解表示。 圖 2.2 神經(jīng)元模型示意圖 圖 2.2 表明,如生物神經(jīng)元有許多激勵輸入一樣,人工神經(jīng)元也應該有許多的輸入信號 (圖中每個輸入的大小用確定數(shù)值 Xi 表示 ),它們同時輸人神經(jīng)元 k。生物神經(jīng)元具有不同的突觸性質(zhì)和突觸強度,其對輸入的影響是使有些輸入在神經(jīng)元產(chǎn)生脈沖輸出過程中所起的作用比另外一些輸入更為重要?;締卧纳窠?jīng)元模型包括三個基本要素:一組求和函數(shù) (對應于生物神經(jīng)元的突觸 )連接強度由各連接上的權(quán)值表示,權(quán)值為正表示啟動,為負表示抑制;一個求和單元 用于求取 各輸入信號的加權(quán)和 (線性組合 );一個非線性啟動函數(shù) 起非線性映射作用并將神經(jīng)元輸出幅度限制在一定范圍內(nèi) (一般限制在 (0, l)或 (-1, +l)之間 )。此外還有一個閾值 k(或偏置 ),見圖 2.3。 圖 2.3 基本神經(jīng)元模型 以上作用可分別以數(shù)學表達式表達出來: 1, , )pk i j j k k k k kju w x v u y v ( 式中: 1 2 px x x, , . , 為輸入信號, k 1 k 2 k pw w w, , . ,為神經(jīng)元 k 的權(quán)值, ku . Y )(f k ky ij 黑龍江工程學院本 科生畢業(yè)設(shè)計 8 ku 為線性組合結(jié)果, k 為閾值, f(.)為啟動函數(shù),為神經(jīng)元 k 的輸出。若把輸入的維數(shù)增加一維,增加一個新的連接,輸入為 x。 =-1(或 +1),權(quán)值為 0kw = k (或- k ),則可把閾值 k 包括進去。例如 0, ( )pk k j j k kju w x y v 啟動函數(shù) f ()可以有以下幾種形式: 閾值型變換函數(shù) (圖 2.4),單極性函數(shù)用下式定義: 1 ( 0 )()0 ( 0 )xfxx 具有這一作用方式的神經(jīng)元稱為閾值型神經(jīng)元,是神經(jīng)元模型中最簡單的一種,經(jīng)典的 M-P 模型就屬于這一類。 圖 2.4 閾值 型變換函數(shù) ( 2)非線性變換函數(shù) 非線性變換函數(shù)為實數(shù)域 R 到 0, l閉集的非減連續(xù)函數(shù),代表了狀態(tài)連續(xù)型神經(jīng)元模型。最常用的非線性變換函數(shù)是單極性的 Sigmoid 函數(shù)曲線,簡稱 S型函數(shù) (圖 2.5),其特點是函數(shù)本身及其導數(shù)都是連續(xù)的,因而在處理上十分方便。單極性 S 型函數(shù)定義如下: 1() 1 xfx e 有時也常采用雙極性 S 型函數(shù)等形式 1 1 -1 0 0 F(x) F(x) x x ( 2.1) ( 2.2) 黑龍江工程學院本 科生畢業(yè)設(shè)計 9 21( ) 111xxxefx ee ( 3)非線性變換函數(shù) 該函數(shù)的特點是神經(jīng)元的輸入與輸出在一定區(qū)間內(nèi)滿足線性關(guān)系。由于具有分段線性的特點,因而在實現(xiàn)上比較簡單。這類函數(shù)也稱為偽線性函數(shù),單極性分段線性變換函數(shù)的表達式如下: 式中, c 為線段的斜率,如圖 2.6。 圖 2.5 S 型變換函數(shù) 圖 2.6 分段線性變換函數(shù) ( 4)概率型變換函數(shù) 采用概率型變換函數(shù)的神經(jīng)元模型其輸入與輸出之間的關(guān)系是不確定的,需要一個隨機函數(shù)來描述其輸出狀態(tài)為 1 或為 0 的概率。設(shè)神經(jīng)元輸出為 1 的概率為 : 0 F(x) x x ( 2.3) ( 2.4) F(x) 黑龍江工程學院本 科生畢業(yè)設(shè)計 10 /1(1) 1xTP e 式中, T 稱為溫度參數(shù)。由于采用該變換函數(shù)的神經(jīng)元輸出狀態(tài)分布與熱力學中的玻爾茲曼分布相類似。 2.3 人工神經(jīng)網(wǎng)絡模型 神經(jīng)細胞是構(gòu)筑神經(jīng)系統(tǒng)和人腦的基本單元,它既具有結(jié)構(gòu)和功能的動態(tài)特性,又具有時間和空間的動態(tài)特性,其簡單有序的編排構(gòu)成了復雜的大腦。神經(jīng)細胞之間的通信是通過其具有可塑性的突觸禍合實現(xiàn)的,這使它們成為一個的整體。人工神經(jīng)網(wǎng)絡就是通過對人腦的神經(jīng)細胞一一的建模和連接,來探索模擬人腦神經(jīng)系統(tǒng)功能的模型,其任務是具有學習、聯(lián)想、記憶和模式識別等信息處理功能的系統(tǒng)。 在各種智能信息處理模型中,人工神經(jīng)網(wǎng)絡是最具有大腦風格的智能信息處理模型,許多網(wǎng)絡都能反映人腦功能的若干基本特性,但并非生物 系統(tǒng)的逼真描述,只是對其局部電路的某種模仿、簡化和抽象。 大量神經(jīng)元組成龐大的神經(jīng)網(wǎng)絡,才能實現(xiàn)對復雜信息的處理與存儲,并表現(xiàn)出各種優(yōu)越的特性。神經(jīng)網(wǎng)絡的強大功能與其大規(guī)模并行互連、非線性處理以及互連結(jié)構(gòu)的可塑性密切相關(guān)。必須按一定規(guī)則將神經(jīng)元連接成神經(jīng)網(wǎng)絡,并使網(wǎng)絡中各神經(jīng)元的連接權(quán)按一定規(guī)則變化。生物神經(jīng)網(wǎng)絡由數(shù)以億計的生物神經(jīng)元連接而戒,而人工神經(jīng)網(wǎng)絡限于物理實現(xiàn)的困難和為了計算簡便,是由相對少量的神經(jīng)元按一定規(guī)律構(gòu)成的網(wǎng)絡。人工神經(jīng)網(wǎng)絡中的神經(jīng)元常稱為節(jié)點或處理單元,每個節(jié)點均具有相同的結(jié)構(gòu),其動作 在時間和空間上均同步。 人工神經(jīng)網(wǎng)絡的模型有很多種,可以按照不同的方法分類。其中常見的兩種分類方法是:按網(wǎng)絡連接的拓撲結(jié)構(gòu)和按網(wǎng)絡內(nèi)部的信息流向分類。 ( 1)網(wǎng)絡拓撲結(jié)構(gòu)類型 神經(jīng)元之間的連接方式不同,網(wǎng)絡的拓撲結(jié)構(gòu)也不同。根據(jù)神經(jīng)元之間連接方式,可將神經(jīng)網(wǎng)絡結(jié)構(gòu)分為層次型結(jié)構(gòu) (圖 2.7)、互連型結(jié)構(gòu) (圖 2.8)兩大類。 ( 2)根據(jù)神經(jīng)網(wǎng)絡內(nèi)部信息的傳遞方向,可分為前饋型、反饋型網(wǎng)絡兩種類型。 ( 2.5) 黑龍江工程學院本 科生畢業(yè)設(shè)計 11 圖 2.7 層次結(jié)構(gòu)示意圖 圖 2.8 互聯(lián)結(jié)構(gòu)示意圖 2.4 人工神經(jīng)網(wǎng)絡 的學習 學習定義為:根據(jù)與環(huán)境的相互作用而發(fā)生的行為改變,其結(jié)果導致對外界刺激產(chǎn)生反應的新模式的建立。學習的過程離不開訓練,學習的過程就是一種經(jīng)過訓練而使個體在行為上產(chǎn)生較為持久改變的過程。學習效果隨著訓練量的增加而提高,這就是通過學習獲得的進步。 關(guān)于學習的神經(jīng)機制,涉及神經(jīng)元如何分布、處理和存儲信息。這樣的問題單用行為研究是不能回答的,必須把研究深入到細胞和分子水平。在大腦中,要建立功能性的神經(jīng)元連接,突觸形成是關(guān)鍵。神經(jīng)元之間的突觸聯(lián)系,其基本部分是先天就有的,但其他部分是由于學習過程中頻繁地給予刺激 而成長起來的。突觸的形成、穩(wěn)定與修飾均與刺激有關(guān),隨著外界給予的刺激性質(zhì)不同,能形成和改變神經(jīng)元間的突觸聯(lián)系。 人工神經(jīng)網(wǎng)絡的功能特性由其連接的拓撲結(jié)構(gòu)和突觸連接強度,即連接權(quán)值決定。神經(jīng)網(wǎng)絡全體連接權(quán)值的可用一個矩陣 W 表示,它的整體反映了神經(jīng)網(wǎng)絡對于所解決問題的知識存儲。神經(jīng)網(wǎng)絡能夠通過對樣本的學習訓練,不斷改變網(wǎng)絡的連接權(quán)值以及拓撲結(jié)構(gòu),以使網(wǎng)絡的輸出不斷地接近期望的輸出。這一過黑龍江工程學院本 科生畢業(yè)設(shè)計 12 程稱為神經(jīng)網(wǎng)絡的學習或訓練,其本質(zhì)是可變權(quán)值的動態(tài)調(diào)整。當大量處理單元集體進行權(quán)值調(diào)整時,網(wǎng)絡就呈現(xiàn)出 “智能 ”特性。其中有意義 的信息就分布地存儲在調(diào)節(jié)后的權(quán)值矩陣中。 神經(jīng)網(wǎng)絡的學習算法可以歸納為三類 :一是有導師學習:學習模式采用的是糾錯規(guī)則,學習訓練過程中需要不斷地給網(wǎng)絡成對提供一個輸入模式和一個期望網(wǎng)絡正確輸出的模式,將神經(jīng)網(wǎng)絡的實際輸出同期望輸出進行比較,并按一定的規(guī)則調(diào)整權(quán)值。另類是無導師學習:學習過程中,需要不斷地給網(wǎng)絡提供動態(tài)輸入信息。網(wǎng)絡能根據(jù)特有的內(nèi)部結(jié)構(gòu)和學習規(guī)則,在輸入信息流中發(fā)現(xiàn)任何可能存在的模式和規(guī)律,同時能根據(jù)網(wǎng)絡的功能和輸入信息調(diào)整權(quán)值,使網(wǎng)絡能對屬于同一類的模式進行自動分類。第三類是灌輸式學習:將網(wǎng)絡 設(shè)計成能記憶特別的例子,以后當給定有關(guān)該例子的輸人信息時,例子便被回憶起來。 2.5 本章小結(jié) 本章主要是對神經(jīng)網(wǎng)絡模型建立的基本闡述。是在生物神經(jīng)細胞的基礎(chǔ)上建立起來的。最重要的是神經(jīng)元得建立,然后是網(wǎng)絡模型的確定?,F(xiàn)在主要是 BP模型,為下面的設(shè)計做理論支持。 黑龍江工程學院本 科生畢業(yè)設(shè)計 13 第 3 章 BP 神經(jīng)網(wǎng)絡結(jié)構(gòu)及數(shù)學模型 3.1 BP 神經(jīng)網(wǎng)絡結(jié)構(gòu) 目前國外在工程上獲得實際應用的神經(jīng)元模型,大部分是 BP 網(wǎng)絡。這種網(wǎng)絡的可靠性及成熟性可以滿足工程應用的要求。如圖 3.1 所示。 圖 3.1 BP 神經(jīng)網(wǎng)絡結(jié)構(gòu)示意圖 在人工神經(jīng)網(wǎng)絡發(fā)展歷史中,很長一段時間里沒有找到隱層的連接權(quán)值調(diào)整問題的有效算法。直到誤差 反向傳播算法 ( BP 算法)的提出,成功地解決了求解非線性連續(xù)函數(shù)的 多層前饋神經(jīng)網(wǎng)絡 權(quán)重調(diào)整問題。 BP (Back Propagation)神經(jīng)網(wǎng)絡,即誤差反傳誤差反向傳播算法的學習過程,由信息的正向傳播和誤差的反向傳播兩個過程組成。輸入層各神經(jīng)元負責接收來自外界的輸入信息,并傳遞給中間層各神經(jīng)元;中間層是內(nèi)部信息處理層,負責信息變換,根據(jù)信息變化能力的需求,中間層可以設(shè)計為單隱層或者多隱層結(jié)構(gòu);最后一個隱層傳遞到輸出層各神經(jīng)元的信息,經(jīng)進一步處理后,完成一次學習的正向傳播處理過程,由輸出層向外界輸出信息處理結(jié)果。當實際輸出與期望輸出不符時,進入誤差的反向傳播階段。誤差通過輸出層,按誤差梯度下降的方式修正各層權(quán)值,向隱層、 輸入層逐層反傳。周而復始的信息正向傳播和誤差反向傳播過程,是各層權(quán)值不斷調(diào)整的過程,也是神經(jīng)網(wǎng)絡學習訓練的過程,此過程一直進行到網(wǎng)絡輸出的誤差減少到可以接受的程度,或者預先設(shè)定的學習次數(shù)為止。 BP 神經(jīng)網(wǎng)絡模型 BP 網(wǎng)絡模型包括其輸入輸出模型、作用函數(shù)模型、誤差計算模型和自學習模型。 黑龍江工程學院本 科生畢業(yè)設(shè)計 14 3.2 BP 神經(jīng)元 圖 2.2 給出了第 j 個基本 BP 神經(jīng)元(節(jié)點),它只模仿了生物神經(jīng)元所具有的三個最基本也是最重要的功能:加權(quán)、求和與轉(zhuǎn)移。其中 x1、 x2x ix n 分別代表來自神經(jīng)元 1、 2in 的輸入; wj1、 wj2w jiw jn 則分別表示神經(jīng)元 1、2in 與第 j 個神經(jīng)元的連接強度,即權(quán)值; bj 為閾值; f(.)為傳遞函數(shù); yj 為第 j 個神經(jīng)元的輸出。 第 j 個神經(jīng)元的凈輸入值 Sj 為: jjijini bxwxw 1js 圖 3.2 BP 神經(jīng)元 其中: Tni xxxxX . 21 , . 21 jnjijjj wwwwW 若視 1x0 , jj bw 0 ,即令 x 及 jw 包括 ox 及 0jw ,則 Tnxxxxx . 210 , . 210 jnjijjj wwwwwwj 于是節(jié)點 j 的凈輸入 Sj 可表示為: xwxwsjijinij 0 凈輸入 Sj 通過傳遞函數(shù)( Transfer Function) f()后,便得到第 j 個神經(jīng)元的輸出 yi: )()()( 0 xwFxwfsfy jijinijj ( 3.3) )(f 1xixnx ij jb js jy ( 3.2) ( 3.1) 黑龍江工程學院本 科生畢業(yè)設(shè)計 15 式中是單調(diào)上升函數(shù),而且必須是有界函數(shù),因為細胞傳遞的信號不可能無限增加,必有一最大值。 3.3 BP 網(wǎng)絡 BP 算法由數(shù)據(jù)流的前向計算(正向傳播)和誤差信號的反向傳播兩個過程構(gòu)成。正向傳播時,傳播方向為輸入層 隱層 輸出層,每層神經(jīng)元的狀態(tài)只影響下一層神經(jīng)元。若在輸出層得不到期望的輸出,則轉(zhuǎn)向誤差信號的反向傳播流程。通過這兩個過程的交替進行,在權(quán)矢量空間執(zhí)行誤差函數(shù)梯度下降策略,動態(tài)迭 代搜索一組權(quán)矢量,使網(wǎng)絡誤差函數(shù)達到最小值,從而完成信息提取和記憶過程。 3.3.1 正向傳播 圖 3.3 三層神經(jīng)網(wǎng)絡的拓撲結(jié)構(gòu) 設(shè) BP 網(wǎng)絡的輸入層有 n 個節(jié)點,隱層有 q 個節(jié)點,輸出層有 m個節(jié)點,輸入層與隱層之間的權(quán)值為 kiv ,隱層與輸出層之間的權(quán)值為 jkw ,如圖 3.3 所示。隱層的傳遞函數(shù)為 f1(),輸 出層的傳遞函數(shù)為 f2(),則隱層節(jié)點的輸出為(將閾值寫入求和項中): )(01 ikjnik xvfz k=1, 2, q ( 3.4) 輸出層節(jié)點的輸出為: )(y 02j kjknk zwf j=1, 2, m ( 3.5) 1x . ix .nx n q m 1y 1z V my jy W kz qz . j 黑龍江工程學院本 科生畢業(yè)設(shè)計 16 至此 B-P 網(wǎng)絡就完成了 n 維空間矢量對 m維空間的近似映射。 3.3.2 反向 傳播 ( 1) 定義誤差函數(shù) 輸入 p 個學習樣本,用 x1,x2.xp 來表示。第 p 個樣本輸入到網(wǎng)絡后得到輸出pjy ( j=1, 2, m )。采用平方型誤差函數(shù),于是得到第 p 個樣本的誤差 Ep: 21 )(21pjpjmj ytp ( 3.6) 式中: pjt為期望輸出。 對于 p 個樣本,全局誤差為: ppppjpjmjpp EytE 11121 )( ( 3.7) ( 2) 輸出層權(quán)值的變化 采 用 累 計 誤 差 BP 算 法 調(diào) 整 jkw , 使 全 局 誤 差 E 變 小 , 即 : pp wEwEjkjkpjkw 1 )( ( 3.8) 式中: 學習率 定義誤差信號為: jjjpjp SySEE Syj ( 3.9) 其中第一項: mj pjpjmj pjpjjjp ytytyyE 12121 )()( ( 3.10) 第二項: )(2 jjj sfsy ( 3.11) 是輸出層傳遞函數(shù)的偏微分。 于是: 黑龍江工程學院本 科生畢業(yè)設(shè)計 17 )()( 21yj jmjpjpj sfyt ( 3.12)kmj jpjpj zsfytkyjjkp zw 1 )(2)( ( 3.13) 于是輸出層各神經(jīng)元的權(quán)值調(diào)整公式為: kjmjpjpjppjk zfyt )( s)(w 211 ( 3.14) ( 3) 隱層權(quán)值的變化 )()(kjkjp11 EE pppppkjkj ( 3.15) 定義誤差信號為: kkxpk szzEsEp zk ( 3.16) 其中第一項: kjk zyytytzE pjpjmjpjpjmj )()(21z121kp ( 3.17) 依鏈定理有: jkjkjkj wsfzsz )(syy 2j ( 3.18) 第二項: )(1zk kksfs ( 3.19) 是隱層傳遞函數(shù)的偏微分。 于是: )()()( 12m1zk kjkjpjpjjsfwsfyt ( 3.20) 由鏈定理得:ikjkji xsfwsfytxEE pjpjmjzk )()()(ss 121kjpkjp kk ( 3.21) 從而得到隱層各神經(jīng)元的權(quán)值調(diào)整公式為: 黑龍江工程學院本 科生畢業(yè)設(shè)計 18 ij xsfwsfyt kjkpjpjmj)()()( 121p1pkj ( 3.22) 3.4 本章小結(jié) 本章主要是對 BP 神經(jīng)網(wǎng)絡的結(jié)構(gòu)和數(shù)學模型進行設(shè)計, BP 神經(jīng)網(wǎng)絡是現(xiàn)在應用最廣泛,也是現(xiàn)在最成熟的神經(jīng)網(wǎng)絡,它有學習的能力。主要是對數(shù)據(jù)的正向傳播和誤差數(shù)據(jù)的反向傳播。查閱相關(guān)資料得出數(shù)學模型。 黑龍江工程學院本 科生畢業(yè)設(shè)計 19 第 4 章 BP 網(wǎng)絡的自學習與預測編程 4.1 BP 網(wǎng)絡的學習與預測神經(jīng)編程 BP 網(wǎng)是一種具有三層以上的多層神經(jīng)元網(wǎng)絡,它的左、右各層之間各個神經(jīng)元實現(xiàn)全連接,即左層的每一個神經(jīng)元與右層的每個神經(jīng)元都有連接,而上下層各神經(jīng)元之間無連接。 BP 網(wǎng)絡按有教師學習方式進行訓練,當一對學習模式提供給網(wǎng)絡后,其神經(jīng)元的啟動值將從輸入層經(jīng)各中間層向輸出層傳播,在輸出層的各神經(jīng)元輸出對應于輸入模式的網(wǎng)絡相應。然后,將減少希望輸出與實際輸出誤差的原則,從輸出層經(jīng)各中間層、最后回到輸入層逐 層修正各連接權(quán)。由于這種修正過程是從輸出到輸入層逐層進行的,所以稱它為 “誤差逆?zhèn)鞑ニ惴?”。隨著這種誤差逆?zhèn)鞑ビ柧毜牟粩?,網(wǎng)絡對輸入模式回應的正確率也不斷提高。 由于 BP 網(wǎng)絡有處于中間位置的隱含層,并有相應的學習規(guī)則可循,可訓練這種網(wǎng)絡,使其具有對非線性模式的識別能力。特別是它的數(shù)學意義明確、步驟分明的學習算法,更使其具有廣泛的應用前景。 BP 網(wǎng)絡的學習過程主要由四部分組成: ( 1) 輸入模式順傳播(輸入模式由輸入層經(jīng)中間層向輸出層傳播計算); ( 2) 輸出誤差逆?zhèn)鞑ィㄝ敵龅恼`差由輸出層經(jīng)中間層傳向輸入層); ( 3) 循環(huán)記憶訓練 (模式順傳播與誤差逆?zhèn)鞑サ挠嬎氵^程反復交替循環(huán)進行); ( 4) 學習結(jié)果判別(判定全局誤差是否趨向極小值)。 4.2 輸入模式順傳播 這一過程主要是利用輸入模式求出它所對應的實際輸出。 設(shè)輸入模式矢量為12A k k nkna a a , , . , ( k =1, 2, , m ; m 學習模式對數(shù), n輸入層單元個數(shù))。 與輸入模式相對應的希望輸出為12k k kkqY y y y , , . , ( q 輸出層單元數(shù))。根據(jù) M-P 神經(jīng)元模型原理,計算中間層各神經(jīng)元的啟動值: 1.nj ij i jis W a ( j =1, 2, , p ) ( 4.1) 式中:ijW輸入層至中間層的連接權(quán); 黑龍江工程學院本 科生畢業(yè)設(shè)計 20 ij中間層單元的閾值; P 中間層單元數(shù)。 啟動函數(shù)采用 S 型函數(shù),即 1() 1 e x p ( )fx x ( 4.2) 這里之所以選用 S 型函數(shù)作為 BP 網(wǎng)絡神經(jīng)元的啟動函數(shù)是因為它是連續(xù)可分的,而且更接近于生物神經(jīng)元的信號輸出形式。 將上面的啟動值代入啟動函數(shù)中可以得到中間層 j 單元的 輸出值為: 11()1 e x p ( . )jj ni j i jib f sWa ( 4.3) 同理,可求出輸出端的啟動值和輸出值: 設(shè)輸出層第 t 個單元的啟動值為tl,則 1.pt jt j tjl V b r ( 4.4) 設(shè)輸出層 t 個單元的實際輸出值為tc,則 ()ttc f l ( t=1, 2, q ) 式中:jtV中間層至輸出層連接權(quán); t 輸出層單元閾值; f S 型啟動函數(shù)。 利用以上各式就可以計算出一個輸入模式的順傳播過程。 void wforward() int j,i; float sum; for (i=0;iwHN;i+) sum=0.0; 黑龍江工程學院本 科生畢業(yè)設(shè)計 21 for (j=0;jwIN;j+) sum+=wwji*wIVj; sum=sum-wsthi; wHVi=(float)(1.0f/(1.0f+exp(-sum); for (i=0;iwON;i+) sum=0.0; for (j=0;jwHN;j+) sum+=wvji*wHVj; sum=sum-wstoi; wOVi=(float)(1.0f/(1.0f+exp(-sum); 4.3 輸出誤差的逆?zhèn)鞑?在第一步的模式順傳播計算中得到了網(wǎng)絡的實際輸出值,當這些實際的輸出值與希望的輸出值不一樣或者說其誤差大于所限定的數(shù)值時,就要對網(wǎng)絡進行校正。 這里的校正是從后向前進行的,所以叫作誤差逆?zhèn)鞑?,計算時是從輸出層到中間層,再從中間層到輸入層。 輸出層的校正誤差為: )1()( ktktktktkt cccyd ( 4.5) 式中: t =1, 2, , m kty 希望輸出; 黑龍江工程學院本 科生畢業(yè)設(shè)計 22 ktc實際輸出; (.)f 對輸出層函數(shù)的導數(shù)。 中間層各單元的校正誤差為: )1(1jjqtktjtkj bbdve ( j =1, 2, , p k =1, 2, , m ) 對于輸出層至中間層連接權(quán)和輸出層閾值的校正量為 . kkjt t jV d b ( 4.6) . kttd ( 4.7) 其中, kjb中間層 j 單元的輸出; ktd輸出層的誤差校正。 j =1, 2, , p t =1, 2, , q k =1, 2, , m 中間層至輸入層的校正量為 .kkij j iW e a ( 4.8) . kjje ( 4.9) 式中: kje中間層 j 單元的校正誤差。 i =1, 2, , n 0 1(學習系數(shù))。 從這里可以 得出程序 : void wbackward() int j,i; float sum; for (i=0;iwON;i+) wdtoi=(wDi-wOVi)*wOVi*(1.0f-wOVi); for (i=0;iwHN;i+) 黑龍江工程學院本 科生畢業(yè)設(shè)計 23 sum=0.0; for (j=0;jwON;j+) sum+=wdtoj*wvij; wdthi=sum*wHVi*(1.0f-wHVi); for (j=0;jwON;j+) for (i=0;iwHN;i+) sum=wdtoj*wHVi; wdvij=(float)(weta*sum+walpha*wdv1ij); wvij+=wdvij; wdv1ij=wdvij; wdstoj=(float)(-weta*wdtoj+walpha*wdsto1j); wstoj+=wdstoj; wdsto1j=wdstoj; for (j=0;jwHN;j+) for (i=0;iwIN;i+) sum=wdthj*wIVi; wdwij=(float)(weta*sum+walpha*wdw1ij); wwij+=wdwij; wdw1ij=wdwij; wdsthj=(float)(-weta*wdthj+walpha*wdsth1j); 黑龍江工程學院本 科生畢業(yè)設(shè)計 24 wsthj+=wdsthj; wdsth1j=wdsthj; 4.4 循環(huán)記憶訓練 為使網(wǎng)絡的輸出誤差趨于極小值,對 BP 網(wǎng)絡輸入的每一組訓練模式,一般要經(jīng)過數(shù)百次甚至上萬次的循環(huán)記憶訓練,才能使網(wǎng)絡記住這一模式。 這種循環(huán)記憶訓練實際上就是反復重復上面介紹的輸入模式順傳播和輸出誤差逆?zhèn)鞑ミ^程。 流程圖如下: 圖 4.1 循環(huán)流程圖 由此流程圖得出 程序如下: 連接權(quán)及閾值初始化 計算中間層各單元的輸入、輸出 全部模式訓練完 是 學習模式提供給網(wǎng)絡 計算輸出層各單元的輸入、輸出 計算輸出層各單 元的校正誤差 計算中間層各單元的校正誤差 調(diào)整中間層至輸出層之間的連接權(quán)及輸出層各單元的輸出閾值 調(diào)整輸入層至中間層之間的連接權(quán)及輸出層各單元的輸出閾值 更新學習輸入模式 更新學習次數(shù) 誤差 或?qū)W習次數(shù) N 學習結(jié)束 開 始 黑龍江工程學院本 科生畢業(yè)設(shè)計 25 void wTrain() int k,j,i,ct=0; float errwON; printf(n); printf(n); printf(It is time to training-!n); printf(n); printf(n); printf(This calculation needs about two minutes,n); printf(n); printf(n); printf(Please wait patiently!n); winitwt(); winput(); do for(i=0;iwON;i+) erri=0.0; for (k=0;kwPN;k+) for (i=0;iwIN;i+) wIVi=wIPik; for (i=0;iwON;i+) wDi=wDPik; 黑龍江工程學院本 科生畢業(yè)設(shè)計 26 wforward(); for (i=0;iwON;i+) erri+=(wDi-wOVi)*(wDi-wOVi); wbackwd(); ct+; while (ctwSERROR); if (wfpwt=fopen(wszWt,w)=NULL) /*printf(Cant write Weight data file:%s!,wszWt);*/ exit(1); for (i=0;iwHN;i+) for (j=0;jwIN;j+) fprintf(wfpwt,%e,%e,%en,wwji,wdwji,wdw1ji); fprintf(wfpwt,%e,%e,%en,wsthi,wdsthi,wdsth1i); for (i=0;iwON;i+) for (j=0;jwHN;j+) fprintf(wfpwt,%e,%e,%en,wvji,wdvji,wdv1ji); fprintf(wfpwt,%e,%e,%en,wstoi,wdstoi,wdsto1i); 黑龍江工程學院本 科生畢業(yè)設(shè)計 27 if (wfperr=fopen(wszerr,w)=NULL) /* printf(Cant write Weight data file:%s!,wszWt);*/ exit(1); for(i=0;iwON;i+) erri=erri/(wPN*wON); erri=(float)sqrt(erri); fprintf(wfperr,%en,erri); /*printf(循環(huán) %4d 次后 err%d為 : %en,ct,i,erri);*/ fclose(wfperr); fclose(wfpwt); 4.5 學習結(jié)果的判別 當每次循環(huán)記憶訓練結(jié)束后,都要進行學習結(jié)果的判別。判別的目的主要是檢查輸出誤差是否已經(jīng)小到允許的程度。如果小到允許的程度,就可以結(jié)束這個學習過程,否則還要進行循環(huán)訓練。學習或者說訓練的過程是網(wǎng)絡全局誤差趨向于極小值的過程。 在網(wǎng)絡的學習階段,通過調(diào)整所有連接權(quán)和閾 值使系統(tǒng)的平均誤差 E 達到最小, 訓練結(jié)束。 21)(21 kknktE ( 4.10) 式中: kt計算的輸出值 ; k 實際的輸出值 ; n樣本數(shù)。 黑龍江工程學院本 科生畢業(yè)設(shè)計 28 一些數(shù)據(jù)不止一個數(shù)量級,存在奇異樣本數(shù)據(jù),訓練前要對輸入?yún)?shù)進行歸一化處理。歸一化處理 VC 程序如下: float wpfMap(float x,float m, float n, float h, float l) float wxmin=m, wxmax=n, wymin=h, wymax=l; float A,B,y; A=(wymax-wymin)/(wxmax-wxmin); B=(wxmax*wymin-wxmin*wymax)/(wxmax-wxmin); y=x*A+B; return (y); 所以對預測判斷的程序如下: void wTest() int k,j,i; float errwON; float x; /*printf(Testing-!n);*/ if (wfpwt=fopen(wszWt,r)=NULL) printf(Cant open Weight data file:%s!,wszWt); exit(1); for (i=0;iwHN;i+) for (j=0;jwIN;j+) 黑龍江工程學院本 科生畢業(yè)設(shè)計 29 fscanf(wfpwt,%e,%e,%e,&wwji,&wdwji,&wdw1ji); fscanf(wfpwt,%e,%e,%e,&wsthi,&wdsthi,&wdsth1i); for (i=0;iwON;i+) for (j=0;jwHN;j+) fscanf(wfpwt,%e,%e,%e,&wvji,&wdvji,&wdv1ji); fscanf(wfpwt,%e,%e,%e,&wstoi,&wdstoi,&wdsto1i); fclose(wfpwt); if (wfpout=fopen(wszOut,w)=NULL) printf(Cant write output data file:%s!,wszOut); exit(1); if (wfptest=fopen(wszTest,r)=NULL) printf(Cant open test data file:%s!,wszTest); exit(1); if(wfparea=fopen(wszArea,r)=NULL) printf(cant open file %sn,wszArea); exit(1); for (i=0;iwIN+3;i+) 黑龍江工程學院本 科生畢業(yè)設(shè)計 30 fscanf(wfparea,%f%f%f%f,&wxmini,&wxmaxi,&wymini,&wymaxi); for (i=0;iwTN;i+) for (j=0;jwIN;j+) float m=wxminj; float n=wxmaxj; float h=wyminj; float l=wymaxj; fscanf(wfptest,%e,&wITji); x=wITji; wITji=wpfMap(x,m,n,h,l); for(k=0;kwON;k+) float m=wxminwIN+k; float n=wxmaxwIN+k; float h=wyminwIN+k; float l=wymaxwIN+k; fscanf(wfptest,%e,&wDTki); x=wDTki; wDTki=wpfMap(x,m,n,h,l); for (i=0;iwON;i+) erri=0.0; for (k=0;kwTN;k+) 黑龍江工程學院本 科生畢業(yè)設(shè)計 31 for (i=0;iwIN;i+) wIVi=wITik; for (i=0;iwON;i+) wDi=wDTik; wforward(); for (i=0;iwON;i+) float m=wxminwIN+i; float n=wxmaxwIN+i; float h=wyminwIN+i; float l=wymaxwIN+i; x=wOVi; wOVi=wpbMap(x,m,n,h,l); x=wDi; wDi=wpbMap(x,m,n,h,l); erri+=(wDi-wOVi)*(wDi-wOVi); fprintf(wfpout,%8.2ft,wOVi); fprintf(wfpout,%8.2ft,wDi); fprintf(wfpout,%10.4ft,(wDi-wOVi)/wDi); fprintf(wfpout,n); if (wfperr=fopen(wszerr,w)=NULL) /* printf(Cant write Weight data file:%s!,wszWt);*/ 黑龍江工程學院本 科生畢業(yè)設(shè)計 32 exit(1); for(i=0;iwON;i+) erri=erri/(wPN*wON); erri=(float)sqrt(erri); fprintf(wfperr,%en,erri); /*printf(循環(huán) %4d 次后 err%d為 : %en,ct,i,erri);*/ fclose(wfperr); fclose(wfptest); fclose(wfparea); fclose(wfpout); 4.6 對數(shù)據(jù)的預測程序編寫 最后的預測程序就是對前面訓練好的網(wǎng)絡的實現(xiàn),先把調(diào)整好的閾值和權(quán)值送進檔,然后把要預測的數(shù)據(jù)放進預測檔中進行正向的順序運算,最后得出預測數(shù)據(jù)。得到如下程序 : void wpre() int k,j,i; float errwON; float x; /*printf(predicting-!n);*/ if (wfpwt=fopen(wszWt,r)=NULL) printf(Cant open Weight data file:%s!,wszWt); exit(1); /read the satisfied wt value for (i=0;iwHN;i+) 黑龍江工程學院本 科生畢業(yè)設(shè)計 33 for (j=0;jwIN;j+) fscanf(wfpwt,%e,%e,%e,&wwji,&wdwji,&wdw1ji); fscanf(wfpwt,%e,%e,%e,&wsthi,&wdsthi,&wdsth1i); for (i=0;iwON;i+) for (j=0;jwHN;j+) fscanf(wfpwt,%e,%e,%e,&wvji,&wdvji,&wdv1ji); fscanf(wfpwt,%e,%e,%e,&wstoi,&wdstoi,&wdsto1i); fclose(wfpwt); if (wfpout1=fopen(wszOut1,w)=NULL) printf(Cant write output data file:%s!,wszOut1); exit(1); if (wfppre=fopen(wszpre,r)=NULL) printf(Cant open pre data file:%s!,wszpre);/wszTest); exit(1); if(wfparea=fopen(wszArea,r)=NULL) printf(cant open file %sn,wszArea); exit(1); for (i=0;iwIN+3;i+) 黑龍江工程學院本 科生畢業(yè)設(shè)計 34 fscanf(wfparea,%f%f%f%f,&wxmini,&wxmaxi,&wymini,&wymaxi); for (i=0;iwPREN;i+) for (j=0;jwIN;j+) float m=wxminj; float n=wxmaxj; float h=wyminj; float l=wymaxj; fscanf(wfppre,%e,&wITji); x=wITji; wITji=wpfMap(x,m,n,h,l); for(k=0;kwON;k+) float m=wxminwIN+k; float n=wxmaxwIN+k; float h=wyminwIN+k; float l=wymaxwIN+k; fscanf(wfppre,%e,&wDTki); x=wDTki; wDTki=wpfMap(x,m,n,h,l); for (i=0;iwON;i+) erri=0.0; for (k=0;kwPREN;k+) for (i=0;iwIN;i+) 黑龍江工程學院本 科生畢業(yè)設(shè)計 35 wIVi=wITik; for (i=0;iwON;i+) wDi=wDTik; wforward(); for (i=0;iwON;i+) float m=wxminwIN+i; float n=wxmaxwIN+i; float h=wyminwIN+i; float l=wymaxwIN+i; x=wOVi; wOVi=wpbMap(x,m,n,h,l); x=wDi; wDi=wpbMap(x,m,n,h,l); erri+=(wDi-wOVi)*(wDi-wOVi); fprintf(wfpout1,%8.2ft,wOVi); printf(%8.2f,wOVi); fprintf(wfpout1,%8.2ft,wDi); printf(%8.2f,wDi); fprintf(wfpout1,%10.4ft,(wDi-wOVi)/wDi); printf(%8.2f,(wDi-wOVi)/wDi); fprintf(wfpout1,n); if (wfperr=fopen(wszerr,w)=NULL) /* printf(Cant write Weight data file:%s!,wszWt);*/ exit(1); for(i=0;iwON;i+) 黑龍江工程學院本 科生畢業(yè)設(shè)計 36 erri=erri/(wPN*wON); erri=(float)sqrt(erri); fprintf(wfperr,%en,erri); /*printf(循環(huán) %4d 次后 err%d為 : %en,ct,i,erri);*/ fclose(wfperr); fclose(wfppre); fclose(wfparea); fclose(wfpout1); 4.7 本章小結(jié) 本章主要是對前面說建立的 BP 網(wǎng)絡進程程序的編寫,包括網(wǎng)絡的正向訓練程序,網(wǎng)絡的誤差傳播程序,訓練循環(huán)程序,結(jié)果判斷程序和預測程序。 特別是對數(shù)據(jù)歸一化的處理,在程序中起了很重要的作用。 黑龍江工程學院本 科生畢業(yè)設(shè)計 37 第五章 BP 神經(jīng)網(wǎng)絡在汽車 保有量預測中的應用 5.1 汽車保有量預測的意義 在城市道路交通規(guī)劃中 , 汽車保有量預測是規(guī)劃過程中一項基礎(chǔ)工作??茖W準確地把握未來城市汽車發(fā)展保有量對做好交通流生成預測 , 宏觀上把握路網(wǎng)容量供需關(guān)系和道路交通流的分布分配 , 構(gòu)建完善的路網(wǎng)規(guī)劃具有十分重要的意義。傳統(tǒng)的汽車保有量預測方法主要有外推法 ,因果法 , 判斷分析法等。現(xiàn)行的預測方法雖各有其優(yōu)點 , 但大多存在數(shù)據(jù)擬合度不高 , 外推性不強 , 預測結(jié)果與實際情況有較大偏差等問題。為此 , 采用 BP神經(jīng)網(wǎng)絡分析構(gòu)造了汽車保有量預測模型 , 將原來有較多的 輸入變量群進行主成分分析 , 利用線性變換得到一組個數(shù)較少的、彼此不相關(guān)的新輸入變量 , 再用新輸入變量作為 BP神經(jīng)網(wǎng)絡的輸入 , 從而簡化了輸入變量 , 提高了神經(jīng)網(wǎng)絡性能。還利用實際數(shù)據(jù)對某市汽車保有量進行了預測。 5.2 基于 BP神經(jīng)網(wǎng)絡的汽車保有量預測模型 5.2.1 汽車保有量主要影響因素分析 決定某一城市的汽車保有量相關(guān)影響因素很多 , 其中最主要的是城市人口及城市社會經(jīng)濟發(fā)展水平。城市人口增多 , 人們的出行量就會增多 , 對汽車特別是客車的需求就會越大 , 因而必然導致保有量的增長 , 以滿足需求。 經(jīng)濟是交通的源需求 , 城市經(jīng)濟發(fā)展水平可以從多項指標上反映出來 , 如國內(nèi)生產(chǎn)總值、人均國內(nèi)生產(chǎn)總值、工業(yè)總產(chǎn)值、城市的財政收入、城市居民人均生活費收入與支出等。任何一個城市汽車保有量都與這些經(jīng)濟發(fā)展指標相關(guān) , 并受其制約 , 特別在經(jīng)濟發(fā)展階段 , 經(jīng)濟水平是決定汽車保有量最主要的方面。在綜合考慮影響汽車保有量的諸多因素 , 本文選取人口、 GDP、人均 GDP、工業(yè)總產(chǎn)值、財政收入、居民年均收入、居民年均支出等 7 個因素作為影響指標 。 5.2.2 汽車保有量預測模型 以 7個因素為輸入因子的 BP 神經(jīng)網(wǎng)絡模擬 。由于理論上已經(jīng)證明了三層網(wǎng)絡模型對于非線性系統(tǒng)具有較好的建模能力 , 因此 , 任一連續(xù)函數(shù)或映射均可由1 個三層神經(jīng)網(wǎng)絡實現(xiàn)。在構(gòu)建汽車保有量預測神經(jīng)網(wǎng)絡模型 , 網(wǎng)絡層數(shù)的選擇上 , 選用三層網(wǎng)絡結(jié)構(gòu) , 即 1 個輸入層 , 1 個隱含層 , 1 個輸出層 , 由于輸入層與輸出層神經(jīng)元個數(shù)的增加會增加網(wǎng)絡的表達能力 , 同時還會增加其收斂速度和黑龍江工程學院本 科生畢業(yè)設(shè)計 38 噪聲干擾 , 為使模型既具有理論價值又有可操作性 , 在綜合考慮汽車保有量影響因素的條件下 , 將 7個因素作為輸入層 , 輸入層有 7個神經(jīng)元 , 隱層有 10個神經(jīng)元 , 輸出層有 1 個神經(jīng) 元 , 輸出層為預測目標變量 , 即汽車保有量。 5.2.3 實例分析 下面以表 5.1 所列的某城市汽車保有量歷史數(shù)據(jù)為例闡述本文的預測方法。 表 5.1 某城市汽車保有量歷史數(shù)據(jù) 汽車保有量影響因素的有人口、 GDP、人均 GDP、工業(yè)總產(chǎn)值、財政收入、居民年均收入、居民年均支出等 7 個因素分別為 x 1、 x 2、 x 3、 x 4、 x 5、 x 6、 x 7汽車保有量隨年份的變化。 步驟如下所示: ( 1)打開 VC 進行程序調(diào)試和鏈接,如圖 5.1 所示。 圖 5.1 調(diào)試后的界面 年 份 人口 /萬人 GDP /萬元 人均GDP/元 工業(yè)總產(chǎn)值 /萬元 財政收入 /萬元 居民年均收入 /元 居民年均支出 /元 汽車保有量/veh 1990 87.9 306867 1652 409349 45494 1149 1023 58041 1991 89.5 358603 1917 446049 49499 1281 1202 59621 1992 90.2 437264 2321 539506 56619 1544 1413 62713 1993 91.2 627291 3296 711990 71964 1981 1782 67725 1994 92.8 851636 4419 903052 85157 2735 2372 68930 1995 93.9 962001 4946 931036 95395 3008 2785 69802 1996 96.3 1137364 5762 1060061 133880 3934 3171 71311 1997 98.6 1280130 6388 1211278 154249 4335 3398 73521 1998 101.8 1430164 6977 1403100 173219 4739 3674 76308 1999 104.9 15642

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論