久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

漫談ANN(2):BP神經(jīng)網(wǎng)絡 | HaHack

 瓜子的成長 2015-03-13

上一次我們講了M-P模型,,它實際上就是對單個神經(jīng)元的一種建模,,還不足以模擬人腦神經(jīng)系統(tǒng)的功能。由這些人工神經(jīng)元構(gòu)建出來的網(wǎng)絡,,才能夠具有學習,、聯(lián)想、記憶和模式識別的能力,。BP網(wǎng)絡就是一種簡單的人工神經(jīng)網(wǎng)絡,。我們的第二話就從BP神經(jīng)網(wǎng)絡開始漫談吧。

BP的來源

“時勢造英雄”,,一個偉大的人物的登場總是建立在歷史的需求之下,,所以我們剖析一個人,得先看看他的出身時代,。同樣的道理,,在講BP網(wǎng)絡的特性和用途之前,我們需要先了解一下它的來源和誕生原因,,以便理解它的重要性,。

1.1 最簡單的神經(jīng)網(wǎng)絡結(jié)構(gòu)——感知器

在1958年,美國心理學家Frank Rosenblatt提出一種具有單層計算單元的神經(jīng)網(wǎng)絡,稱為感知器(Perceptron)。它其實就是基于M-P模型的結(jié)構(gòu),。我們可以看看它的拓撲結(jié)構(gòu)圖,。

這個結(jié)構(gòu)非常簡單,如果你還記得前面所講的M-P神經(jīng)元的結(jié)構(gòu)的話,,這個圖其實就是輸入輸出兩層神經(jīng)元之間的簡單連接(如果忘了可以看看第一話的模型示意圖),。

由第一話的(2)中我們知道輸入層各節(jié)點的輸入加權(quán)和

netj=i=1nωijxi

我們一般采用符號函數(shù)來當作單層感知器的傳遞函數(shù),即輸出

oj=sgn(netj?Tj)=sgn(i=0nωijxi)=sgn(WTjX)

公式(2)可以進一步表達為:

oj={1?1,,WTjX>0WTjX<0

1.2 風中之燭——單層感知器的局限性

雖然單層感知器簡單而優(yōu)雅,,但它顯然不夠聰明——它僅對線性問題具有分類能力,。什么是線性問題呢?簡單來講,,就是用一條直線可分的圖形,。比如,,邏輯“與”和邏輯“或”就是線性問題,,我們可以用一條直線來分隔0和1。

1)邏輯“與”的真值表和二維樣本圖如圖2:

2)邏輯“或”的真值表如圖3:

為什么感知器就可以解決線性問題呢,?這是由它的傳遞函數(shù)決定的,。這里以兩個輸入分量 x1x2 組成的二維空間為例,此時節(jié)點 j 的輸出為

oj={1?1,,   ω1jx1+ω2jx2?Tj>0   ω1jx1+ω2jx2?Tj<0

所以,,方程

ω1jx1+ω2jx2?Tj=0

確定的直線就是二維輸入樣本空間上的一條分界線,。對于三維及更高維數(shù)的推導過程可以參考其他的Tutorials,。

如果要讓它來處理非線性的問題,單層感知器網(wǎng)就無能為力了,。例如下面的“異或”,,就無法用一條直線來分割開來,因此單層感知器網(wǎng)就沒辦法實現(xiàn)“異或”的功能,。

僅對線性可分問題具有分類能力,,這就是單層感知器的局限所在。顯然它能夠解決的實際問題是很有限的,。也正因為這樣,,單層感知器在解決實際問題時很少被采用。

1.3 心有余而力不足——多層感知器的瓶頸

既然一條直線無法解決分類問題,,當然就會有人想到用彎曲的折線來進行樣本分類,。我們常常聽到一句批評人笨的話“你這人腦袋就是不會轉(zhuǎn)彎!”大意就是如此,,腦袋會轉(zhuǎn)彎的人才善于解決問題,。所以,人們請來了單層感知器他哥——多層感知器來幫忙,。所謂多層感知器,,就是在輸入層和輸出層之間加入隱層,,,以形成能夠?qū)颖菊_分類的凸域,。多層感知器的拓撲結(jié)構(gòu)如圖5所示。

我們可以比較一下單層感知器和多層感知器的分類能力:

由上圖可以看出,,隨著隱層層數(shù)的增多,,凸域?qū)⒖梢孕纬扇我獾男螤睿虼丝梢越鉀Q任何復雜的分類問題,。實際上,,Kolmogorov理論指出:雙隱層感知器就足以解決任何復雜的分類問題

