誤差逆傳播演算法
① 誤差反向傳播演算法解決XNOR問題
你這個問題要分開問,先,反向傳播,下這個基礎上,構造三層網路,用輸入輸出對應xnor的數據訓練,出來的數據模型就是xnor的
② 反向傳播演算法的演算法簡介
反向傳播演算法(backpropagation)是目前用來訓練人工神經網路(artificial
neural
network,ann)的最常用且最有效的演算法。其主要思想是:
(1)將訓練集數據輸入到ann的輸入層,經過隱藏層,最後達到輸出層並輸出結果,這是ann的前向傳播過程;
(2)由於ann的輸出結果與實際結果有誤差,則計算估計值與實際值之間的誤差,並將該誤差從輸出層向隱藏層反向傳播,直至傳播到輸入層;
(3)在反向傳播的過程中,根據誤差調整各種參數的值;不斷迭代上述過程,直至收斂。
反向傳播演算法的思想比較容易理解,但具體的公式則要一步步推導,因此本文著重介紹公式的推導過程。
1.
變數定義
上圖是一個三層人工神經網路,layer1至layer3分別是輸入層、隱藏層和輸出層。如圖,先定義一些變數:
表示第層的第個神經元連接到第層的第個神經元的權重;
表示第層的第個神經元的偏置;
表示第層的第個神經元的輸入,即:
表示第層的第個神經元的輸出,即:
其中表示激活函數。
2.
代價函數
代價函數被用來計算ann輸出值與實際值之間的誤差。常用的代價函數是二次代價函數(quadratic
cost
function):
其中,表示輸入的樣本,表示實際的分類,表示預測的輸出,表示神經網路的最大層數。
3.
公式及其推導
本節將介紹反向傳播演算法用到的4個公式,並進行推導。如果不想了解公式推導過程,請直接看第4節的演算法步驟。
首先,將第層第個神經元中產生的錯誤(即實際值與預測值之間的誤差)定義為:
本文將以一個輸入樣本為例進行說明,此時代價函數表示為:
公式1(計算最後一層神經網路產生的錯誤):
其中,表示hadamard乘積,用於矩陣或向量之間點對點的乘法運算。公式1的推導過程如下:
公式2(由後往前,計算每一層神經網路產生的錯誤):
推導過程:
公式3(計算權重的梯度):
推導過程:
公式4(計算偏置的梯度):
推導過程:
4.
反向傳播演算法偽代碼
輸入訓練集
對於訓練集中的每個樣本x,設置輸入層(input
layer)對應的激活值:
前向傳播:
,
計算輸出層產生的錯誤:
③ 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)用輸入樣本
基坑降水工程的環境效應與評價方法
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)利用網路目標向量
基坑降水工程的環境效應與評價方法
(7)利用連接權vjt、輸出層的一般化誤差dt和中間層的輸出bj計算中間層各單元的一般化誤差
基坑降水工程的環境效應與評價方法
(8)利用輸出層各單元的一般化誤差
基坑降水工程的環境效應與評價方法
(9)利用中間層各單元的一般化誤差
基坑降水工程的環境效應與評價方法
(10)隨機選取下一個學習樣本向量提供給網路,返回到步驟(3),直到m個訓練樣本訓練完畢。
(11)重新從m個學習樣本中隨機選取一組輸入和目標樣本,返回步驟(3),直到網路全局誤差E小於預先設定的一個極小值,即網路收斂。如果學習次數大於預先設定的值,網路就無法收斂。
(12)學習結束。
可以看出,在以上學習步驟中,(8)、(9)步為網路誤差的「逆傳播過程」,(10)、(11)步則用於完成訓練和收斂過程。
通常,經過訓練的網路還應該進行性能測試。測試的方法就是選擇測試樣本向量,將其提供給網路,檢驗網路對其分類的正確性。測試樣本向量中應該包含今後網路應用過程中可能遇到的主要典型模式(宋大奇,2006)。這些樣本可以直接測取得到,也可以通過模擬得到,在樣本數據較少或者較難得到時,也可以通過對學習樣本加上適當的雜訊或按照一定規則插值得到。為了更好地驗證網路的泛化能力,一個良好的測試樣本集中不應該包含和學習樣本完全相同的模式(董軍,2007)。
④ 反向傳播演算法 為什麼 誤差 那麼定義
自從40年代赫布(D.O.
Hebb)提出的學習規則以來,人們相繼提出了各種各樣的學習演算法。其中以在1986年Rumelhart等提出的誤差反向傳播法,即BP(error
BackPropagation)法影響最為廣泛。直到今天,BP演算法仍然是自動控制上最重要、應用最多的有效演算法。是用於多層神經網路訓練的著名演算法,有理論依據堅實、推導過程嚴謹、物理概念清楚、通用性強等優點。但是,人們在使用中發現BP演算法存在收斂速度緩慢、易陷入局部極小等缺點。
BP演算法的基本思想是,學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。
1)正向傳播:輸入樣本->輸入層->各隱層(處理)->輸出層
注1:若輸出層實際輸出與期望輸出(教師信號)不符,則轉入2)(誤差反向傳播過程)。
2)誤差反向傳播:輸出誤差(某種形式)->隱層(逐層)->輸入層 其主要目的是通過將輸出誤差反傳,將誤差分攤給各層所有單元,從而獲得各層單元的誤差信號,進而修正各單元的權值(其過程,是一個權值調整的過程)。
注2:權值調整的過程,也就是網路的學習訓練過程(學習也就是這么的由來,權值調整)。
1)初始化
2)輸入訓練樣本對,計算各層輸出
3)計算網路輸出誤差
4)計算各層誤差信號
5)調整各層權值
6)檢查網路總誤差是否達到精度要求
滿足,則訓練結束;不滿足,則返回步驟2。
1)易形成局部極小(屬貪婪演算法,局部最優)而得不到全局最優;
2)訓練次數多使得學習效率低下,收斂速度慢(需做大量運算);
3)隱節點的選取缺乏理論支持;
4)訓練時學習新樣本有遺忘舊樣本趨勢。
⑤ BP學習演算法是什麼類型的學習演算法它主要有哪些不足
BP演算法是由學習過程由信號的正向傳播與誤差的反向傳播兩個過程組成。由於多層前饋網路的訓練經常採用誤差反向傳播演算法,人們也常把將多層前饋網路直接稱為BP網路。
雖然BP演算法得到廣泛的應用,但它也存在不足,其主要表現在訓練過程不確定上,具體如下。
1,訓練時間較長。對於某些特殊的問題,運行時間可能需要幾個小時甚至更長,這主要是因為學習率太小所致,可以採用自適應的學習率加以改進。
2,完全不能訓練。訓練時由於權值調整過大使激活函數達到飽和,從而使網路權值的調節幾乎停滯。為避免這種情況,一是選取較小的初始權值,二是採用較小的學習率。
3,易陷入局部極小值。BP演算法可以使網路權值收斂到一個最終解,但它並不能保證所求為誤差超平面的全局最優解,也可能是一個局部極小值。
這主要是因為BP演算法所採用的是梯度下降法,訓練是從某一起始點開始沿誤差函數的斜面逐漸達到誤差的最小值,故不同的起始點可能導致不同的極小值產生,即得到不同的最優解。如果訓練結果未達到預定精度,常常採用多層網路和較多的神經元,以使訓練結果的精度進一步提高,但與此同時也增加了網路的復雜性與訓練時間。
4,「喜新厭舊」。訓練過程中,學習新樣本時有遺忘舊樣本的趨勢。
(5)誤差逆傳播演算法擴展閱讀:
BP演算法最早由Werbos於1974年提出,1985年Rumelhart等人發展了該理論。BP網路採用有指導的學習方式,其學習包括以下4個過程。
1,組成輸入模式由輸入層經過隱含層向輸出層的「模式順傳播」過程。
2,網路的期望輸出與實際輸出之差的誤差信號由輸出層經過隱含層逐層休整連接權的「誤差逆傳播」過程。
3,由「模式順傳播」與「誤差逆傳播」的反復進行的網路「記憶訓練」過程。
4,網路趨向收斂即網路的總體誤差趨向極小值的「學習收斂」過程。
⑥ bp神經網路研究現狀
BP網路的誤差逆傳播演算法因有中間隱含層和相應的學習規則,使得它具有很
強的非線性映射能力,而且網路的中間層數、各層神經元個數及網路的學習系數
等參數可以根據實際情況設定,有很大的靈活性,且能夠識別含有雜訊的樣本,
經過學習能夠把樣本隱含的特徵和規則分布在神經網路的連接權上。總的說來,
BP網路的優點主要有:
(1)演算法推導清楚,學習精度較高;(2)經過訓練後的BP網路,運行速度很快,有
的可用於實時處理;(3)多層(至少三層)BP網路具有理論上逼近任意非線性連續
函數的能力,也就是說,可以使多層前饋神經網路學會任何可學習的東西,而信
息處理的大部分問題都能歸納為數學映射,通過選擇一定的非線性和連接強度調
節規律,BP網路就可解決任何一個信息處理的問題。目前,在手寫字體的識別、
語音識別、文本一語言轉換、圖像識別以及生物醫學信號處理方面已有實際的應
用。
同時BP演算法與其它演算法一樣,也存在自身的缺陷:
(1)由於該演算法採用誤差導數指導學習過程,在存在較多局部極小點的情況下容易陷入局部極小點,不能保證收斂到全局最小點:(2)存在學習速度與精度之間的矛盾,當學習速度較快時,學習過程容易產生振盪,難以得到精確結果,而當學習速度較慢時,雖然結果的精度較高,但學習周期太長:(3)演算法學習收斂速度慢;(4)網路學習記憶具有不穩定性,即當給一個訓練好的網路提供新的學習記憶模式時,將使已有的連接權值打亂,導致已記憶的學習模式的信息消失;(5)網路中間層(隱含層)的層數及它的單元數的選取無理論上的指導,而是根據經驗確定,因此網路的設計有時不一定是最佳的方案。
⑦ 如何理解CNN神經網路里的反向傳播backpropagation,bp演算法
見附件,一個基本的用java編寫的BP網路代碼。BP(BackPropagation)神經網路是86年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hiddenlayer)和輸出層(outputlayer)。
⑧ 深入淺出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,由演算法學習完成。
⑨ 什麼是神經網路共識演算法
BP(Back Propagation)網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。
⑩ 如何直觀的解釋back propagation演算法
BP(Back Propagation)網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映