[轉]BP人工神經網路的介紹與實現

來源:互聯網
上載者:User

標籤:title   機器人   sed   領域   bp神經網路   用例   介紹   成功   二進位   

神經網路概念與適合領域

神經網路最早的研究是 40 年代心理學家 Mcculloch 和數學家 Pitts 合作提出的 ,他們提出的MP模型拉開了神經網路研究的序幕。

神經網路的發展大致經過 3 個階段:1947~1969 年為初期,在這期間科學家們提出了許多神經元模型和學習規則,如 MP 模型、HEBB 學習規則和感知器等;60 年代末期至 80 年代中期,神經網路控制與整個神經網路研究一樣,處於低潮。在此期間,科學家們做了大量的工作,如 Hopfield 教授對網路引入能量函數的概念,給出了網路的穩定性判據,提出了用於聯想記憶和最佳化計算的途徑。1984年,Hiton 教授提出 Bol tzman 機模型;1986年 Kumelhart 等人提出誤差反向傳播神經網路,簡稱 BP 網路。目前,BP網路已成為廣泛使用的網路。1987年至今為發展期,在此期間,神經網路受到國際重視,各個國家都展開研究,形成神經網路發展的另一個高潮。

人工神經網路(ANN)受到生物學的啟發是生物神經網路的一種類比和近似,它從結構、實現機理和功能上類比生物神經網路。從系統觀點看,人工神經元網路是由大量神經元通過極其豐富和完善的串連而構成的自適應非線性動態系統。人工神經網路,因為生物的學習系統是由相互串連的神經元組成的異常複雜的網路,其中每一個神經元單元有一定數量的實值輸入,併產生單一的實數值輸出。1960 年威德羅和霍夫率先把神經網路用於自動控制研究。神經網路以其獨特的結構和處理資訊的方法,在許多實際應用領域中取得了顯著的成效,主要應用如下:自動控制領域、處理組合最佳化問題、模式識別、影像處理、感應器訊號處理、機器人控制、訊號處理、衛生保健、醫學、經濟、化工領 域、焊接領域、地理領域、資料採礦、電力系統、交通、軍事、礦業、農業和氣象等領域。

神經網路基本結構

人工神經網路由神經元模型構成,這種由許多神經元組成的資訊處理網路具有並行分布結構。每個神經元具有單一輸出,並且能夠與其它神經元串連;存在許多(多重)輸出串連方法,每種串連方法對應一個串連權係數。可把 ANN 看成是以處理單元 PE(processing element) 為節點,用加權有向弧(鏈)相互串連而成的有向圖。令來自其它處理單元(神經元)i的資訊為Xi,它們與本處理單元的互相作用強度為 Wi,i=0,1,…,n-1,處理單元的內部閾值為 θ。那麼本神經元的輸入為:

而處理單元的輸出為:

式中,xi為第 i 個元素的輸入,wi 為第 i 個元素與本處理單元的互聯權重。f 稱為激發函數(activation function)或作用函數。它決定節點(神經元)的輸出。該輸出為 1 或 0 取決於其輸入之和大於或小於內部閾值 θ。

所示神經元單元由多個輸入Xi,i=1,2,...,n和一個輸出y組成。中間狀態由輸入訊號的權和表示,而輸出為:

訓練網路

神經網路結構被設計完成,有了輸入、輸出參數後,我們就要對網路進行訓練。神經網路的訓練有包括感知器訓練、delta 規則訓練和反向傳播演算法等訓練,其中感知器訓練是基礎。

感知器和 delta 訓練規則

理解神經網路的第一步是從對抽象生物神經開始,本文用到的人工神經網路系統是以被稱為感知器的單元為基礎,。感知器以一個實數值向量作為輸入,計算這些輸入的線性組合,如果結果大於某個閾值,就輸出 1,否則輸出 -1,如果 x 從 1 到 n,則感知器計算公式如下:

其中每個 wi 是一個實數常量,或叫做權值,用來決定輸入 xi 對感知器輸出的貢獻率。特別地,-w0是閾值。