多層感知器確實是非常理想的分類器,,但問題也隨之而來:隱層的權(quán)值怎么訓練,?對于各隱層的節(jié)點來說,它們并不存在期望輸出,,所以也無法通過感知器的學習規(guī)則來訓練多層感知器,。因此,,多層感知器心有余而力不足,,雖然武功高強,,但卻無力可施。

1.4 山重水復疑無路——ANN的低潮期

1966年,,Minisky和Papert在他們的《感知器》一書中提出了上述的感知器的研究瓶頸,,指出理論上還不能證明將感知器模型擴展到多層網(wǎng)絡是有意義的,。這在人工神經(jīng)網(wǎng)絡的歷史上書寫了極其灰暗的一章,。對ANN的研究,始于1890年開始于美國著名心理學家W.James對于人腦結(jié)構(gòu)與功能的研究,,半個世紀后W.S.McCulloch和W.A.Pitts提出了M-P模型,,之后的1958年Frank Rosenblatt在這個基礎上又提出了感知器,此時對ANN的研究正處在升溫階段,,《感知器》這本書的出現(xiàn)就剛好為這剛剛?cè)计鸬娜斯ど窠?jīng)網(wǎng)絡之火潑了一大盆冷水,。一時間人們仿佛感覺對以感知器為基礎的ANN的研究突然間走到盡頭,看不到出路了,。于是,,幾乎所有為ANN提供的研究基金都枯竭了,很多領域的專家紛紛放棄了這方面課題的研究,。

1.5 柳暗花明又一村——ANN研究的復蘇和BP神經(jīng)網(wǎng)絡的誕生

所以說真理的果實總是垂青于能夠忍受寂寞的科學家,。盡管ANN的研究陷入了前所未有的低谷, 但仍有為數(shù)不多的學者忍受住寂寞,,堅持致力于ANN的研究,。在長達10年的低潮時期之間,相 繼有一些開創(chuàng)性的研究成果被提出來,,但還不足以激起人們對于ANN研究的熱情,。一直到上世 紀80年代,兩個璀璨的成果誕生了:1982年美國加州理工學院的物理學家John J.Hopfield博 士的Hopfield網(wǎng)絡和David E.Rumelhart以及James L.McCelland研究小組發(fā)表的《并行分布 式處理》,。這兩個成果重新激起了人們對ANN的研究興趣,,使人們對模仿腦信息處理的智能計 算機的研究重新充滿了希望。

前者暫不討論,,后者對具有非線性連續(xù)變換函數(shù)的多層感知器的誤差反向傳播(Error Back Propagation)算法進行了詳盡的分析,,實現(xiàn)了 Minsky 關(guān)于多層網(wǎng)絡的設想。Error Back Propagation算法的簡稱就是BP算法,,以BP算法實現(xiàn)的多層感知器網(wǎng)絡就是BP網(wǎng)絡,。

所以,BP網(wǎng)絡本質(zhì)上并不是一個新的網(wǎng)絡,,而是使用BP學習算法的多層感知器網(wǎng)絡,。

BP算法的基本思想

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

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

圖8就是BP算法的信號流向圖,。

BP網(wǎng)絡特性分析——BP三要素

我們分析一個ANN時,,通常都是從它的三要素入手,即1)網(wǎng)絡拓撲結(jié)構(gòu),;2)傳遞函數(shù),;3)學習算法。如圖9所示,。

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

3.1 BP網(wǎng)絡的拓撲結(jié)構(gòu)

前面已經(jīng)說了,,BP網(wǎng)絡實際上就是多層感知器,因此它的拓撲結(jié)構(gòu)和多層感知器的拓撲結(jié)構(gòu)(圖5)相同,。由于單隱層(三層)感知器已經(jīng)能夠解決簡單的非線性問題,,因此應用最為普遍。三層感知器的拓撲結(jié)構(gòu)如圖10所示,。

3.2 BP網(wǎng)絡的傳遞函數(shù)

BP網(wǎng)絡采用的傳遞函數(shù)是非線性變換函數(shù)——Sigmoid函數(shù)(又稱S函數(shù)),。其特點是函數(shù)本身及其導數(shù)都是連續(xù)的,因而在處理上十分方便,。為什么要選擇這個函數(shù),,等下在介紹BP網(wǎng)絡的學習算法的時候會進行進一步的介紹。S函數(shù)有單極性S型函數(shù)和雙極性S型函數(shù)兩種,,單極性S型函數(shù)定義如下:

f(x)=11+e?x

其函數(shù)曲線如圖11所示,。

雙極性S型函數(shù)定義如下:

f(x)=1?e?x1+e?x

其函數(shù)曲線如圖12所示。

3.3 BP網(wǎng)絡的學習算法

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

