當前位置:首頁 » 編程語言 » bp演算法python

bp演算法python

發布時間: 2022-09-02 04:08:02

1. BP演算法的實現步驟

BP演算法實現步驟(軟體):
1)初始化
2)輸入訓練樣本對,計算各層輸出
3)計算網路輸出誤差
4)計算各層誤差信號
5)調整各層權值
6)檢查網路總誤差是否達到精度要求
滿足,則訓練結束;不滿足,則返回步驟2)
3、多層感知器(基於BP演算法)的主要能力:
1)非線性映射:足夠多樣本->學習訓練
能學習和存儲大量輸入-輸出模式映射關系。只要能提供足夠多的樣本模式對供BP網路進行學習訓練,它便能完成由n維輸入空間到m維輸出空間的非線性映射。
2)泛化:輸入新樣本(訓練時未有)->完成正確的輸入、輸出映射
3)容錯:個別樣本誤差不能左右對權矩陣的調整
4、標准BP演算法的缺陷:
1)易形成局部極小(屬貪婪演算法,局部最優)而得不到全局最優;
2)訓練次數多使得學習效率低下,收斂速度慢(需做大量運算);
3)隱節點的選取缺乏理論支持;
4)訓練時學習新樣本有遺忘舊樣本趨勢。
注3:改進演算法—增加動量項、自適應調整學習速率(這個似乎不錯)及引入陡度因子

2. python 利用pybrain庫實現的BP神經網路 演算法 不會畫收斂圖 求助

這個神經網路只能處理分兩類的的情況,這是由這個神經網路的結構決定了的。 如果想應付分多類的情況,必須對輸出層作softmax處理。

3. 深入淺出BP神經網路演算法的原理

深入淺出BP神經網路演算法的原理
相信每位剛接觸神經網路的時候都會先碰到BP演算法的問題,如何形象快速地理解BP神經網路就是我們學習的高級樂趣了(畫外音:樂趣?你在跟我談樂趣?)
本篇博文就是要簡單粗暴地幫助各位童鞋快速入門採取BP演算法的神經網路。
BP神經網路是怎樣的一種定義?看這句話:一種按「誤差逆傳播演算法訓練」的多層前饋網路。
BP的思想就是:利用輸出後的誤差來估計輸出層前一層的誤差,再用這層誤差來估計更前一層誤差,如此獲取所有各層誤差估計。這里的誤差估計可以理解為某種偏導數,我們就是根據這種偏導數來調整各層的連接權值,再用調整後的連接權值重新計算輸出誤差。直到輸出的誤差達到符合的要求或者迭代次數溢出設定值。
說來說去,「誤差」這個詞說的很多嘛,說明這個演算法是不是跟誤差有很大的關系?
沒錯,BP的傳播對象就是「誤差」,傳播目的就是得到所有層的估計誤差。
它的學習規則是:使用最速下降法,通過反向傳播(就是一層一層往前傳)不斷調整網路的權值和閾值,最後使全局誤差系數最小。
它的學習本質就是:對各連接權值的動態調整。

拓撲結構如上圖:輸入層(input),隱藏層(hide layer),輸出層(output)
BP網路的優勢就是能學習和儲存大量的輸入輸出的關系,而不用事先指出這種數學關系。那麼它是如何學習的?
BP利用處處可導的激活函數來描述該層輸入與該層輸出的關系,常用S型函數δ來當作激活函數。

我們現在開始有監督的BP神經網路學習演算法:
1、正向傳播得到輸出層誤差e
=>輸入層輸入樣本=>各隱藏層=>輸出層
2、判斷是否反向傳播
=>若輸出層誤差與期望不符=>反向傳播
3、誤差反向傳播
=>誤差在各層顯示=>修正各層單元的權值,直到誤差減少到可接受程度。
演算法闡述起來比較簡單,接下來通過數學公式來認識BP的真實面目。
假設我們的網路結構是一個含有N個神經元的輸入層,含有P個神經元的隱層,含有Q個神經元的輸出層。

這些變數分別如下:

認識好以上變數後,開始計算:
一、用(-1,1)內的隨機數初始化誤差函數,並設定精度ε,最多迭代次數M
二、隨機選取第k個輸入樣本及對應的期望輸出

