1. 程式人生 > >BP神經網路原理及matlab例項

BP神經網路原理及matlab例項

轉載:http://blog.csdn.net/u013007900/article/details/50118945

上一次我們講了M-P模型,它實際上就是對單個神經元的一種建模,還不足以模擬人腦神經系統的功能。由這些人工神經元構建出來的網路,才能夠具有學習、聯想、記憶和模式識別的能力。BP網路就是一種簡單的人工神經網路。 
本文具體來介紹一下一種非常常見的神經網路模型——反向傳播(Back Propagation)神經網路。

概述

BP(Back Propagation)神經網路是1986年由Rumelhart和McCelland為首的科研小組提出,參見他們發表在Nature上的論文 

Learning representations by back-propagating errors 。

BP神經網路是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的 輸入-輸出模式對映關係,而無需事前揭示描述這種對映關係的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷 調整網路的權值和閾值,使網路的誤差平方和最小。

BP演算法的基本思想

上一次我們說到,多層感知器在如何獲取隱層的權值的問題上遇到了瓶頸。既然我們無法直接得到隱層的權值,能否先通過輸出層得到輸出結果和期望輸出的誤差來間接調整隱層的權值呢?BP演算法就是採用這樣的思想設計出來的演算法,它的基本思想是,學習過程由訊號的正向傳播與誤差的反向傳播兩個過程組成。

  • 正向傳播時,輸入樣本從輸入層傳入,經各隱層逐層處理後,傳向輸出層。若輸出層的實際輸出與期望的輸出(教師訊號)不符,則轉入誤差的反向傳播階段。
  • 反向傳播時,將輸出以某種形式通過隱層向輸入層逐層反傳,並將誤差分攤給各層的所有單元,從而獲得各層單元的誤差訊號,此誤差訊號即作為修正各單元權值的依據。

這兩個過程的具體流程會在後文介紹。

BP演算法的訊號流向圖如下圖所示 

這裡寫圖片描述

BP網路特性分析——BP三要素

我們分析一個ANN時,通常都是從它的三要素入手,即 
1)網路拓撲結構; 
2)傳遞函式; 
3)學習演算法。 

這裡寫圖片描述

每一個要素的特性加起來就決定了這個ANN的功能特性。所以,我們也從這三要素入手對BP網路的研究。

3.1 BP網路的拓撲結構

上一次已經說了,BP網路實際上就是多層感知器,因此它的拓撲結構和多層感知器的拓撲結構相同。由於單隱層(三層)感知器已經能夠解決簡單的非線性問題,因此應用最為普遍。三層感知器的拓撲結構如下圖所示。 
一個最簡單的三層BP: 

這裡寫圖片描述

3.2 BP網路的傳遞函式

BP網路採用的傳遞函式是非線性變換函式——Sigmoid函式(又稱S函式)。其特點是函式本身及其導數都是連續的,因而在處理上十分方便。為什麼要選擇這個函式,等下在介紹BP網路的學習演算法的時候會進行進一步的介紹。 
單極性S型函式曲線如下圖所示。 

f(x)=11+ex
這裡寫圖片描述

雙極性S型函式曲線如下圖所示。 
f(x)=1ex1+ex
這裡寫圖片描述

3.3 BP網路的學習演算法

BP網路的學習演算法就是BP演算法,又叫 δ 演算法(在ANN的學習過程中我們會發現不少具有多個名稱的術語), 以三層感知器為例,當網路輸出與期望輸出不等時,存在輸出誤差 E ,定義如下

E=12(dO)2=12κ=1(dkok)2

將以上誤差定義式展開至隱層,有 

E=12κ=1[dκf(netκ)]2=12κ=1[dκf(mj=0ωjκyj)]2

進一步展開至輸入層,有 

