本文目錄一覽:
- 1、python 利用pybrain庫實現的BP神經網絡 算法 不會畫收斂圖 求助
- 2、BP神經網絡——Python簡單實現三層神經網絡(Numpy)
- 3、BP學習算法是什麼類型的學習算法?它主要有哪些不足?
- 4、有沒有用python實現的遺傳算法優化BP神經網絡的代碼
- 5、BP神經網絡算法的關鍵詞
python 利用pybrain庫實現的BP神經網絡 算法 不會畫收斂圖 求助
這個神經網絡只能處理分兩類的的情況,這是由這個神經網絡的結構決定了的。 如果想應付分多類的情況,必須對輸出層作softmax處理。
BP神經網絡——Python簡單實現三層神經網絡(Numpy)
我們將在Python中創建一個NeuralNetwork類,以訓練神經元以給出準確的預測。該課程還將具有其他幫助程序功能。
1. 應用Sigmoid函數
我們將使用 Sigmoid函數 (它繪製一條“ S”形曲線)作為神經網絡的激活函數。
2. 訓練模型
這是我們將教神經網絡做出準確預測的階段。每個輸入將具有權重(正或負)。
這意味着具有大量正權重或大量負權重的輸入將對結果輸出產生更大的影響。
我們最初是將每個權重分配給一個隨機數。
本文參考翻譯於此網站 —— 原文
BP學習算法是什麼類型的學習算法?它主要有哪些不足?
BP算法是由學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。由於多層前饋網絡的訓練經常採用誤差反向傳播算法,人們也常把將多層前饋網絡直接稱為BP網絡。
雖然BP算法得到廣泛的應用,但它也存在不足,其主要表現在訓練過程不確定上,具體如下。
1,訓練時間較長。對於某些特殊的問題,運行時間可能需要幾個小時甚至更長,這主要是因為學習率太小所致,可以採用自適應的學習率加以改進。
2,完全不能訓練。訓練時由於權值調整過大使激活函數達到飽和,從而使網絡權值的調節幾乎停滯。為避免這種情況,一是選取較小的初始權值,二是採用較小的學習率。
3,易陷入局部極小值。BP算法可以使網絡權值收斂到一個最終解,但它並不能保證所求為誤差超平面的全局最優解,也可能是一個局部極小值。
這主要是因為BP算法所採用的是梯度下降法,訓練是從某一起始點開始沿誤差函數的斜面逐漸達到誤差的最小值,故不同的起始點可能導致不同的極小值產生,即得到不同的最優解。如果訓練結果未達到預定精度,常常採用多層網絡和較多的神經元,以使訓練結果的精度進一步提高,但與此同時也增加了網絡的複雜性與訓練時間。
4,“喜新厭舊”。訓練過程中,學習新樣本時有遺忘舊樣本的趨勢。
擴展資料:
BP算法最早由Werbos於1974年提出,1985年Rumelhart等人發展了該理論。BP網絡採用有指導的學習方式,其學習包括以下4個過程。
1,組成輸入模式由輸入層經過隱含層向輸出層的“模式順傳播”過程。
2,網絡的期望輸出與實際輸出之差的誤差信號由輸出層經過隱含層逐層休整連接權的“誤差逆傳播”過程。
3,由“模式順傳播”與“誤差逆傳播”的反覆進行的網絡“記憶訓練”過程。
4,網絡趨向收斂即網絡的總體誤差趨向極小值的“學習收斂”過程。
參考資料來源:百度百科-BP算法
有沒有用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
BP神經網絡算法的關鍵詞
BP算法是一種有監督式的學習算法,其主要思想是:輸入學習樣本,使用反向傳播算法對網絡的權值和偏差進行反覆的調整訓練,使輸出的向量與期望向量儘可能地接近,當網絡輸出層的誤差平方和小於指定的誤差時訓練完成,保存網絡的權值和偏差。具體步驟如下:
(1)初始化,隨機給定各連接權[w],[v]及閥值θi,rt。
(2)由給定的輸入輸出模式對計算隱層、輸出層各單元輸出
bj=f(■wijai-θj) ct=f(■vjtbj-rt)
式中:bj為隱層第j個神經元實際輸出;ct為輸出層第t個神經元的實際輸出;wij為輸入層至隱層的連接權;vjt為隱層至輸出層的連接權。
dtk=(ytk-ct)ct(1-ct) ejk=[■dtvjt] bj(1-bj)
(3)選取下一個輸入模式對返回第2步反覆訓練直到網絡設輸出誤差達到要求結束訓練。
傳統的BP算法,實質上是把一組樣本輸入/輸出問題轉化為一個非線性優化問題,並通過負梯度下降算法,利用迭代運算求解權值問題的一種學習方法,但其收斂速度慢且容易陷入局部極小,為此提出了一種新的算法,即高斯消元法。 2.1 改進算法概述
此前有人提出:任意選定一組自由權,通過對傳遞函數建立線性方程組,解得待求權。本文在此基礎上將給定的目標輸出直接作為線性方程等式代數和來建立線性方程組,不再通過對傳遞函數求逆來計算神經元的凈輸出,簡化了運算步驟。沒有採用誤差反饋原理,因此用此法訓練出來的神經網絡結果與傳統算法是等效的。其基本思想是:由所給的輸入、輸出模式對通過作用於神經網絡來建立線性方程組,運用高斯消元法解線性方程組來求得未知權值,而未採用傳統BP網絡的非線性函數誤差反饋尋優的思想。
2.2 改進算法的具體步驟
對給定的樣本模式對,隨機選定一組自由權,作為輸出層和隱含層之間固定權值,通過傳遞函數計算隱層的實際輸出,再將輸出層與隱層間的權值作為待求量,直接將目標輸出作為等式的右邊建立方程組來求解。
現定義如下符號(見圖1):x (p)輸入層的輸入矢量;y (p)輸入層輸入為x (p)時輸出層的實際輸出矢量;t (p)目標輸出矢量;n,m,r分別為輸入層、隱層和輸出層神經元個數;W為隱層與輸入層間的權矩陣;V為輸出層與隱層間的權矩陣。具體步驟如下:
(1)隨機給定隱層和輸入層間神經元的初始權值wij。
(2)由給定的樣本輸入xi(p)計算出隱層的實際輸出aj(p)。為方便起見將圖1網絡中的閥值寫入連接權中去,令:隱層閥值θj=wnj,x(n)=-1,則:
aj(p)=f(■wijxi(p)) (j=1,2…m-1)。
(3)計算輸出層與隱層間的權值vjr。以輸出層的第r個神經元為對象,由給定的輸出目標值tr(p)作為等式的多項式值建立方程,用線性方程組表示為:
a0(1)v1r+a1(1)v2r+…+am(1)vmr=tr(1)a0(2)v1r+a1(2)v2r+…+am(2)vmr=tr(2) ……a0(p)v1r+a1(p)v2r+…+am(p)vmr=tr(p) 簡寫為: Av=T
為了使該方程組有唯一解,方程矩陣A為非奇異矩陣,其秩等於其增廣矩陣的秩,即:r(A)=r(A┊B),且方程的個數等於未知數的個數,故取m=p,此時方程組的唯一解為: Vr=[v0r,v2r,…vmr](r=0,1,2…m-1)
(4)重複第三步就可以求出輸出層m個神經元的權值,以求的輸出層的權矩陣加上隨機固定的隱層與輸入層的權值就等於神經網絡最後訓練的權矩陣。 現以神經網絡最簡單的XOR問題用VC編程運算進行比較(取神經網絡結構為2-4-1型),傳統算法和改進BP算法的誤差(取動量因子α=0.001 5,步長η=1.653)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/227347.html