E=12(d?O)2=12κ=1?(dk?ok)2

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

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

進一步展開至輸入層,,有

E=12κ=1?{dκ?f[j=0mωjκf(netj)]}2=12κ=1?{dκ?f[j=0mωjκf(j=0nυijχi)]}2

由上式可以看出,,網(wǎng)絡輸入誤差是各層權(quán)值ωjκυij的函數(shù),,因此調(diào)整權(quán)值可改變誤差 E,。 顯然,調(diào)整權(quán)值的原則是使誤差不斷減小,,因此應使權(quán)值與誤差的梯度下降成正比,,即

Δωjκ=?η?E?ωjκj=0,1,2,,m;κ=1,2,,?

Δυij=?η?E?υiji=0,1,2,,n;j=1,2,,m

對于一般多層感知器,設共有 h 個隱層,,按前向順序各隱層節(jié)點數(shù)分別記為 m1,m2,,mh,,各隱層輸出分別記為 y1,y2,,yh,各層權(quán)值矩陣分別記為 W1,W2,,Wh,Wh+1,,則各層權(quán)值調(diào)整公式為

輸出層

Δωh+1jκ=ηδh+1κyhj=η(dκ?oκ)oκ(1?oκ)yκjj=0,1,2,,mh;κ=1,2,,?

h 隱層

Δωhij=ηδhjyhi?1=η(lκ=1δoκωh+1jκyκj(1?ykjappa)yhi?1i=0,1,2,,m(h?1);j=1,2,,mh

按以上規(guī)律逐層類推,,則第一隱層權(quán)值調(diào)整公式

Δω1pq=ηδ1qχp=η(m2r=1δ2rω2qr)y1q(1?y1q)χpp=0,1,2,,n;j=1,2,,m1

容易看出,BP學習算法中,,各層權(quán)值調(diào)整公式形式上都是一樣的,,均由3個因素決定,即:

  • 學習率 η
  • 本層輸出的誤差信號 δ
  • 本層輸入信號 Y(或X

其中輸入層誤差信號與網(wǎng)絡的期望輸出與實際輸出之差有關(guān),,直接反應了輸出誤差,,而各隱層的誤差信號與前面各層的誤差信號有關(guān),是從輸出層開始逐層反傳過來的,。

可以看出BP算法屬于δ學習規(guī)則類,,這類算法常被稱為誤差的梯度下降算法δ學習規(guī)則可以看成是Widrow-Hoff(LMS)學習規(guī)則的一般化(generalize)情況,。LMS學習規(guī)則與神經(jīng)元采用的變換函數(shù)無關(guān),,因而不需要對變換函數(shù)求導,δ學習規(guī)則則沒有這個性質(zhì),,要求變換函數(shù)可導,。這就是為什么我們前面采用Sigmoid函數(shù)的原因

綜上所述,,BP三要素如圖13所示,。

BP網(wǎng)實例

由于BP網(wǎng)絡具有出色的非線性映射能力、泛化能力和容錯能力,,因此BP網(wǎng)絡成了至今為止應用最廣泛的人工神經(jīng)網(wǎng)絡,。圖14是Matlab下用BP網(wǎng)絡做線性擬合的結(jié)果,效果很好,。

代碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
% BP網(wǎng)絡函數(shù)逼近實例
% 1.首先定義正弦函數(shù),,采樣率為20Hz,頻率為1Hz
k = 1; % 設定正弦信號頻率
p = [0:0.05:4];
t = cos(k*pi*p) + 3*sin(pi*p);
plot(p, t, '-'), xlabel('時間'); ylabel('輸入信號');
% 2.生成BP網(wǎng)絡,。用newff函數(shù)生成前向型BP網(wǎng)絡,,設定隱層中神經(jīng)元數(shù)目為10
% 分別選擇隱層的傳遞函數(shù)為 tansig,輸出層的傳遞函數(shù)為 purelin,,
% 學習算法為trainlm。
net =
newff(minmax(p),[10,10,1],{'tansig','tansig','purelin'},'trainlm');
% 3.對生成的網(wǎng)絡進行仿真并做圖顯示,。
y1 = sim(net,p); plot(p, t, '-', p, y1, '--')
% 4.訓練,。對網(wǎng)絡進行訓練,設定訓練誤差目標為 1e-5,,最大迭代次數(shù)為300,,
% 學習速率為0.05。
net.trainParam.lr=0.05;
net.trainParam.epochs=1000;
net.trainParam.goal=1e-5;
[net,tr]=train(net,p,t);
%5.再次對生成的網(wǎng)絡進行仿真并做圖顯示,。
y2 = sim(net,p);
plot(p, t, '-', p, y2, '--')

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多