重復以下步驟至誤差達到要求:
三、計算隱含層各神經元的輸入和輸出

四、計算誤差函數e對輸出層各神經元的偏導數,根據輸出層期望輸出和實際輸出以及輸出層輸入等參數計算。

五、計算誤差函數對隱藏層各神經元的偏導數,根據後一層(這里即輸出層)的靈敏度(稍後介紹靈敏度)δo(k),後一層連接權值w,以及該層的輸入值等參數計算
六、利用第四步中的偏導數來修正輸出層連接權值

七、利用第五步中的偏導數來修正隱藏層連接權值

八、計算全局誤差(m個樣本,q個類別)

比較具體的計算方法介紹好了,接下來用比較簡潔的數學公式來大致地概括這個過程,相信看完上述的詳細步驟都會有些了解和領悟。
假設我們的神經網路是這樣的,此時有兩個隱藏層。
我們先來理解靈敏度是什麼?
看下面一個公式:

這個公式是誤差對b的一個偏導數,這個b是怎麼?它是一個基,靈敏度δ就是誤差對基的變化率,也就是導數。
因為?u/?b=1,所以?E/?b=?E/?u=δ,也就是說bias基的靈敏度?E/?b=δ等於誤差E對一個節點全部輸入u的導數?E/?u。
也可以認為這里的靈敏度等於誤差E對該層輸入的導數,注意了,這里的輸入是上圖U級別的輸入,即已經完成層與層權值計算後的輸入。
每一個隱藏層第l層的靈敏度為:

這里的「?」表示每個元素相乘,不懂的可與上面詳細公式對比理解
而輸出層的靈敏度計算方法不同,為:

而最後的修正權值為靈敏度乘以該層的輸入值,注意了,這里的輸入可是未曾乘以權值的輸入,即上圖的Xi級別。

對於每一個權值(W)ij都有一個特定的學習率ηIj,由演算法學習完成。

4. 有沒有用python實現的遺傳演算法優化BP神經網路的代碼

下面是函數實現的代碼部分:
clc
clear all
close all
%% 載入神經網路的訓練樣本 測試樣本每列一個樣本 輸入P 輸出T,T是標簽
%樣本數據就是前面問題描述中列出的數據
%epochs是計算時根據輸出誤差返回調整神經元權值和閥值的次數
load data
% 初始隱層神經元個數
hiddennum=31;
% 輸入向量的最大值和最小值
threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];
inputnum=size(P,1); % 輸入層神經元個數
outputnum=size(T,1); % 輸出層神經元個數
w1num=inputnum*hiddennum; % 輸入層到隱層的權值個數
w2num=outputnum*hiddennum;% 隱層到輸出層的權值個數
N=w1num+hiddennum+w2num+outputnum; %待優化的變數的個數
%% 定義遺傳演算法參數
NIND=40; %個體數目
MAXGEN=50; %最大遺傳代數
PRECI=10; %變數的二進制位數
GGAP=0.95; %代溝
px=0.7; %交叉概率
pm=0.01; %變異概率
trace=zeros(N+1,MAXGEN); %尋優結果的初始值
FieldD=[repmat(PRECI,1,N);repmat([-0.5;0.5],1,N);repmat([1;0;1;1],1,N)]; %區域描述器
Chrom=crtbp(NIND,PRECI*N); %初始種群
%% 優化
gen=0; %代計數器
X=bs2rv(Chrom,FieldD); %計算初始種群的十進制轉換
ObjV=Objfun(X,P,T,hiddennum,P_test,T_test); %計算目標函數值
while gen

5. BP人工神經網路方法

(一)方法原理

人工神經網路是由大量的類似人腦神經元的簡單處理單元廣泛地相互連接而成的復雜的網路系統。理論和實踐表明,在信息處理方面,神經網路方法比傳統模式識別方法更具有優勢。人工神經元是神經網路的基本處理單元,其接收的信息為x1,x2,…,xn,而ωij表示第i個神經元到第j個神經元的連接強度或稱權重。神經元的輸入是接收信息X=(x1,x2,…,xn)與權重W={ωij}的點積,將輸入與設定的某一閾值作比較,再經過某種神經元激活函數f的作用,便得到該神經元的輸出Oi。常見的激活函數為Sigmoid型。人工神經元的輸入與輸出的關系為