儘管當訓練範例線性可分時,感知器法則可以成功地找到一個權向量,但如果範例不是線性可分時它將不能收斂,因此人們設計了另一個訓練法則來克服這個不足,這個訓練規則叫做 delta 規則。感知器訓練規則是基於這樣一種思路--權係數的調整是由目標和輸出的差分方程運算式決定。而 delta 規則是基於梯度降落這樣一種思路。這個複雜的數學概念可以舉個簡單的例子來表示。從給定的幾點來看,向南的那條路徑比向東那條更陡些。向東就像從懸崖上掉下來,但是向南就是沿著一個略微傾斜的斜坡下來,向西象登一座陡峭的山,而北邊則到了平地,只要慢慢的閑逛就可以了。所以您要尋找的是到達平地的所有路徑中將陡峭的總和減少到最小的路徑。在權係數的調整中,神經網路將會找到一種將誤差減少到最小的權係數的分配方式。這部分我們不做詳細介紹,如有需要大家可參考相關的人工智慧書籍。

反向傳播演算法

人工神經網路學習為學習實數值和向量值函數提供了一種實際的方法,對於連續的和離散的屬性都可以使用。並且對訓練資料中的雜訊具有很好的健壯性。反向傳播演算法是最常見的網路學習演算法。這是我們所知用來訓練神經網路很普遍的方法,反向傳播演算法是一種具有很強學習能力的系統,結構比較簡單,且易於編程。

魯梅爾哈特(Rumelhart)和麥克萊蘭(Meclelland)於 1985 年發展了 BP 網路學習演算法,實現了明斯基的多層網路設想。BP網路不僅含有輸入節點和輸出節點,而且含有一層或多層隱(層)節點。輸入訊號先向前傳遞到隱藏節點,經過作用後,再把隱藏節點的輸出資訊傳遞到輸出節點,最後給出輸出結果。節點的激發函數一般選用 S 型函數。

反向傳播(back-propagation,BP)演算法是一種計算單個權值變化引起網路效能變化值的較為簡單的方法。由於BP演算法過程包含從輸出節點開始,反向地向第一隱含層(即最接近輸入層的隱含層)傳播由總誤差引起的權值修正,所以稱為"反向傳播"。反向傳播特性與所求解問題的性質和所作細節選擇有極為密切的關係。

對於由一系列確定的單元互連形成的多層網路,反向傳播演算法可用來學習這個多層網路的權值。它採用梯度下降方法試圖最小化網路輸出值和目標值之間的誤差平方,因為我們要考慮多個輸出單元的網路,而不是像以前只考慮單個單元,所以我們要重新計算誤差E,以便對所有網路輸出的誤差求和:

Outpus 是網路輸出單元的集合,tkd 和 okd 是與訓練範例 d 和第 k 個輸出單元的相關輸出值.

反向傳播演算法的一個迷人特性是:它能夠在網路內部的隱藏層發現有用的中間表示:

1.訓練範例僅包含網路輸入和輸出,權值調節的過程可以自由地設定權值,來定義任何隱藏單元表示,這些隱藏單元表示在使誤差E達到最小時最有效。

2.引導反向傳播演算法定義新的隱藏層特徵,這些特徵在輸入中沒有明確表示出來,但能捕捉輸入執行個體中與學習目標函數最相關的特徵

反向傳播訓練神經元的演算法如下:

C++簡單實現與測試

以下C++代碼實現了BP網路,通過8個3位二進位樣本對應一個期望輸出,訓練BP網路,最後訓練好的網路可以將輸入的三位位元對應輸出一位十進位數。

View Code


參考文獻

神經網路介紹——利用反向傳播演算法的模式學習 http://www.ibm.com/developerworks/cn/linux/other/l-neural/index.html

人工智慧 Java 坦克機器人系列: 神經網路,上部 http://www.ibm.com/developerworks/cn/java/j-lo-robocode3/index.html

人工智慧 Java 坦克機器人系列: 神經網路,下部 http://www.ibm.com/developerworks/cn/java/j-lo-robocode4/

使用 Python 構造神經網路--Hopfield 網路可以重構失真的圖案並消除雜訊 http://www.ibm.com/developerworks/cn/linux/l-neurnet/

提供一個Matlab的BP神經網路的基礎資料 http://www.cnblogs.com/galaxyprince/archive/2010/12/20/1911157.html

codeproject上的一個實現,作者已經給出好幾種形式的應用例子 http://www.codeproject.com/KB/recipes/aforge_neuro.aspx

 

[轉]BP人工神經網路的介紹與實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.