E=12κ=1dκf[mj=0

相關推薦

BP神經網路原理matlab例項

轉載:http://blog.csdn.net/u013007900/article/details/50118945 上一次我們講了M-P模型,它實際上就是對單個神經元的一種建模,還不足以模擬人腦神經系統的功能。由這些人工神經元構建出來的網路,才能夠具有學

130行程式碼實現BP神經網路原理應用舉例

    優化演算法是機器學習的一個重要組成部分,BP神經網路是深度學習的基礎,BP神經網路原理非常簡單,幾乎可以理解作是logistic迴歸的一種集合方式,在前面的博文中,筆者利用R語言實現了幾種優化演算法,本文以前面提到的粒子群演算法為工具,以神經網路的原理為基礎,實現了

BP神經網路學習matlab實現

什麼是神經網路? 神經網路是由很多神經元組成的,首先我們看一下,什麼是神經元 上面這個圖表示的就是一個神經元,我們不管其它書上說的那些什麼樹突,軸突的。我用個比較粗淺的解釋,可能不太全面科學,但對初學者很容易理解: 1、我們把輸入訊號看成你在matlab中需要輸入的資料,

BP神經網路原理matlab實現

個人部落格文章連結: http://www.huqj.top/article?id=166 BP神經網路,即“反向傳播”神經網路,是一種被廣泛運用的人工神經網路,它的思想就是通過反向傳播不斷調整模型權重,最終使得模型輸出與預期輸出的誤差控制在一個小範圍內。其中反向傳播的演算法(BP演算

BP神經網路原理分析c++程式碼實現(上)

    本部落格所述BP神經網路,是本人研究總結的結果,希望對您有所幫助,當然,如果有需要,大家可以互相交流。    設計一個BP神經網路類,來實現一個BP神經網路。要求輸入層節點數、隱層數、隱層節點數、輸出層節點數、傳遞函式、演算法等等可以由使用者自主設定。 神經網路

BP神經網路原理分析c++程式碼實現(下)

為了方便廣大使用者的使用,本人將BP神經網路寫成了一個BPNNS類,這樣使用者們可以很方便的將此類潛入到自己的工程當中,此類的具體的使用規則,下面會介紹。 /*********************************************************

BP神經網路說明推導

    學習神經網路,很多基礎知識不用就會忘了,這段時間重新進行一下整理和總結。在此留做記錄。首先從最基礎的BP神經網路開始。並進行相關演算法的推導。     人工神經網路是仿照人大腦的功能而用數學公式搭建的一種結構。現在藉助計算機語言在高效能的計算機上得

BP神經網路原理推導

本文會完成BP神經網路的推導過程,先介紹BP神經網路的歷史,然後介紹BP神經網路的結構,然後再開始推導,最後介紹BP神經網路的優缺點以及幾個優化的方法。 目錄 1 BP神經網路的歷史 2 BP神經網路的結構 2.1 神經元 2.2 輸入層 2.3 隱含層 2.4 輸出層

BP神經網路演算法之matlab具體實現

之前的幾篇部落格的一個共同點就是梯度下降法,梯度下降法是用來求解無約束最優化問題的一個數值方法,簡單實用,幾乎是大部分演算法的基礎,下面來利用梯度下降法優化BP神經網路。 [TOC] 梯度公式 下面的BP神經網路結構為最簡單的三層網路,各層的神經元數量

機器學習02之BP神經網路圖解JAVA實現

package com.fei.bp02; public class Bp { private double[] hide1_x;//// 輸入層即第一層隱含層的輸入;hide1_x[資料的特徵數目+1], hide1_x[0]為1 private

BP神經網路的設計例項(MATLAB程式設計) .

例1 採用動量梯度下降演算法訓練 BP 網路。 訓練樣本定義如下: 輸入向量為      p =[-1 -2 3  1       -1  1 5 -3] 目標向量為   t = [-1 -1 1 1] 解:本例的 MATLAB 程式如下:  close all  clear  echo on  clc  %

bp神經網路matlab實現

%讀取訓練資料 [f1,f2,f3,f4,class] = textread('trainData.txt' , '%f%f%f%f%f',150); %特徵值歸一化 [input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]') ;%構造輸出矩陣 s = leng

(轉)用遺傳演算法優化BP神經網路Matlab程式設計例項

此文章首次在simwe公開發表,屬於GreenSim團隊原創作品,轉載請註明!由於BP網路的權值優化是一個無約束優化問題,而且權值要採用實數編碼,所以直接利用Matlab遺傳演算法工具箱。以下貼出的程式碼是為一個19輸入變數,1個輸出變數情況下的非線性迴歸而設計的,如果要應用於其它情況,只需改動編解碼函式即可

BP神經網路 MATLAB源程式

和以前的習慣一樣,只舉典例,然後給程式和執行結果進行說明。 問題背景是: 給定某地區20年的資料,6列,21行,第一列值為年份,第二列為人數,第三列為機動車數量,第四列為公路面積,第五列為公路客運量,第六列為公路貨運量,這20年是1990年到2009年,現在給我們2010和2011年,第二、

BP神經網路演算法的深度解析和工程例項搭建

首先宣告,這篇文章不是神經網路的掃盲文,如果只想知道神經網路的概念那筆者還是推薦找一些深入淺出的文章來看。但是如果需要自己實際搭建和使用一個神經網路,同時具備一定的數學功底的話,那這篇文章就是為了深入的剖析神經網路演算法的工作過程和模型而寫的。這裡筆者把整個神經網路的工作過程

BP神經網路反向傳播演算法一步一步例項推導(Backpropagation Example)

1. loss 函式的優化 籠統來講: 設計loss函式是為了衡量網路輸出值和理想值之間的差距,儘管網路的直接輸出並不顯式的包含權重因子,但是輸出是同權重因子直接相關的,因此仍然可以將loss函式視作在權重因子空間中的一個函式。 可以將loss 記為E(w),這裡為

[神經網路]Matlab神經網路原理6.6.2節

clc,clear,close all; % 異或四點向量 traind = [0,0,1,1;0,1,0,1]; trainl = [0,1,1,0]; % 建立一個前向BP網路 節點為2 net

BP神經網路的資料分類--語音特徵訊號分類(MATLAB

測試樣例的data資料鏈接:https://pan.baidu.com/s/1sVdYE3-KqVccypy0jWfXHA 提取碼:wnwc  %% 該程式碼為基於BP網路的語言識別的通用版本   %% 清空環境變數 clc clear   %% 訓練資料

BP神經網路擬合數據調優

一 、 實驗背景 原始資料共4116個樣本,4個類,每個樣本的輸入x=[x1,x2],輸出y,y的取值{1,2,3,4};用一個三層的BP網路做資料的擬合 二、 演算法描述與分析 1.演算法描述 採用BP網路分類,BP網路結構為2−2−1,n=

BP神經網路MATLAB實現案例一

眾做周知,BP神經網路是最常用的一種神經網路。 本文主要講解%實現對玫瑰的識別%案例。 關於神經網路的介紹與BP的詳解,論壇裡鋪天蓋地,不在此贅述。 一.BP簡述 簡要概括一下: 一