地球物理勘探概論

式中:xi為第i個輸入元素,即n維輸入矢量X的第i個分量;ωi為第i個輸入與處理單元間的互聯權重;θ為處理單元的內部閾值;y為處理單元的輸出。

常用的人工神經網路是BP網路,它由輸入層、隱含層和輸出層三部分組成。BP演算法是一種有監督的模式識別方法,包括學習和識別兩部分,其中學習過程又可分為正向傳播和反向傳播兩部分。正向傳播開始時,對所有的連接權值置隨機數作為初值,選取模式集的任一模式作為輸入,轉向隱含層處理,並在輸出層得到該模式對應的輸出值。每一層神經元狀態隻影響下一層神經元狀態。此時,輸出值一般與期望值存在較大的誤差,需要通過誤差反向傳遞過程,計算模式的各層神經元權值的變化量

。這個過程不斷重復,直至完成對該模式集所有模式的計算,產生這一輪訓練值的變化量Δωij。在修正網路中各種神經元的權值後,網路重新按照正向傳播方式得到輸出。實際輸出值與期望值之間的誤差可以導致新一輪的權值修正。正向傳播與反向傳播過程循環往復,直到網路收斂,得到網路收斂後的互聯權值和閾值。

(二)BP神經網路計算步驟

(1)初始化連接權值和閾值為一小的隨機值,即W(0)=任意值,θ(0)=任意值。

(2)輸入一個樣本X。

(3)正向傳播,計算實際輸出,即根據輸入樣本值、互聯權值和閾值,計算樣本的實際輸出。其中輸入層的輸出等於輸入樣本值,隱含層和輸出層的輸入為

地球物理勘探概論

輸出為

地球物理勘探概論

式中:f為閾值邏輯函數,一般取Sigmoid函數,即

地球物理勘探概論

式中:θj表示閾值或偏置;θ0的作用是調節Sigmoid函數的形狀。較小的θ0將使Sigmoid函數逼近於閾值邏輯單元的特徵,較大的θ0將導致Sigmoid函數變平緩,一般取θ0=1。

(4)計算實際輸出與理想輸出的誤差

地球物理勘探概論

式中:tpk為理想輸出;Opk為實際輸出;p為樣本號;k為輸出節點號。

(5)誤差反向傳播,修改權值

地球物理勘探概論

式中:

地球物理勘探概論

地球物理勘探概論

(6)判斷收斂。若誤差小於給定值,則結束,否則轉向步驟(2)。

(三)塔北雅克拉地區BP神經網路預測實例

以塔北雅克拉地區S4井為已知樣本,取氧化還原電位,放射性元素Rn、Th、Tc、U、K和地震反射

構造面等7個特徵為識別的依據。

構造面反映了局部構造的起伏變化,其局部隆起部位應是油氣運移和富集的有利部位,它可以作為判斷含油氣性的諸種因素之一。在該地區投入了高精度重磁、土壤微磁、頻譜激電等多種方法,一些參數未入選為判別的特徵參數,是因為某些參數是相關的。在使用神經網路方法判別之前,還採用K-L變換(Karhaem-Loeve)來分析和提取特徵。

S4井位於測區西南部5線25點,是區內唯一已知井。該井在5390.6m的侏羅系地層獲得40.6m厚的油氣層,在5482m深的震旦系地層中獲58m厚的油氣層。取S4井周圍9個點,即4~6線的23~25 點作為已知油氣的訓練樣本;由於區內沒有未見油的鑽井,只好根據地質資料分析,選取14~16線的55~57點作為非油氣的訓練樣本。BP網路學習迭代17174次,總誤差為0.0001,學習效果相當滿意。以學習後的網路進行識別,得出結果如圖6-2-4所示。

圖6-2-4 塔北雅克拉地區BP神經網路聚類結果

(據劉天佑等,1997)

