① 人工神經網路綜述
文章主要分為:
一、人工神經網路的概念;
二、人工神經網路的發展歷史;
三、人工神經網路的特點;
四、人工神經網路的結構。
。。
人工神經網路(Artificial Neural Network,ANN)簡稱神經網路(NN),是基於生物學中神經網路的基本原理,在理解和抽象了人腦結構和外界刺激響應機制後,以網路拓撲知識為理論基礎,模擬人腦的神經系統對復雜信息的處理機制的一種數學模型。該模型以並行分布的處理能力、高容錯性、智能化和自學習等能力為特徵,將信息的加工和存儲結合在一起,以其獨特的知識表示方式和智能化的自適應學習能力,引起各學科領域的關注。它實際上是一個有大量簡單元件相互連接而成的復雜網路,具有高度的非線性,能夠進行復雜的邏輯操作和非線性關系實現的系統。
神經網路是一種運算模型,由大量的節點(或稱神經元)之間相互聯接構成。每個節點代表一種特定的輸出函數,稱為激活函數(activation function)。每兩個節點間的連接都代表一個對於通過該連接信號的加權值,稱之為權重(weight),神經網路就是通過這種方式來模擬人類的記憶。網路的輸出則取決於網路的結構、網路的連接方式、權重和激活函數。而網路自身通常都是對自然界某種演算法或者函數的逼近,也可能是對一種邏輯策略的表達。神經網路的構築理念是受到生物的神經網路運作啟發而產生的。人工神經網路則是把對生物神經網路的認識與數學統計模型相結合,藉助數學統計工具來實現。另一方面在人工智慧學的人工感知領域,我們通過數學統計學的方法,使神經網路能夠具備類似於人的決定能力和簡單的判斷能力,這種方法是對傳統邏輯學演算的進一步延伸。
人工神經網路中,神經元處理單元可表示不同的對象,例如特徵、字母、概念,或者一些有意義的抽象模式。網路中處理單元的類型分為三類:輸入單元、輸出單元和隱單元。輸入單元接受外部世界的信號與數據;輸出單元實現系統處理結果的輸出;隱單元是處在輸入和輸出單元之間,不能由系統外部觀察的單元。神經元間的連接權值反映了單元間的連接強度,信息的表示和處理體現在網路處理單元的連接關系中。人工神經網路是一種非程序化、適應性、大腦風格的信息處理,其本質是通過網路的變換和動力學行為得到一種並行分布式的信息處理功能,並在不同程度和層次上模仿人腦神經系統的信息處理功能。
神經網路,是一種應用類似於大腦神經突觸連接結構進行信息處理的數學模型,它是在人類對自身大腦組織結合和思維機制的認識理解基礎之上模擬出來的,它是根植於神經科學、數學、思維科學、人工智慧、統計學、物理學、計算機科學以及工程科學的一門技術。
在介紹神經網路的發展歷史之前,首先介紹一下神經網路的概念。神經網路主要是指一種仿造人腦設計的簡化的計算模型,這種模型中包含了大量的用於計算的神經元,這些神經元之間會通過一些帶有權重的連邊以一種層次化的方式組織在一起。每一層的神經元之間可以進行大規模的並行計算,層與層之間進行消息的傳遞。
下圖展示了整個神經網路的發展歷程:
神經網路的發展有悠久的歷史。其發展過程大致可以概括為如下4個階段。
(1)、M-P神經網路模型:20世紀40年代,人們就開始了對神經網路的研究。1943 年,美國心理學家麥克洛奇(Mcculloch)和數學家皮茲(Pitts)提出了M-P模型,此模型比較簡單,但是意義重大。在模型中,通過把神經元看作個功能邏輯器件來實現演算法,從此開創了神經網路模型的理論研究。
(2)、Hebb規則:1949 年,心理學家赫布(Hebb)出版了《The Organization of Behavior》(行為組織學),他在書中提出了突觸連接強度可變的假設。這個假設認為學習過程最終發生在神經元之間的突觸部位,突觸的連接強度隨之突觸前後神經元的活動而變化。這一假設發展成為後來神經網路中非常著名的Hebb規則。這一法則告訴人們,神經元之間突觸的聯系強度是可變的,這種可變性是學習和記憶的基礎。Hebb法則為構造有學習功能的神經網路模型奠定了基礎。
(3)、感知器模型:1957 年,羅森勃拉特(Rosenblatt)以M-P 模型為基礎,提出了感知器(Perceptron)模型。感知器模型具有現代神經網路的基本原則,並且它的結構非常符合神經生理學。這是一個具有連續可調權值矢量的MP神經網路模型,經過訓練可以達到對一定的輸入矢量模式進行分類和識別的目的,它雖然比較簡單,卻是第一個真正意義上的神經網路。Rosenblatt 證明了兩層感知器能夠對輸入進行分類,他還提出了帶隱層處理元件的三層感知器這一重要的研究方向。Rosenblatt 的神經網路模型包含了一些現代神經計算機的基本原理,從而形成神經網路方法和技術的重大突破。
(4)、ADALINE網路模型: 1959年,美國著名工程師威德羅(B.Widrow)和霍夫(M.Hoff)等人提出了自適應線性元件(Adaptive linear element,簡稱Adaline)和Widrow-Hoff學習規則(又稱最小均方差演算法或稱δ規則)的神經網路訓練方法,並將其應用於實際工程,成為第一個用於解決實際問題的人工神經網路,促進了神經網路的研究應用和發展。ADALINE網路模型是一種連續取值的自適應線性神經元網路模型,可以用於自適應系統。
人工智慧的創始人之一Minsky和Papert對以感知器為代表的網路系統的功能及局限性從數學上做了深入研究,於1969年發表了轟動一時《Perceptrons》一書,指出簡單的線性感知器的功能是有限的,它無法解決線性不可分的兩類樣本的分類問題,如簡單的線性感知器不可能實現「異或」的邏輯關系等。這一論斷給當時人工神經元網路的研究帶來沉重的打擊。開始了神經網路發展史上長達10年的低潮期。
(1)、自組織神經網路SOM模型:1972年,芬蘭的KohonenT.教授,提出了自組織神經網路SOM(Self-Organizing feature map)。後來的神經網路主要是根據KohonenT.的工作來實現的。SOM網路是一類無導師學習網路,主要用於模式識別﹑語音識別及分類問題。它採用一種「勝者為王」的競爭學習演算法,與先前提出的感知器有很大的不同,同時它的學習訓練方式是無指導訓練,是一種自組織網路。這種學習訓練方式往往是在不知道有哪些分類類型存在時,用作提取分類信息的一種訓練。
(2)、自適應共振理論ART:1976年,美國Grossberg教授提出了著名的自適應共振理論ART(Adaptive Resonance Theory),其學習過程具有自組織和自穩定的特徵。
(1)、Hopfield模型:1982年,美國物理學家霍普菲爾德(Hopfield)提出了一種離散神經網路,即離散Hopfield網路,從而有力地推動了神經網路的研究。在網路中,它首次將李雅普諾夫(Lyapunov)函數引入其中,後來的研究學者也將Lyapunov函數稱為能量函數。證明了網路的穩定性。1984年,Hopfield 又提出了一種連續神經網路,將網路中神經元的激活函數由離散型改為連續型。1985 年,Hopfield和Tank利用Hopfield神經網路解決了著名的旅行推銷商問題(Travelling Salesman Problem)。Hopfield神經網路是一組非線性微分方程。Hopfield的模型不僅對人工神經網路信息存儲和提取功能進行了非線性數學概括,提出了動力方程和學習方程,還對網路演算法提供了重要公式和參數,使人工神經網路的構造和學習有了理論指導,在Hopfield模型的影響下,大量學者又激發起研究神經網路的熱情,積極投身於這一學術領域中。因為Hopfield 神經網路在眾多方面具有巨大潛力,所以人們對神經網路的研究十分地重視,更多的人開始了研究神經網路,極大地推動了神經網路的發展。
(2)、Boltzmann機模型:1983年,Kirkpatrick等人認識到模擬退火演算法可用於NP完全組合優化問題的求解,這種模擬高溫物體退火過程來找尋全局最優解的方法最早由Metropli等人1953年提出的。1984年,Hinton與年輕學者Sejnowski等合作提出了大規模並行網路學習機,並明確提出隱單元的概念,這種學習機後來被稱為Boltzmann機。
Hinton和Sejnowsky利用統計物理學的感念和方法,首次提出的多層網路的學習演算法,稱為Boltzmann 機模型。
(3)、BP神經網路模型:1986年,儒默哈特(D.E.Ru melhart)等人在多層神經網路模型的基礎上,提出了多層神經網路權值修正的反向傳播學習演算法----BP演算法(Error Back-Propagation),解決了多層前向神經網路的學習問題,證明了多層神經網路具有很強的學習能力,它可以完成許多學習任務,解決許多實際問題。
(4)、並行分布處理理論:1986年,由Rumelhart和McCkekkand主編的《Parallel Distributed Processing:Exploration in the Microstructures of Cognition》,該書中,他們建立了並行分布處理理論,主要致力於認知的微觀研究,同時對具有非線性連續轉移函數的多層前饋網路的誤差反向傳播演算法即BP演算法進行了詳盡的分析,解決了長期以來沒有權值調整有效演算法的難題。可以求解感知機所不能解決的問題,回答了《Perceptrons》一書中關於神經網路局限性的問題,從實踐上證實了人工神經網路有很強的運算能力。
(5)、細胞神經網路模型:1988年,Chua和Yang提出了細胞神經網路(CNN)模型,它是一個細胞自動機特性的大規模非線性計算機模擬系統。Kosko建立了雙向聯想存儲模型(BAM),它具有非監督學習能力。
(6)、Darwinism模型:Edelman提出的Darwinism模型在90年代初產生了很大的影響,他建立了一種神經網路系統理論。
(7)、1988年,Linsker對感知機網路提出了新的自組織理論,並在Shanon資訊理論的基礎上形成了最大互信息理論,從而點燃了基於NN的信息應用理論的光芒。
(8)、1988年,Broomhead和Lowe用徑向基函數(Radialbasis function, RBF)提出分層網路的設計方法,從而將NN的設計與數值分析和線性適應濾波相掛鉤。
(9)、1991年,Haken把協同引入神經網路,在他的理論框架中,他認為,認知過程是自發的,並斷言模式識別過程即是模式形成過程。
(10)、1994年,廖曉昕關於細胞神經網路的數學理論與基礎的提出,帶來了這個領域新的進展。通過拓廣神經網路的激活函數類,給出了更一般的時滯細胞神經網路(DCNN)、Hopfield神經網路(HNN)、雙向聯想記憶網路(BAM)模型。
(11)、90年代初,Vapnik等提出了支持向量機(Supportvector machines, SVM)和VC(Vapnik-Chervonenkis)維數的概念。
經過多年的發展,已有上百種的神經網路模型被提出。
深度學習(Deep Learning,DL)由Hinton等人於2006年提出,是機器學習的一個新領域。深度學習本質上是構建含有多隱層的機器學習架構模型,通過大規模數據進行訓練,得到大量更具代表性的特徵信息。深度學習演算法打破了傳統神經網路對層數的限制,可根據設計者需要選擇網路層數。
突觸是神經元之間相互連接的介面部分,即一個神經元的神經末梢與另一個神經元的樹突相接觸的交界面,位於神經元的神經末梢尾端。突觸是軸突的終端。
大腦可視作為1000多億神經元組成的神經網路。神經元的信息傳遞和處理是一種電化學活動.樹突由於電化學作用接受外界的刺激,通過胞體內的活動體現為軸突電位,當軸突電位達到一定的值則形成神經脈沖或動作電位;再通過軸突末梢傳遞給其它的神經元.從控制論的觀點來看;這一過程可以看作一個多輸入單輸出非線性系統的動態過程。
神經元的功能特性:(1)時空整合功能;(2)神經元的動態極化性;(3)興奮與抑制狀態;(4)結構的可塑性;(5)脈沖與電位信號的轉換;(6)突觸延期和不應期;(7)學習、遺忘和疲勞。
神經網路從兩個方面模擬大腦:
(1)、神經網路獲取的知識是從外界環境中學習得來的。
(2)、內部神經元的連接強度,即突觸權值,用於儲存獲取的知識。
神經網路系統由能夠處理人類大腦不同部分之間信息傳遞的由大量神經元連接形成的拓撲結構組成,依賴於這些龐大的神經元數目和它們之間的聯系,人類的大腦能夠收到輸入的信息的刺激由分布式並行處理的神經元相互連接進行非線性映射處理,從而實現復雜的信息處理和推理任務。
對於某個處理單元(神經元)來說,假設來自其他處理單元(神經元)i的信息為Xi,它們與本處理單元的互相作用強度即連接權值為Wi, i=0,1,…,n-1,處理單元的內部閾值為θ。那麼本處理單元(神經元)的輸入為:
,而處理單元的輸出為:
式中,xi為第i個元素的輸入,wi為第i個處理單元與本處理單元的互聯權重即神經元連接權值。f稱為激活函數或作用函數,它決定節點(神經元)的輸出。θ表示隱含層神經節點的閾值。
神經網路的主要工作是建立模型和確定權值,一般有前向型和反饋型兩種網路結構。通常神經網路的學習和訓練需要一組輸入數據和輸出數據對,選擇網路模型和傳遞、訓練函數後,神經網路計算得到輸出結果,根據實際輸出和期望輸出之間的誤差進行權值的修正,在網路進行判斷的時候就只有輸入數據而沒有預期的輸出結果。神經網路一個相當重要的能力是其網路能通過它的神經元權值和閾值的不斷調整從環境中進行學習,直到網路的輸出誤差達到預期的結果,就認為網路訓練結束。
對於這樣一種多輸入、單輸出的基本單元可以進一步從生物化學、電生物學、數學等方面給出描述其功能的模型。利用大量神經元相互連接組成的人工神經網路,將顯示出人腦的若干特徵,人工神經網路也具有初步的自適應與自組織能力。在學習或訓練過程中改變突觸權重wij值,以適應周圍環境的要求。同一網路因學習方式及內容不同可具有不同的功能。人工神經網路是一個具有學習能力的系統,可以發展知識,以至超過設計者原有的知識水平。通常,它的學習(或訓練)方式可分為兩種,一種是有監督(supervised)或稱有導師的學習,這時利用給定的樣本標准進行分類或模仿;另一種是無監督(unsupervised)學習或稱無導師學習,這時,只規定學習方式或某些規則,而具體的學習內容隨系統所處環境(即輸入信號情況)而異,系統可以自動發現環境特徵和規律性,具有更近似於人腦的功能。
在人工神經網路設計及應用研究中,通常需要考慮三個方面的內容,即神經元激活函數、神經元之間的連接形式和網路的學習(訓練)。
② 神經網路BP模型
一、BP模型概述
誤差逆傳播(Error Back-Propagation)神經網路模型簡稱為BP(Back-Propagation)網路模型。
Pall Werbas博士於1974年在他的博士論文中提出了誤差逆傳播學習演算法。完整提出並被廣泛接受誤差逆傳播學習演算法的是以Rumelhart和McCelland為首的科學家小組。他們在1986年出版「Parallel Distributed Processing,Explorations in the Microstructure of Cognition」(《並行分布信息處理》)一書中,對誤差逆傳播學習演算法進行了詳盡的分析與介紹,並對這一演算法的潛在能力進行了深入探討。
BP網路是一種具有3層或3層以上的階層型神經網路。上、下層之間各神經元實現全連接,即下層的每一個神經元與上層的每一個神經元都實現權連接,而每一層各神經元之間無連接。網路按有教師示教的方式進行學習,當一對學習模式提供給網路後,神經元的激活值從輸入層經各隱含層向輸出層傳播,在輸出層的各神經元獲得網路的輸入響應。在這之後,按減小期望輸出與實際輸出的誤差的方向,從輸入層經各隱含層逐層修正各連接權,最後回到輸入層,故得名「誤差逆傳播學習演算法」。隨著這種誤差逆傳播修正的不斷進行,網路對輸入模式響應的正確率也不斷提高。
BP網路主要應用於以下幾個方面:
1)函數逼近:用輸入模式與相應的期望輸出模式學習一個網路逼近一個函數;
2)模式識別:用一個特定的期望輸出模式將它與輸入模式聯系起來;
3)分類:把輸入模式以所定義的合適方式進行分類;
4)數據壓縮:減少輸出矢量的維數以便於傳輸或存儲。
在人工神經網路的實際應用中,80%~90%的人工神經網路模型採用BP網路或它的變化形式,它也是前向網路的核心部分,體現了人工神經網路最精華的部分。
二、BP模型原理
下面以三層BP網路為例,說明學習和應用的原理。
1.數據定義
P對學習模式(xp,dp),p=1,2,…,P;
輸入模式矩陣X[N][P]=(x1,x2,…,xP);
目標模式矩陣d[M][P]=(d1,d2,…,dP)。
三層BP網路結構
輸入層神經元節點數S0=N,i=1,2,…,S0;
隱含層神經元節點數S1,j=1,2,…,S1;
神經元激活函數f1[S1];
權值矩陣W1[S1][S0];
偏差向量b1[S1]。
輸出層神經元節點數S2=M,k=1,2,…,S2;
神經元激活函數f2[S2];
權值矩陣W2[S2][S1];
偏差向量b2[S2]。
學習參數
目標誤差ϵ;
初始權更新值Δ0;
最大權更新值Δmax;
權更新值增大倍數η+;
權更新值減小倍數η-。
2.誤差函數定義
對第p個輸入模式的誤差的計算公式為
中國礦產資源評價新技術與評價新模型
y2kp為BP網的計算輸出。
3.BP網路學習公式推導
BP網路學習公式推導的指導思想是,對網路的權值W、偏差b修正,使誤差函數沿負梯度方向下降,直到網路輸出誤差精度達到目標精度要求,學習結束。
各層輸出計算公式
輸入層
y0i=xi,i=1,2,…,S0;
隱含層
中國礦產資源評價新技術與評價新模型
y1j=f1(z1j),
j=1,2,…,S1;
輸出層
中國礦產資源評價新技術與評價新模型
y2k=f2(z2k),
k=1,2,…,S2。
輸出節點的誤差公式
中國礦產資源評價新技術與評價新模型
對輸出層節點的梯度公式推導
中國礦產資源評價新技術與評價新模型
E是多個y2m的函數,但只有一個y2k與wkj有關,各y2m間相互獨立。
其中
中國礦產資源評價新技術與評價新模型
則
中國礦產資源評價新技術與評價新模型
設輸出層節點誤差為
δ2k=(dk-y2k)·f2′(z2k),
則
中國礦產資源評價新技術與評價新模型
同理可得
中國礦產資源評價新技術與評價新模型
對隱含層節點的梯度公式推導
中國礦產資源評價新技術與評價新模型
E是多個y2k的函數,針對某一個w1ji,對應一個y1j,它與所有的y2k有關。因此,上式只存在對k的求和,其中
中國礦產資源評價新技術與評價新模型
則
中國礦產資源評價新技術與評價新模型
設隱含層節點誤差為
中國礦產資源評價新技術與評價新模型
則
中國礦產資源評價新技術與評價新模型
同理可得
中國礦產資源評價新技術與評價新模型
4.採用彈性BP演算法(RPROP)計算權值W、偏差b的修正值ΔW,Δb
1993年德國 Martin Riedmiller和Heinrich Braun 在他們的論文「A Direct Adaptive Method for Faster Backpropagation Learning:The RPROP Algorithm」中,提出Resilient Backpropagation演算法——彈性BP演算法(RPROP)。這種方法試圖消除梯度的大小對權步的有害影響,因此,只有梯度的符號被認為表示權更新的方向。
權改變的大小僅僅由權專門的「更新值」
中國礦產資源評價新技術與評價新模型
其中
權更新遵循規則:如果導數是正(增加誤差),這個權由它的更新值減少。如果導數是負,更新值增加。
中國礦產資源評價新技術與評價新模型
RPROP演算法是根據局部梯度信息實現權步的直接修改。對於每個權,我們引入它的
各自的更新值
於在誤差函數E上的局部梯度信息,按照以下的學習規則更新
中國礦產資源評價新技術與評價新模型
其中0<η-<1<η+。
在每個時刻,如果目標函數的梯度改變它的符號,它表示最後的更新太大,更新值
為了減少自由地可調參數的數目,增大倍數因子η+和減小倍數因子η–被設置到固定值
η+=1.2,
η-=0.5,
這兩個值在大量的實踐中得到了很好的效果。
RPROP演算法採用了兩個參數:初始權更新值Δ0和最大權更新值Δmax
當學習開始時,所有的更新值被設置為初始值Δ0,因為它直接確定了前面權步的大小,它應該按照權自身的初值進行選擇,例如,Δ0=0.1(默認設置)。
為了使權不至於變得太大,設置最大權更新值限制Δmax,默認上界設置為
Δmax=50.0。
在很多實驗中,發現通過設置最大權更新值Δmax到相當小的值,例如
Δmax=1.0。
我們可能達到誤差減小的平滑性能。
5.計算修正權值W、偏差b
第t次學習,權值W、偏差b的的修正公式
W(t)=W(t-1)+ΔW(t),
b(t)=b(t-1)+Δb(t),
其中,t為學習次數。
6.BP網路學習成功結束條件每次學習累積誤差平方和
中國礦產資源評價新技術與評價新模型
每次學習平均誤差
中國礦產資源評價新技術與評價新模型
當平均誤差MSE<ε,BP網路學習成功結束。
7.BP網路應用預測
在應用BP網路時,提供網路輸入給輸入層,應用給定的BP網路及BP網路學習得到的權值W、偏差b,網路輸入經過從輸入層經各隱含層向輸出層的「順傳播」過程,計算出BP網的預測輸出。
8.神經元激活函數f
線性函數
f(x)=x,
f′(x)=1,
f(x)的輸入范圍(-∞,+∞),輸出范圍(-∞,+∞)。
一般用於輸出層,可使網路輸出任何值。
S型函數S(x)
中國礦產資源評價新技術與評價新模型
f(x)的輸入范圍(-∞,+∞),輸出范圍(0,1)。
f′(x)=f(x)[1-f(x)],
f′(x)的輸入范圍(-∞,+∞),輸出范圍(0,
一般用於隱含層,可使范圍(-∞,+∞)的輸入,變成(0,1)的網路輸出,對較大的輸入,放大系數較小;而對較小的輸入,放大系數較大,所以可用來處理和逼近非線性的輸入/輸出關系。
在用於模式識別時,可用於輸出層,產生逼近於0或1的二值輸出。
雙曲正切S型函數
中國礦產資源評價新技術與評價新模型
f(x)的輸入范圍(-∞,+∞),輸出范圍(-1,1)。
f′(x)=1-f(x)·f(x),
f′(x)的輸入范圍(-∞,+∞),輸出范圍(0,1]。
一般用於隱含層,可使范圍(-∞,+∞)的輸入,變成(-1,1)的網路輸出,對較大的輸入,放大系數較小;而對較小的輸入,放大系數較大,所以可用來處理和逼近非線性的輸入/輸出關系。
階梯函數
類型1
中國礦產資源評價新技術與評價新模型
f(x)的輸入范圍(-∞,+∞),輸出范圍{0,1}。
f′(x)=0。
類型2
中國礦產資源評價新技術與評價新模型
f(x)的輸入范圍(-∞,+∞),輸出范圍{-1,1}。
f′(x)=0。
斜坡函數
類型1
中國礦產資源評價新技術與評價新模型
f(x)的輸入范圍(-∞,+∞),輸出范圍[0,1]。
中國礦產資源評價新技術與評價新模型
f′(x)的輸入范圍(-∞,+∞),輸出范圍{0,1}。
類型2
中國礦產資源評價新技術與評價新模型
f(x)的輸入范圍(-∞,+∞),輸出范圍[-1,1]。
中國礦產資源評價新技術與評價新模型
f′(x)的輸入范圍(-∞,+∞),輸出范圍{0,1}。
三、總體演算法
1.三層BP網路(含輸入層,隱含層,輸出層)權值W、偏差b初始化總體演算法
(1)輸入參數X[N][P],S0,S1,f1[S1],S2,f2[S2];
(2)計算輸入模式X[N][P]各個變數的最大值,最小值矩陣 Xmax[N],Xmin[N];
(3)隱含層的權值W1,偏差b1初始化。
情形1:隱含層激活函數f( )都是雙曲正切S型函數
1)計算輸入模式X[N][P]的每個變數的范圍向量Xrng[N];
2)計算輸入模式X的每個變數的范圍均值向量Xmid[N];
3)計算W,b的幅度因子Wmag;
4)產生[-1,1]之間均勻分布的S0×1維隨機數矩陣Rand[S1];
5)產生均值為0,方差為1的正態分布的S1×S0維隨機數矩陣Randnr[S1][S0],隨機數范圍大致在[-1,1];
6)計算W[S1][S0],b[S1];
7)計算隱含層的初始化權值W1[S1][S0];
8)計算隱含層的初始化偏差b1[S1];
9))輸出W1[S1][S0],b1[S1]。
情形2:隱含層激活函數f( )都是S型函數
1)計算輸入模式X[N][P]的每個變數的范圍向量Xrng[N];
2)計算輸入模式X的每個變數的范圍均值向量Xmid[N];
3)計算W,b的幅度因子Wmag;
4)產生[-1,1]之間均勻分布的S0×1維隨機數矩陣Rand[S1];
5)產生均值為0,方差為1的正態分布的S1×S0維隨機數矩陣Randnr[S1][S0],隨機數范圍大致在[-1,1];
6)計算W[S1][S0],b[S1];
7)計算隱含層的初始化權值W1[S1][S0];
8)計算隱含層的初始化偏差b1[S1];
9)輸出W1[S1][S0],b1[S1]。
情形3:隱含層激活函數f( )為其他函數的情形
1)計算輸入模式X[N][P]的每個變數的范圍向量Xrng[N];
2)計算輸入模式X的每個變數的范圍均值向量Xmid[N];
3)計算W,b的幅度因子Wmag;
4)產生[-1,1]之間均勻分布的S0×1維隨機數矩陣Rand[S1];
5)產生均值為0,方差為1的正態分布的S1×S0維隨機數矩陣Randnr[S1][S0],隨機數范圍大致在[-1,1];
6)計算W[S1][S0],b[S1];
7)計算隱含層的初始化權值W1[S1][S0];
8)計算隱含層的初始化偏差b1[S1];
9)輸出W1[S1][S0],b1[S1]。
(4)輸出層的權值W2,偏差b2初始化
1)產生[-1,1]之間均勻分布的S2×S1維隨機數矩陣W2[S2][S1];
2)產生[-1,1]之間均勻分布的S2×1維隨機數矩陣b2[S2];
3)輸出W2[S2][S1],b2[S2]。
2.應用彈性BP演算法(RPROP)學習三層BP網路(含輸入層,隱含層,輸出層)權值W、偏差b總體演算法
函數:Train3BP_RPROP(S0,X,P,S1,W1,b1,f1,S2,W2,b2,f2,d,TP)
(1)輸入參數
P對模式(xp,dp),p=1,2,…,P;
三層BP網路結構;
學習參數。
(2)學習初始化
1)
2)各層W,b的梯度值
(3)由輸入模式X求第一次學習各層輸出y0,y1,y2及第一次學習平均誤差MSE
(4)進入學習循環
epoch=1
(5)判斷每次學習誤差是否達到目標誤差要求
如果MSE<ϵ,
則,跳出epoch循環,
轉到(12)。
(6)保存第epoch-1次學習產生的各層W,b的梯度值
(7)求第epoch次學習各層W,b的梯度值
1)求各層誤差反向傳播值δ;
2)求第p次各層W,b的梯度值
3)求p=1,2,…,P次模式產生的W,b的梯度值
(8)如果epoch=1,則將第epoch-1次學習的各層W,b的梯度值
(9)求各層W,b的更新
1)求權更新值Δij更新;
2)求W,b的權更新值
3)求第epoch次學習修正後的各層W,b。
(10)用修正後各層W、b,由X求第epoch次學習各層輸出y0,y1,y2及第epoch次學習誤差MSE
(11)epoch=epoch+1,
如果epoch≤MAX_EPOCH,轉到(5);
否則,轉到(12)。
(12)輸出處理
1)如果MSE<ε,
則學習達到目標誤差要求,輸出W1,b1,W2,b2。
2)如果MSE≥ε,
則學習沒有達到目標誤差要求,再次學習。
(13)結束
3.三層BP網路(含輸入層,隱含層,輸出層)預測總體演算法
首先應用Train3lBP_RPROP( )學習三層BP網路(含輸入層,隱含層,輸出層)權值W、偏差b,然後應用三層BP網路(含輸入層,隱含層,輸出層)預測。
函數:Simu3lBP( )。
1)輸入參數:
P個需預測的輸入數據向量xp,p=1,2,…,P;
三層BP網路結構;
學習得到的各層權值W、偏差b。
2)計算P個需預測的輸入數據向量xp(p=1,2,…,P)的網路輸出 y2[S2][P],輸出預測結果y2[S2][P]。
四、總體演算法流程圖
BP網路總體演算法流程圖見附圖2。
五、數據流圖
BP網數據流圖見附圖1。
六、實例
實例一 全國銅礦化探異常數據BP 模型分類
1.全國銅礦化探異常數據准備
在全國銅礦化探數據上用穩健統計學方法選取銅異常下限值33.1,生成全國銅礦化探異常數據。
2.模型數據准備
根據全國銅礦化探異常數據,選取7類33個礦點的化探數據作為模型數據。這7類分別是岩漿岩型銅礦、斑岩型銅礦、矽卡岩型、海相火山型銅礦、陸相火山型銅礦、受變質型銅礦、海相沉積型銅礦,另添加了一類沒有銅異常的模型(表8-1)。
3.測試數據准備
全國化探數據作為測試數據集。
4.BP網路結構
隱層數2,輸入層到輸出層向量維數分別為14,9、5、1。學習率設置為0.9,系統誤差1e-5。沒有動量項。
表8-1 模型數據表
續表
5.計算結果圖
如圖8-2、圖8-3。
圖8-2
圖8-3 全國銅礦礦床類型BP模型分類示意圖
實例二 全國金礦礦石量品位數據BP 模型分類
1.模型數據准備
根據全國金礦儲量品位數據,選取4類34個礦床數據作為模型數據,這4類分別是綠岩型金礦、與中酸性浸入岩有關的熱液型金礦、微細浸染型型金礦、火山熱液型金礦(表8-2)。
2.測試數據准備
模型樣本點和部分金礦點金屬量、礦石量、品位數據作為測試數據集。
3.BP網路結構
輸入層為三維,隱層1層,隱層為三維,輸出層為四維,學習率設置為0.8,系統誤差1e-4,迭代次數5000。
表8-2 模型數據
4.計算結果
結果見表8-3、8-4。
表8-3 訓練學習結果
表8-4 預測結果(部分)
續表
③ (急)如何用MATLAB建立ANN(人工神經網路模型)
問題描述:有兩個自變數,一個因變數,10個樣本(這里就取少一點好了)。用實際問題來表述,假設一個股票,開盤價 x1,收盤價 x2,第二天的股價 y。 那用神經網路來預測的目的是,根據10天的開盤價和收盤價,來預測未來股價。顯然,這里的y與x1和x2相關,我們要訓練一個網路(net)來讓他盡可能的預測一個yMATLAB程序clcclearload data input output%input就是包含了x1和x2 10天數據的矩陣,說白了就是20個數的矩陣。output是y的一個向量,%10個數%需要自己找一些數據賦值給input和ouputP=input;T=output;%這里P和T必須是 x1 x2和y的行向量組合。對於P,x1是行向量,x2是行向量。P=[x1;x2]; T=y. y是行向量Epochs=5000;NodeNum=12; TypeNum=1;TF1='logsig'; TF2='purelin';%設置一些初始參數,Epochs是迭代上限次數,NodeNum是第一個隱藏層的神經元個數,%TypeNum是幾層。TF1和TF2分別定義了幾個傳遞函數。net=newff(minmax(P),[NodeNum TypeNum],{TF1 TF2},'trainlm');%建立一個神經網路,訓練輸入和輸出數據都有了,設置隱藏層的個數。net.trainParam.epochs=Epochs;net.trainParam.goal=1e-4;net.trainParam.min_grad=1e-4;net.trainParam.show=200;net.trainParam.time=inf;%設置一些訓練時的參數,第一個是每次訓練的最大迭代次數;net=train(net,P,T);%開始網路訓練P_test=P;B_test=T;%就用原始的數據進行測試X=sim(net,P_test);%測試Erro=abs(B_test-X);sigma=std(Erro);%計算出預測值和實際值的誤差,求出方差。將來方差可以用來隨機調整④ 如何建立神經網路模型
人工神經網路有很多種,我只會最常用的BP神經網路。不同的網路有不同的結構和不同的學習演算法。
簡單點說,人工神經網路就是一個函數。只是這個函數有別於一般的函數。它比普通的函數多了一個學習的過程。
在學習的過程中,它根據正確結果不停地校正自己的網路結構,最後達到一個滿意的精度。這時,它才開始真正的工作階段。
學習人工神經網路最好先安裝MathWords公司出的MatLab軟體。利用該軟體,你可以在一周之內就學會建立你自己的人工神經網路解題模型。
如果你想自己編程實現人工神經網路,那就需要找一本有關的書籍,專門看神經網路學習演算法的那部分內容。因為「學習演算法」是人工神經網路的核心。最常用的BP人工神經網路,使用的就是BP學習演算法。
⑤ bp神經網路
BP(Back Propagation)網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。
人工神經網路就是模擬人思維的第二種方式。這是一個非線性動力學系統,其特色在於信息的分布式存儲和並行協同處理。雖然單個神經元的結構極其簡單,功能有限,但大量神經元構成的網路系統所能實現的行為卻是極其豐富多彩的。
人工神經網路首先要以一定的學習准則進行學習,然後才能工作。現以人工神經網路對手寫「A」、「B」兩個字母的識別為例進行說明,規定當「A」輸入網路時,應該輸出「1」,而當輸入為「B」時,輸出為「0」。
所以網路學習的准則應該是:如果網路作出錯誤的的判決,則通過網路的學習,應使得網路減少下次犯同樣錯誤的可能性。首先,給網路的各連接權值賦予(0,1)區間內的隨機值,將「A」所對應的圖象模式輸入給網路,網路將輸入模式加權求和、與門限比較、再進行非線性運算,得到網路的輸出。在此情況下,網路輸出為「1」和「0」的概率各為50%,也就是說是完全隨機的。這時如果輸出為「1」(結果正確),則使連接權值增大,以便使網路再次遇到「A」模式輸入時,仍然能作出正確的判斷。
如果輸出為「0」(即結果錯誤),則把網路連接權值朝著減小綜合輸入加權值的方向調整,其目的在於使網路下次再遇到「A」模式輸入時,減小犯同樣錯誤的可能性。如此操作調整,當給網路輪番輸入若干個手寫字母「A」、「B」後,經過網路按以上學習方法進行若干次學習後,網路判斷的正確率將大大提高。這說明網路對這兩個模式的學習已經獲得了成功,它已將這兩個模式分布地記憶在網路的各個連接權值上。當網路再次遇到其中任何一個模式時,能夠作出迅速、准確的判斷和識別。一般說來,網路中所含的神經元個數越多,則它能記憶、識別的模式也就越多。
如圖所示拓撲結構的單隱層前饋網路,一般稱為三層前饋網或三層感知器,即:輸入層、中間層(也稱隱層)和輸出層。它的特點是:各層神經元僅與相鄰層神經元之間相互全連接,同層內神經元之間無連接,各層神經元之間無反饋連接,構成具有層次結構的前饋型神經網路系統。單計算層前饋神經網路只能求解線性可分問題,能夠求解非線性問題的網路必須是具有隱層的多層神經網路。
神經網路的研究內容相當廣泛,反映了多學科交叉技術領域的特點。主要的研究工作集中在以下幾個方面:
(1)生物原型研究。從生理學、心理學、解剖學、腦科學、病理學等生物科學方面研究神經細胞、神經網路、神經系統的生物原型結構及其功能機理。
(2)建立理論模型。根據生物原型的研究,建立神經元、神經網路的理論模型。其中包括概念模型、知識模型、物理化學模型、數學模型等。
(3)網路模型與演算法研究。在理論模型研究的基礎上構作具體的神經網路模型,以實現計算機模擬或准備製作硬體,包括網路學習演算法的研究。這方面的工作也稱為技術模型研究。
(4)人工神經網路應用系統。在網路模型與演算法研究的基礎上,利用人工神經網路組成實際的應用系統,例如,完成某種信號處理或模式識別的功能、構作專家系統、製成機器人等等。
縱觀當代新興科學技術的發展歷史,人類在征服宇宙空間、基本粒子,生命起源等科學技術領域的進程中歷經了崎嶇不平的道路。我們也會看到,探索人腦功能和神經網路的研究將伴隨著重重困難的克服而日新月異。
神經網路可以用作分類、聚類、預測等。神經網路需要有一定量的歷史數據,通過歷史數據的訓練,網路可以學習到數據中隱含的知識。在你的問題中,首先要找到某些問題的一些特徵,以及對應的評價數據,用這些數據來訓練神經網路。
雖然BP網路得到了廣泛的應用,但自身也存在一些缺陷和不足,主要包括以下幾個方面的問題。
首先,由於學習速率是固定的,因此網路的收斂速度慢,需要較長的訓練時間。對於一些復雜問題,BP演算法需要的訓練時間可能非常長,這主要是由於學習速率太小造成的,可採用變化的學習速率或自適應的學習速率加以改進。
其次,BP演算法可以使權值收斂到某個值,但並不保證其為誤差平面的全局最小值,這是因為採用梯度下降法可能產生一個局部最小值。對於這個問題,可以採用附加動量法來解決。
再次,網路隱含層的層數和單元數的選擇尚無理論上的指導,一般是根據經驗或者通過反復實驗確定。因此,網路往往存在很大的冗餘性,在一定程度上也增加了網路學習的負擔。
最後,網路的學習和記憶具有不穩定性。也就是說,如果增加了學習樣本,訓練好的網路就需要從頭開始訓練,對於以前的權值和閾值是沒有記憶的。但是可以將預測、分類或聚類做的比較好的權值保存。
⑥ 極端氣溫、降雨-洪水模型(BP神經網路)的建立
極端氣溫、降雨與洪水之間有一定的聯系。根據1958~2007年廣西西江流域極端氣溫、極端降雨和梧州水文站洪水數據,以第5章相關分析所確定的顯著影響梧州水文站年最大流量的測站的相應極端氣候因素(表4.22)為輸入,建立人工神經網路模型。
4.5.1.1 BP神經網路概述
(1)基於BP演算法的多層前饋網路模型
採用BP演算法的多層前饋網路是至今為止應用最廣泛的神經網路,在多層的前饋網的應用中,如圖4.20所示的三層前饋網的應用最為普遍,其包括了輸入層、隱層和輸出層。
圖4.20 典型的三層BP神經網路結構
在正向傳播中,輸入信息從輸入層經隱含層逐層處理,並傳向輸出層。如果輸出層不能得到期望的輸出結果,則轉入反向傳播,將誤差信號沿原來的連同通路返回,通過修改各層神經元的權值,使得誤差最小。BP演算法流程如圖4.21所示。
圖4.21 BP演算法流程圖
容易看出,BP學習演算法中,各層權值調整均由3個因素決定,即學習率、本層輸出的誤差信號以及本層輸入信號y(或x)。其中,輸出層誤差信號同網路的期望輸出與實際輸出之差有關,直接反映了輸出誤差,而各隱層的誤差信號與前面各層的誤差信號都有關,是從輸出層開始逐層反傳過來的。
1988年,Cybenko指出兩個隱含層就可表示輸入圖形的任意輸出函數。如果BP網路只有兩個隱層,且輸入層、第一隱含層、第二隱層和輸出層的單元個數分別為n,p,q,m,則該網路可表示為BP(n,p,q,m)。
(2)研究區極端氣溫、極端降雨影響年最大流量過程概化
極端氣溫、極端降雨影響年最大流量的過程極其復雜,從極端降雨到年最大流量,中間要經過蒸散發、分流、下滲等環節,受到地形、地貌、下墊面、土壤地質以及人類活動等多種因素的影響。可將一個極端氣候-年最大流量間復雜的水過程概化為小尺度的水系統,該水系統的主要影響因子可通過對年最大流量影響顯著的站點的極端氣溫和極端降雨體現出來,而其中影響不明顯的站點可忽略,從而使問題得以簡化。
BP神經網路是一個非線形系統,可用於逼近非線形映射關系,也可用於逼近一個極為復雜的函數關系。極端氣候-年最大流量水系統是一個非常復雜的映射關系,可將之概化為一個系統。BP神經網路與研究流域的極端氣候-年最大流量水系統的結構是相似的,利用BP神經網路,對之進行模擬逼近。
(3)隱含層單元數的確定
隱含層單元數q與所研究的具體問題有關,目前尚無統一的確定方法,通常根據網路訓練情況採用試錯法確定。在訓練中網路的收斂採用輸出值Ykp與實測值tp的誤差平方和進行控制
變環境條件下的水資源保護與可持續利用研究
作者認為,雖然現今的BP神經網路還是一個黑箱模型,其參數沒有水文物理意義,在本節的研究過程中,將嘗試著利用極端氣候空間分析的結果來指導隱含層神經元個數的選取。
(4)傳遞函數的選擇
BP神經網路模型演算法存在需要較長的訓練時間、完全不能訓練、易陷入局部極小值等缺點,可通過對模型附加動量項或設置自適應學習速率來改良。本節採用MATLAB工具箱中帶有自適應學習速率進行反向傳播訓練的traingdm()函數來實現。
(5)模型數據的歸一化處理
由於BP網路的輸入層物理量及數值相差甚遠,為了加快網路收斂的速度,使網路在訓練過程中易於收斂,對輸入數據進行歸一化處理,即將輸入的原始數據都化為0~1之間的數。本節將年極端最高氣溫的數據乘以0.01;將極端最低氣溫的數據乘以0.1;年最大1d、3d、7d降雨量的數據乘以0.001;梧州水文站年最大流量的數據乘以0.00001,其他輸入數據也按類似的方法進行歸一化處理。
(6)年最大流量的修正
梧州水文站以上的流域集水面積為32.70萬km2,廣西境內流域集水面積為20.24萬km2,廣西境內流域集水面積占梧州水文站以上的流域集水面積的61.91%。因此,選取2003~2007年梧州水文站年最大流量和紅水河的天峨水文站年最大流量,分別按式4.10計算每年的貢獻率(表4.25),取其平均值作為廣西西江流域極端降雨對梧州水文站年最大流量的平均貢獻率,最後確定平均貢獻率為76.88%。
變環境條件下的水資源保護與可持續利用研究
表4.25 2003~2007年極端降雨對梧州水文站年最大流量的貢獻率
建立「年極端氣溫、降雨與梧州年最大流量模型」時,應把平均貢獻率與梧州水文站年最大流量的乘積作為模型輸入的修正年最大流量,而預測的年最大流量應該為輸出的年最大流量除以平均貢獻率76.88%,以克服極端氣溫和降雨研究范圍與梧州水文站集水面積不一致的問題。
4.5.1.2年極端氣溫、年最大1d降雨與梧州年最大流量的BP神經網路模型
(1)模型的建立
以1958~1997年年極端最高氣溫、年極端最低氣溫、年最大1d降雨量與梧州水文站年最大流量作為學習樣本擬合、建立「年極端氣溫、年最大1d降雨-梧州年最大流量BP神經網路模型」。以梧州氣象站的年極端最高氣溫,桂林、欽州氣象站的年極端最低氣溫,榜圩、馬隴、三門、黃冕、沙街、勾灘、天河、百壽、河池、貴港、金田、平南、大化、桂林、修仁、五將雨量站的年最大1d降雨量為輸入,梧州水文站年最大流量為輸出,隱含層層數取2,建立(19,p,q,1)BP神經網路模型,其中神經元數目p,q經試算分別取16和3,第一隱層、第二隱層的神經元採用tansig傳遞函數,輸出層的神經元採用線性傳遞函數,訓練函數選用traingdm,學習率取0.1,動量項取0.9,目標取0.0001,最大訓練次數取200000。BP網路模型參數見表4.26,結構如圖4.22所示。
圖4.22年極端氣溫、年最大1d降雨-梧州年最大流量BP模型結構圖
表4.26 BP網路模型參數一覽表
從結構上分析,梧州水文站年最大流量產生過程中,年最高氣溫、年最低氣溫和各支流相應的流量都有其閾值,而極端氣溫和極端降雨是其輸入,年最大流量是其輸出,這類似於人工神經元模型中的閾值、激活值、輸出等器件。輸入年最大1d降雨時選用的雨量站分布在14條支流上(表4.27),極端降雨發生後,流經14條支流匯入梧州,在這一過程中極端氣溫的變化影響極端降雨的蒸散發,選用的雨量站分布在年最大1d降雨四個自然分區的Ⅱ、Ⅲ、Ⅳ3個區。該過程可與BP神經網路結構進行類比(表4.28),其中, 14條支流相當於第一隱含層中的14個神經元,年最高氣溫和年最低氣溫相當於第一隱含層中的2個神經元,年最大1d降雨所在的3個分區相當於第二隱含層的3個神經元,年最高氣溫、年最低氣溫的影響值和各支流流量的奉獻值相當於隱含層中人工神經元的閾值,從整體上來說,BP神經網路的結構已經灰箱化。
表4.27 選用雨量站所在支流一覽表
表4.28 BP神經網路構件物理意義一覽表
(2)訓練效果分析
訓練樣本為40個,經過113617次訓練,達到精度要求。在命令窗口執行運行命令,網路開始學習和訓練,其訓練過程如圖4.23所示,訓練結果見表4.29和圖4.24。
表4.29年最大流量訓練結果
圖4.23 神經網路訓練過程圖
圖4.24年最大流量神經網路模型訓練結果
從圖4.26可知,訓練後的BP網路能較好地逼近給定的目標函數。從訓練樣本檢驗結果(表4.5)可得:1958~1997年40年中年最大流量模擬值與實測值的相對誤差小於10%和20%的分別為39年,40年,合格率為100%。說明「年極端氣溫、年最大1d降雨- 梧州年最大流量預測模型」的實際輸出與實測結果誤差很小,該模型的泛化能力較好,模擬結果較可靠。
(3)模型預測檢驗
把1998~2007年梧州氣象站的年極端最高氣溫,桂林、欽州氣象站的年極端最低氣溫,榜圩、馬隴、三門、黃冕、沙街、勾灘、天河、百壽、河池、貴港、金田、平南、大化、桂林、修仁、五將雨量站的年最大1d降雨量輸入到「年極端氣溫、年最大1d降雨梧州年最大流量BP神經網路模型」。程序運行後網路輸出預測值與已知的實際值進行比較,其預測檢驗結果見圖4.25,表4.30。
圖4.25年最大流量神經網路模型預測檢驗結果
表4.30 神經網路模型預測結果與實際結果比較
從預測檢驗結果可知:1998~2007年10年中年最大流量模擬值與實測值的相對誤差小於20%的為9年,合格率為90%,效果較好。
4.5.1.3年極端氣溫、年最大7d降雨與梧州年最大流量的BP神經網路模型
(1)模型的建立
以1958~1997年年極端最高氣溫、年極端最低氣溫、年最大7d降雨量和梧州水文站年最大流量作為學習樣本來擬合、建立「年極端氣溫、年最大7d降雨- 梧州年最大流量BP神經網路模型」。以梧州氣象站的年極端最高氣溫,桂林、欽州氣象站的年極端最低氣溫,鳳山、都安、馬隴、沙街、大湟江口、大安、大化、陽朔、五將雨量站的年最大7d降雨量為輸入,梧州水文站年最大流量為輸出,隱含層層數取2,建立(12,p,q,1)BP神經網路模型,其中,神經元數目p,q經試算分別取10和4,第一隱層、第二隱層的神經元採用tansig傳遞函數,輸出層的神經元採用線性傳遞函數,訓練函數選用traingdm,學習率取0.1,動量項取0.9,目標取0.0001,最大訓練次數取200000。BP網路模型參數見表4.31,結構如圖4.26所示。
表4.31 BP網路模型參數一覽表
圖4.26年極端氣溫、年最大7d降雨-梧州年最大流量BP模型結構圖
本節輸入年最大7d降雨時選用的雨量站分布在8條支流上(表4.32),在發生極端降雨後,流經8條支流匯入梧州,在這一過程中極端氣溫的變化影響極端降雨的蒸散發,且選用的雨量站分布在年最大7d降雨四個自然分區的Ⅰ、Ⅱ、Ⅲ、Ⅳ4個區中。該過程可與BP神經網路結構進行類比(表4.33),其中,8條支流相當於第一隱含層中的8個神經元,年最高氣溫和年最低氣溫相當於第一隱含層中的2個神經元,年最大7d降雨所在的4個分區相當於第二隱含層的4個神經元,整體上來說,BP神經網路的結構已經灰箱化。
表4.32 選用雨量站所在支流一覽表
表4.33 BP神經網路構件物理意義一覽表
(2)訓練效果分析
訓練樣本為40個,經過160876次的訓練,達到精度要求,在命令窗口執行運行命令,網路開始學習和訓練,其訓練過程如圖4.27所示,訓練結果見表4.34,圖4.28。
圖4.27 神經網路訓練過程圖
表4.34年最大流量訓練結果
圖4.28年最大流量神經網路模型訓練結果
從圖4.28可知,訓練後的BP網路能較好地逼近給定的目標函數。由訓練樣本檢驗結果(表4.34)可得:1958~1997年40年中年最大流量模擬值與實測值的相對誤差小於10%和20%的,分別為38年、40年,合格率為100%。說明「年極端氣溫、年最大7d降雨-梧州年最大流量BP神經網路模型」的泛化能力較好,模擬的結果較可靠。
(3)模型預測檢驗
把1998~2007年梧州氣象站的年極端最高氣溫,桂林、欽州氣象站的年極端最低氣溫,鳳山、都安、馬隴、沙街、大湟江口、大安、大化、陽朔、五將雨量站的年最大7d降雨量輸入到「年極端氣溫、年最大7d降雨- 梧州年最大流量BP神經網路模型」。程序運行後網路輸出預測值與已知的實際值進行比較,其預測結果見圖4.29和表4.35。
圖4.29年最大流量神經網路模型預測檢驗結果
表4.35 神經網路模型預測結果與實際結果比較
由預測檢驗結果可知:1998~2007年10年中年最大流量模擬值與實測值的相對誤差小於20%的為7年,合格率為70%,效果較好。
4.5.1.4 梧州年最大流量-年最高水位的BP神經網路模型
(1)模型的建立
以1941~1997年梧州水文站的年最大流量與年最高水位作為學習樣本來擬合、建立梧州水文站的「年最大流量-年最高水位BP神經網路模型」。以年最大流量為輸入,年最高水位為輸出,隱含層層數取1,建立(1,q,1)BP神經網路模型,其中,神經元數目q經試算取7,隱含層、輸出層的神經元採用線性傳遞函數,訓練函數選用traingdm,學習率取0.1,動量項取0.9,目標取0.00001,最大訓練次數取200000。BP網路模型參數見表4.36,結構如圖4.30所示。
表4.36 BP網路模型參數一覽表
圖4.30 梧州年最大流量—年最高水位BP模型結構圖
廣西西江流域主要河流有南盤江、紅水河、黔潯江、鬱江、柳江、桂江、賀江。7條主要河流相當於隱含層中的7個神經元(表4.37),整體上來說,BP神經網路的結構已經灰箱化。
表4.37 BP神經網路構件物理意義一覽表
(2)訓練效果分析
訓練樣本為57個,經過3327次訓練,誤差下降梯度已達到最小值,但誤差為3.00605×10-5,未達到精度要求。在命令窗口執行運行命令,網路開始學習和訓練,其訓練過程如圖4.31所示,訓練結果見圖4.32和表4.38。
表4.38年最高水位訓練結果
從圖4.32和表4.19可看出,訓練後的BP網路能較好地逼近給定的目標函數。對於訓練樣本,從檢驗結果可知:1941~1997年57年中年最高水位模擬值與實測值的相對誤差小於10%和20%的分別為56a,57a,合格率為100%。說明「年最大流量-年最高水位BP神經網路模型」的實際輸出與實測結果誤差很小,該模型的泛化能力較好,模擬的結果比較可靠。
圖4.31 神經網路訓練過程圖
圖4.32年最高水位神經網路模型訓練結果
(3)模型預測檢驗
把1998~2007年梧州水文站年最大流量輸入到「年最大流量-年最高水位BP神經網路模型」。程序運行後網路輸出預測值與已知的實際值進行比較,其預測結果見圖4.33,表4.39。
表4.39 神經網路模型預測結果與實際結果比較
從預測檢驗結果可知:1998~2007年10年中,年最高水位模擬值與實測值的相對誤差小於20%的為10年,合格率為100%,效果較好。
圖4.33年最高水位量神經網路模型預測檢驗結果
⑦ Keras快速構建神經網路模型
用Keras搭建神經網路的步驟:
深度學習框架Keras——像搭積木般構建神經網路,主要分為7個部分,每個部分只需要幾個keras API函數就能實現,用戶即可像搭積木般一層層構建神經網路模型。
1. 創建模型 Create model
2. 添加層級 Add Layer
3. 模型編譯 Compile
4. 數據填充 Fit
5. 模型評估 Evaluate
6. 模型預測 Predict
7. 模型保存 Save model
下面章節會對每一部分具體來介紹。。。
Keras 中主要有三類模型:Sequential model, Functional model, Subclass model
在開始創建模型之前,首先需要引入tensorflow和keras模塊,然後再創建一個Sequential model
Sequential API定義如下:
layers參數可以為空, 然後通過add method向模型中添加layer,相對應的通過pop method移除模型中layer。
創建Function API模型,可以調用Keras.Model來指定多輸入多數出。
Keras.Model定義:
Layers是神經網路基本構建塊。一個Layer包含了tensor-in/tensor-out的計算方法和一些狀態,並保存在TensorFlow變數中(即layers的權重weights)。
Layers主要分為6個類別,基礎層,核心層,卷基層,池化層,循環層,融合層。
對派生類的實現可以用以下方法:
** init (): 定義layer的屬性,創建layer的靜態變數。
** build(self, input_shape): 創建依賴於輸入的變數,可以調用add_weight()。
** call(self, *args, **kwargs): 在確保已調用build()之後,在 call 中調用。
** get_config(self): 返回包含用於初始化此層的配置的字典類型。
創建SimpleDense派生類,在build()函數里添加trainable weights。實現y=input*w +b
結果輸出:
創建ComputeSum派生類,在 init 函數里添加 non-trainable weights。實現輸入矩陣沿軸0元素相加後,x=x+self.total
結果輸出:
核心層是最常用的層,涉及到數據的轉換和處理的時候都會用到這些層。
Dense層就是所謂的全連接神經網路層,簡稱全連接層。全連接層中的每個神經元與其前一層的所有神經元進行全連接。
Dense 實現以下操作: output = activation(dot(input, kernel) + bias) 其中 activation 是按逐個元素計算的激活函數,kernel 是由網路層創建的權值矩陣,以及 bias 是其創建的偏置向量 (只在 use_bias 為 True 時才有用)。
將激活函數應用於輸出。輸入信號進入神經元後進行的運算處理。
sigmoid、tanh、ReLU、softplus的對比曲線如下圖所示:
激活函數可以通過設置單獨的激活層Activation實現,也可以在構造層對象時通過傳遞 activation 參數實現:
Dropout在訓練中每次更新時,將輸入單元的按比率隨機設置為0,這有助於防止過擬合。未設置為0的輸入將按1 /(1-rate)放大,以使所有輸入的總和不變。
請注意,僅當訓練設置為True時才應用Dropout層,以便在推理過程中不會丟棄任何值。 使用model.fit時,訓練將自動適當地設置為True。
將輸入展平。不影響批量大小。注意:如果輸入的形狀是(batch,)沒有特徵軸,則展平會增加通道尺寸,而輸出的形狀是(batch, 1)。
將輸入重新調整為特定的尺寸
將任意表達式封裝為Layer對象。在Lambda層,以便在構造模型時可以使用任意TensorFlow函數。 Lambda層最適合簡單操作或快速實驗。 Lambda層是通過序列化Python位元組碼來保存的。
使用覆蓋值覆蓋序列,以跳過時間步。
對於輸入張量的每一個時間步(張量的第一個維度),如果所有時間步中輸入張量的值與mask_value相等,則將在所有下游層中屏蔽(跳過)該時間步。如果任何下游層不支持覆蓋但仍然收到此類輸入覆蓋信息,會引發異常。
舉例說明:
Embedding 是一個將離散變數轉為連續向量表示的一個方式。該層只能用作模型中的第一層。
Embedding 有以下3個主要目的: 在 embedding 空間中查找最近鄰,這可以很好的用於根據用戶的興趣來進行推薦。 作為監督性學習任務的輸入。 用於可視化不同離散變數之間的關系.
舉例說明:
輸出結果:
由維基網路的介紹我們可以得知,卷積是一種定義在兩個函數(𝑓跟𝑔)上的數學操作,旨在產生一個新的函數。那麼𝑓和𝑔的卷積就可以寫成𝑓∗𝑔,數學定義如下:
對應到不同方面,卷積可以有不同的解釋:𝑔 既可以看作我們在深度學習里常說的核(Kernel),也可以對應到信號處理中的濾波器(Filter)。而 𝑓 可以是我們所說的機器學習中的特徵(Feature),也可以是信號處理中的信號(Signal)。f和g的卷積 (𝑓∗𝑔)就可以看作是對𝑓的加權求和。
一維時域卷積操作:
二維圖像卷積操作:
卷積運算的目的是提取輸入的不同特徵,第一層卷積層可能只能提取一些低級的特徵如邊緣、線條和角等層級,更多層的網路能從低級特徵中迭代提取更復雜的特徵。
一維卷積層(即時域卷積),用以在一維輸入信號上進行鄰域濾波。
舉例說明:
結果輸出:
2D 卷積層 (例如對圖像的空間卷積)。
舉例說明:
結果輸出:
3D卷積層(例如體積上的空間卷積)
舉例說明:
結果輸出:
深度可分離1D卷積。該層執行分別作用在通道上的深度卷積,然後是混合通道的逐點卷積。 如果use_bias為True並提供了一個偏差初始值設定項,則它將偏差向量添加到輸出中。 然後,它可選地應用激活函數以產生最終輸出。
深度可分離的2D卷積。可分離的卷積包括首先執行深度空間卷積(它分別作用於每個輸入通道),然後是點向卷積,它將混合所得的輸出通道。 depth_multiplier參數控制在深度步驟中每個輸入通道生成多少個輸出通道。
直觀上,可分離的卷積可以理解為將卷積內核分解為兩個較小內核的一種方式,或者是Inception塊的一種極端版本。
轉置卷積層 (有時被成為反卷積)。對轉置卷積的需求一般來自希望使用 與正常卷積相反方向的變換,將具有卷積輸出尺寸的東西 轉換為具有卷積輸入尺寸的東西, 同時保持與所述卷積相容的連通性模式。
池化層是模仿人的視覺系統對數據進行降維,用更高層次的特徵表示圖像。實施池化的目的:降低信息冗餘;提升模型的尺度不變性、旋轉不變性。 防止過擬合。
通常有最大池化層,平均池化層。
池化層有三種形態:1D 用於一維數據,2D 一般用於二維圖像數據,3D 帶時間序列數據的圖像數據
循環神經網路(Recurrent Neural Network, 簡稱 RNN),循環神經網路的提出便是基於記憶模型的想法,期望網路能夠記住前面出現的特徵,並依據特徵推斷後面的結果,而且整體的網路結構不斷循環,因此得名為循環神經網路。
長短期記憶網路(Long-Short Term Memory, LSTM )論文首次發表於1997年。由於獨特的設計結構,LSTM適合於處理和預測時間序列中間隔和延遲非常長的重要事件。
舉例說明:
結果輸出:
GRU 門控循環單元- Cho et al. 2014.
在LSTM中引入了三個門函數:輸入門、遺忘門和輸出門來控制輸入值、記憶值和輸出值。而在GRU模型中只有兩個門:分別是更新門和重置門。與LSTM相比,GRU內部少了一個」門控「,參數比LSTM少,但是卻也能夠達到與LSTM相當的功能。考慮到硬體的計算能力和時間成本,因而很多時候我們也就會選擇更加」實用「的GRU。
舉例說明:
結果輸出:
循環神經網路層基類。
關於指定 RNN 初始狀態的說明
您可以通過使用關鍵字參數 initial_state 調用它們來符號化地指定 RNN 層的初始狀態。 initial_state 的值應該是表示 RNN 層初始狀態的張量或張量列表。
可以通過調用帶有關鍵字參數 states 的 reset_states 方法來數字化地指定 RNN 層的初始狀態。 states 的值應該是一個代表 RNN 層初始狀態的 Numpy 數組或者 Numpy 數組列表。
關於給 RNN 傳遞外部常量的說明
可以使用 RNN. call (以及 RNN.call)的 constants 關鍵字參數將「外部」常量傳遞給單元。 這要求 cell.call 方法接受相同的關鍵字參數 constants。 這些常數可用於調節附加靜態輸入(不隨時間變化)上的單元轉換,也可用於注意力機制。
舉例說明:
在訓練模型之前,我們需要配置學習過程,這是通過compile方法完成的。
他接收三個參數:優化器 opt
⑧ 人工智慧:什麼是人工神經網路
許多 人工智慧 計算機系統的核心技術是人工神經網路(ANN),而這種網路的靈感來源於人類大腦中的生物結構。
通過使用連接的「神經元」結構,這些網路可以通過「學習」並在沒有人類參與的情況下處理和評估某些數據。
這樣的實際實例之一是使用人工神經網路(ANN)識別圖像中的對象。在構建一個識別「貓「圖像的一個系統中,將在包含標記為「貓」的圖像的數據集上訓練人工神經網路,該數據集可用作任何進行分析的參考點。正如人們可能學會根據尾巴或皮毛等獨特特徵來識別狗一樣,人工神經網路(ANN)也可以通過將每個圖像分解成不同的組成部分(如顏色和形狀)進行識別。
實際上,神經網路提供了位於託管數據之上的排序和分類級別,可基於相似度來輔助數據的聚類和分組。可以使用人工神經網路(ANN)生成復雜的垃圾郵件過濾器,查找欺詐行為的演算法以及可以精確了解情緒的客戶關系工具。
人工神經網路如何工作
人工神經網路的靈感來自人腦的神經組織,使用類似於神經元的計算節點構造而成,這些節點沿著通道(如神經突觸的工作方式)進行信息交互。這意味著一個計算節點的輸出將影響另一個計算節點的處理。
神經網路標志著人工智慧發展的巨大飛躍,在此之前,人工智慧一直依賴於使用預定義的過程和定期的人工干預來產生所需的結果。人工神經網路可以使分析負載分布在多個互連層的網路中,每個互連層包含互連節點。在處理信息並對其進行場景處理之後,信息將傳遞到下一個節點,然後向下傳遞到各個層。這個想法是允許將其他場景信息接入網路,以通知每個階段的處理。
單個「隱藏」層神經網路的基本結構
就像漁網的結構一樣,神經網路的一個單層使用鏈將處理節點連接在一起。大量的連接使這些節點之間的通信得到增強,從而提高了准確性和數據處理吞吐量。
然後,人工神經網路將許多這樣的層相互疊放以分析數據,從而創建從第一層到最後一層的輸入和輸出數據流。盡管其層數將根據人工神經網路的性質及其任務而變化,但其想法是將數據從一層傳遞到另一層,並隨其添加附加的場景信息。
人腦是用3D矩陣連接起來的,而不是大量堆疊的圖層。就像人類大腦一樣,節點在接收到特定刺激時會在人工神經網路上「發射」信號,並將信號傳遞到另一個節點。但是,對於人工神經網路,輸入信號定義為實數,輸出為各種輸入的總和。
這些輸入的值取決於它們的權重,該權重用於增加或減少與正在執行的任務相對應的輸入數據的重要性。其目標是採用任意數量的二進制數值輸入並將其轉換為單個二進制數值輸出。
更復雜的神經網路提高了數據分析的復雜性
早期的神經網路模型使用淺層結構,其中只使用一個輸入和輸出層。而現代的系統由一個輸入層和一個輸出層組成,其中輸入層首先將數據輸入網路,多個「隱藏」層增加了數據分析的復雜性。
這就是「深度學習」一詞的由來——「深度」部分專門指任何使用多個「隱藏」層的神經網路。
聚會的例子
為了說明人工神經網路在實際中是如何工作的,我們將其簡化為一個實際示例。
想像一下你被邀請參加一個聚會,而你正在決定是否參加,這可能需要權衡利弊,並將各種因素納入決策過程。在此示例中,只選擇三個因素——「我的朋友會去嗎?」、「聚會地點遠嗎?」、「天氣會好嗎?」
通過將這些考慮因素轉換為二進制數值,可以使用人工神經網路對該過程進行建模。例如,我們可以為「天氣」指定一個二進制數值,即『1'代表晴天,『0'代表惡劣天氣。每個決定因素將重復相同的格式。
然而,僅僅賦值是不夠的,因為這不能幫助你做出決定。為此需要定義一個閾值,即積極因素的數量超過消極因素的數量。根據二進制數值,合適的閾值可以是「2」。換句話說,在決定參加聚會之前,需要兩個因素的閾值都是「1」,你才會決定去參加聚會。如果你的朋友要參加聚會(『1'),並且天氣很好(『1'),那麼這就表示你可以參加聚會。
如果天氣不好(『0'),並且聚會地點很遠(『0'),則達不到這一閾值,即使你的朋友參加(『1'),你也不會參加聚會。
神經加權
誠然,這是神經網路基本原理的一個非常基本的例子,但希望它有助於突出二進制值和閾值的概念。然而,決策過程要比這個例子復雜得多,而且通常情況下,一個因素比另一個因素對決策過程的影響更大。
要創建這種變化,可以使用「神經加權」——-通過乘以因素的權重來確定因素的二進制值對其他因素的重要性。
盡管示例中的每個注意事項都可能使你難以決策,但你可能會更重視其中一個或兩個因素。如果你不願意在大雨中出行去聚會,那惡劣的天氣將會超過其他兩個考慮因素。在這一示例中,可以通過賦予更高的權重來更加重視天氣因素的二進制值:
天氣= w5
朋友= w2
距離= w2
如果假設閾值現在已設置為6,則惡劣的天氣(值為0)將阻止其餘輸入達到所需的閾值,因此該節點將不會「觸發」(這意味著你將決定不參加聚會)。
雖然這是一個簡單的示例,但它提供了基於提供的權重做出決策的概述。如果要將其推斷為圖像識別系統,則是否參加聚會(輸入)的各種考慮因素將是給定圖像的折衷特徵,即顏色、大小或形狀。例如,對識別狗進行訓練的系統可以對形狀或顏色賦予更大的權重。
當神經網路處於訓練狀態時,權重和閾值將設置為隨機值。然後,當訓練數據通過網路傳遞時將不斷進行調整,直到獲得一致的輸出為止。
神經網路的好處
神經網路可以有機地學習。也就是說,神經網路的輸出結果並不受輸入數據的完全限制。人工神經網路可以概括輸入數據,使其在模式識別系統中具有價值。
他們還可以找到實現計算密集型答案的捷徑。人工神經網路可以推斷數據點之間的關系,而不是期望數據源中的記錄是明確關聯的。
它們也可以是容錯的。當神經網路擴展到多個系統時,它們可以繞過無法通信的缺失節點。除了圍繞網路中不再起作用的部分進行路由之外,人工神經網路還可以通過推理重新生成數據,並幫助確定不起作用的節點。這對於網路的自診斷和調試非常有用。
但是,深度神經網路提供的最大優勢是能夠處理和聚類非結構化數據,例如圖片、音頻文件、視頻、文本、數字等數據。在分析層次結構中,每一層節點都在前一層的輸出上進行訓練,深層神經網路能夠處理大量的這種非結構化數據,以便在人類處理分析之前找到相似之處。
神經網路的例子
神經網路應用還有許多示例,可以利用它從復雜或不精確數據中獲得見解的能力。
圖像識別人工神經網路可以解決諸如分析特定物體的照片等問題。這種演算法可以用來區分狗和貓。更重要的是,神經網路已經被用於只使用細胞形狀信息來診斷癌症。
近30年來,金融神經網路被用於匯率預測、股票表現和選擇預測。神經網路也被用來確定貸款信用評分,學習正確識別良好的或糟糕的信用風險。而電信神經網路已被電信公司用於通過實時評估網路流量來優化路由和服務質量。
⑨ 如何用 Python 構建神經網路擇時模型
生物神經網路:一般指生物的大腦神經元,細胞,觸點等組成的網路,用於產生生物的意識,幫助生物進行思考和行動。
人工神經網路(Artificial Neural Networks,簡寫為ANNs)也簡稱為神經網路(NNs)或稱作連接模型(Connection Model),它是一種模仿動物神經網路行為特徵,進行分布式並行信息處理的演算法數學模型。這種網路依靠系統的復雜程度,通過調整內部大量節點之間相互連接的關系,從而達到處理信息的目的。
人工神經網路:是一種應用類似於大腦神經突觸聯接的結構進行信息處理的數學模型。在工程與學術界也常直接簡稱為「神經網路」或類神經網路。
⑩ 什麼是BP神經網路
BP演算法的基本思想是:學習過程由信號正向傳播與誤差的反向回傳兩個部分組成;正向傳播時,輸入樣本從輸入層傳入,經各隱層依次逐層處理,傳向輸出層,若輸出層輸出與期望不符,則將誤差作為調整信號逐層反向回傳,對神經元之間的連接權矩陣做出處理,使誤差減小。經反復學習,最終使誤差減小到可接受的范圍。具體步驟如下:
1、從訓練集中取出某一樣本,把信息輸入網路中。
2、通過各節點間的連接情況正向逐層處理後,得到神經網路的實際輸出。
3、計算網路實際輸出與期望輸出的誤差。
4、將誤差逐層反向回傳至之前各層,並按一定原則將誤差信號載入到連接權值上,使整個神經網路的連接權值向誤差減小的方向轉化。
5、対訓練集中每一個輸入—輸出樣本對重復以上步驟,直到整個訓練樣本集的誤差減小到符合要求為止。