本文目錄一覽:
什麼是BP神經網絡?
BP算法的基本思想是:學習過程由信號正向傳播與誤差的反向回傳兩個部分組成;正向傳播時,輸入樣本從輸入層傳入,經各隱層依次逐層處理,傳向輸出層,若輸出層輸出與期望不符,則將誤差作為調整信號逐層反向回傳,對神經元之間的連接權矩陣做出處理,使誤差減小。經反覆學習,最終使誤差減小到可接受的範圍。具體步驟如下:
1、從訓練集中取出某一樣本,把信息輸入網絡中。
2、通過各節點間的連接情況正向逐層處理後,得到神經網絡的實際輸出。
3、計算網絡實際輸出與期望輸出的誤差。
4、將誤差逐層反向回傳至之前各層,並按一定原則將誤差信號加載到連接權值上,使整個神經網絡的連接權值向誤差減小的方向轉化。
5、対訓練集中每一個輸入—輸出樣本對重複以上步驟,直到整個訓練樣本集的誤差減小到符合要求為止。
BP神經網絡——Python簡單實現三層神經網絡(Numpy)
我們將在Python中創建一個NeuralNetwork類,以訓練神經元以給出準確的預測。該課程還將具有其他幫助程序功能。
1. 應用Sigmoid函數
我們將使用 Sigmoid函數 (它繪製一條“ S”形曲線)作為神經網絡的激活函數。
2. 訓練模型
這是我們將教神經網絡做出準確預測的階段。每個輸入將具有權重(正或負)。
這意味着具有大量正權重或大量負權重的輸入將對結果輸出產生更大的影響。
我們最初是將每個權重分配給一個隨機數。
本文參考翻譯於此網站 —— 原文
BP神經網絡的原理的BP什麼意思
人工神經網絡有很多模型,但是日前應用最廣、基本思想最直觀、最容易被理解的是多層前饋神經網絡及誤差逆傳播學習算法(Error Back-Prooaeation),簡稱為BP網絡。
在1986年以Rumelhart和McCelland為首的科學家出版的《Parallel Distributed Processing》一書中,完整地提出了誤差逆傳播學習算法,並被廣泛接受。多層感知網絡是一種具有三層或三層以上的階層型神經網絡。典型的多層感知網絡是三層、前饋的階層網絡(圖4.1),即:輸入層、隱含層(也稱中間層)、輸出層,具體如下:
圖4.1 三層BP網絡結構
(1)輸入層
輸入層是網絡與外部交互的接口。一般輸入層只是輸入矢量的存儲層,它並不對輸入矢量作任何加工和處理。輸入層的神經元數目可以根據需要求解的問題和數據表示的方式來確定。一般而言,如果輸入矢量為圖像,則輸入層的神經元數目可以為圖像的像素數,也可以是經過處理後的圖像特徵數。
(2)隱含層
1989年,Robert Hecht Nielsno證明了對於任何在閉區間內的一個連續函數都可以用一個隱層的BP網絡來逼近,因而一個三層的BP網絡可以完成任意的n維到m維的映射。增加隱含層數雖然可以更進一步的降低誤差、提高精度,但是也使網絡複雜化,從而增加了網絡權值的訓練時間。誤差精度的提高也可以通過增加隱含層中的神經元數目來實現,其訓練效果也比增加隱含層數更容易觀察和調整,所以一般情況應優先考慮增加隱含層的神經元個數,再根據具體情況選擇合適的隱含層數。
(3)輸出層
輸出層輸出網絡訓練的結果矢量,輸出矢量的維數應根據具體的應用要求來設計,在設計時,應儘可能減少系統的規模,使系統的複雜性減少。如果網絡用作識別器,則識別的類別神經元接近1,而其它神經元輸出接近0。
以上三層網絡的相鄰層之間的各神經元實現全連接,即下一層的每一個神經元與上一層的每個神經元都實現全連接,而且每層各神經元之間無連接,連接強度構成網絡的權值矩陣W。
BP網絡是以一種有教師示教的方式進行學習的。首先由教師對每一種輸入模式設定一個期望輸出值。然後對網絡輸入實際的學習記憶模式,並由輸入層經中間層向輸出層傳播(稱為“模式順傳播”)。實際輸出與期望輸出的差即是誤差。按照誤差平方最小這一規則,由輸出層往中間層逐層修正連接權值,此過程稱為“誤差逆傳播”(陳正昌,2005)。所以誤差逆傳播神經網絡也簡稱BP(Back Propagation)網。隨着“模式順傳播”和“誤差逆傳播”過程的交替反覆進行。網絡的實際輸出逐漸向各自所對應的期望輸出逼近,網絡對輸入模式的響應的正確率也不斷上升。通過此學習過程,確定下各層間的連接權值後。典型三層BP神經網絡學習及程序運行過程如下(標誌淵,2006):
(1)首先,對各符號的形式及意義進行說明:
網絡輸入向量Pk=(a1,a2,…,an);
網絡目標向量Tk=(y1,y2,…,yn);
中間層單元輸入向量Sk=(s1,s2,…,sp),輸出向量Bk=(b1,b2,…,bp);
輸出層單元輸入向量Lk=(l1,l2,…,lq),輸出向量Ck=(c1,c2,…,cq);
輸入層至中間層的連接權wij,i=1,2,…,n,j=1,2,…p;
中間層至輸出層的連接權vjt,j=1,2,…,p,t=1,2,…,p;
中間層各單元的輸出閾值θj,j=1,2,…,p;
輸出層各單元的輸出閾值γj,j=1,2,…,p;
參數k=1,2,…,m。
(2)初始化。給每個連接權值wij、vjt、閾值θj與γj賦予區間(-1,1)內的隨機值。
(3)隨機選取一組輸入和目標樣本
提供給網絡。
(4)用輸入樣本
、連接權wij和閾值θj計算中間層各單元的輸入sj,然後用sj通過傳遞函數計算中間層各單元的輸出bj。
基坑降水工程的環境效應與評價方法
bj=f(sj) j=1,2,…,p (4.5)
(5)利用中間層的輸出bj、連接權vjt和閾值γt計算輸出層各單元的輸出Lt,然後通過傳遞函數計算輸出層各單元的響應Ct。
基坑降水工程的環境效應與評價方法
Ct=f(Lt) t=1,2,…,q (4.7)
(6)利用網絡目標向量
,網絡的實際輸出Ct,計算輸出層的各單元一般化誤差
。
基坑降水工程的環境效應與評價方法
(7)利用連接權vjt、輸出層的一般化誤差dt和中間層的輸出bj計算中間層各單元的一般化誤差
。
基坑降水工程的環境效應與評價方法
(8)利用輸出層各單元的一般化誤差
與中間層各單元的輸出bj來修正連接權vjt和閾值γt。
基坑降水工程的環境效應與評價方法
(9)利用中間層各單元的一般化誤差
,輸入層各單元的輸入Pk=(a1,a2,…,an)來修正連接權wij和閾值θj。
基坑降水工程的環境效應與評價方法
(10)隨機選取下一個學習樣本向量提供給網絡,返回到步驟(3),直到m個訓練樣本訓練完畢。
(11)重新從m個學習樣本中隨機選取一組輸入和目標樣本,返回步驟(3),直到網路全局誤差E小於預先設定的一個極小值,即網絡收斂。如果學習次數大於預先設定的值,網絡就無法收斂。
(12)學習結束。
可以看出,在以上學習步驟中,(8)、(9)步為網絡誤差的“逆傳播過程”,(10)、(11)步則用於完成訓練和收斂過程。
通常,經過訓練的網絡還應該進行性能測試。測試的方法就是選擇測試樣本向量,將其提供給網絡,檢驗網絡對其分類的正確性。測試樣本向量中應該包含今後網絡應用過程中可能遇到的主要典型模式(宋大奇,2006)。這些樣本可以直接測取得到,也可以通過仿真得到,在樣本數據較少或者較難得到時,也可以通過對學習樣本加上適當的噪聲或按照一定規則插值得到。為了更好地驗證網絡的泛化能力,一個良好的測試樣本集中不應該包含和學習樣本完全相同的模式(董軍,2007)。
BPNN神經網絡的Python實現
關於前置的數學知識,可以查看
首先是bpnn.py,實現了BPNeuralNetwork類。
然後是__init__.py,使用mnist手寫數字數據集對我們的BPNN進行測試,準確率可達97%以上。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/194630.html