由圖6-2-4可見,由預測值大於0.9可得5個大封閉圈遠景區,其中測區南部①號遠景區對應著已知油井S4井;②、③號油氣遠景區位於地震勘探所查明的托庫1、2號構造,該兩個構造位於沙雅隆起的東段,其西段即為1984年鑽遇高產油氣流的Sch2井,應是含油氣性好的遠景區;④、⑤號遠景區位於大澇壩構造,是yh油田的組成部分。

6. BP學習演算法是什麼類型的學習演算法它主要有哪些不足

BP演算法是由學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。由於多層前饋網路的訓練經常採用誤差反向傳播演算法,人們也常把將多層前饋網路直接稱為BP網路。

雖然BP演算法得到廣泛的應用,但它也存在不足,其主要表現在訓練過程不確定上,具體如下。

1,訓練時間較長。對於某些特殊的問題,運行時間可能需要幾個小時甚至更長,這主要是因為學習率太小所致,可以採用自適應的學習率加以改進。

2,完全不能訓練。訓練時由於權值調整過大使激活函數達到飽和,從而使網路權值的調節幾乎停滯。為避免這種情況,一是選取較小的初始權值,二是採用較小的學習率。

3,易陷入局部極小值。BP演算法可以使網路權值收斂到一個最終解,但它並不能保證所求為誤差超平面的全局最優解,也可能是一個局部極小值。

這主要是因為BP演算法所採用的是梯度下降法,訓練是從某一起始點開始沿誤差函數的斜面逐漸達到誤差的最小值,故不同的起始點可能導致不同的極小值產生,即得到不同的最優解。如果訓練結果未達到預定精度,常常採用多層網路和較多的神經元,以使訓練結果的精度進一步提高,但與此同時也增加了網路的復雜性與訓練時間。

4,「喜新厭舊」。訓練過程中,學習新樣本時有遺忘舊樣本的趨勢。

(6)bp演算法python擴展閱讀:

BP演算法最早由Werbos於1974年提出,1985年Rumelhart等人發展了該理論。BP網路採用有指導的學習方式,其學習包括以下4個過程。

1,組成輸入模式由輸入層經過隱含層向輸出層的「模式順傳播」過程。

2,網路的期望輸出與實際輸出之差的誤差信號由輸出層經過隱含層逐層休整連接權的「誤差逆傳播」過程。

3,由「模式順傳播」與「誤差逆傳播」的反復進行的網路「記憶訓練」過程。

4,網路趨向收斂即網路的總體誤差趨向極小值的「學習收斂」過程。

7. bp演算法是什麼

誤差反向傳播演算法:

BP演算法的基本思想是,學習過程包括兩個過程:信號前向傳播和誤差後向傳播。

(1)前向傳播:輸入樣本->輸入層->各隱層(處理)->輸出層。

(2)錯誤反向傳播:輸出錯誤(某種形式)->隱藏層(逐層)->輸入層。

BP演算法基本介紹:

多層隱含層前饋網路可以極大地提高神經網路的分類能力,但長期以來一直沒有提出解決權值調整問題的博弈演算法。

1986年,Rumelhart和McCelland領導的科學家團隊出版了《並行分布式處理》一書,詳細分析了具有非線性連續傳遞函數的多層前饋網路的誤差反向比例(BP)演算法,實現了Minsky關於多層網路的思想。由於誤差的反向傳播演算法常用於多層前饋網路的訓練,人們常直接稱多層前饋網路為BP網路。

熱點內容
尾貨棉服直播間腳本 發布:2025-01-16 01:21:45 瀏覽:227
vb編程步驟 發布:2025-01-16 01:11:58 瀏覽:201
bb霜解壓 發布:2025-01-16 01:11:11 瀏覽:596
編程懟人 發布:2025-01-16 00:53:08 瀏覽:760
建立共享伺服器地址 發布:2025-01-16 00:26:40 瀏覽:565
android開機動畫修改 發布:2025-01-16 00:26:26 瀏覽:872
怎麼解壓pc版游戲 發布:2025-01-16 00:16:32 瀏覽:122
v9更新到91有方舟編譯器嗎 發布:2025-01-16 00:11:49 瀏覽:500
AB系統編程 發布:2025-01-16 00:09:37 瀏覽:621
存儲過程如何遍歷一個表的數據 發布:2025-01-16 00:08:34 瀏覽:875