㈠ BP神經網路方法
人工神經網路是近幾年來發展起來的新興學科,它是一種大規模並行分布處理的非線性系統,適用解決難以用數學模型描述的系統,逼近任何非線性的特性,具有很強的自適應、自學習、聯想記憶、高度容錯和並行處理能力,使得神經網路理論的應用已經滲透到了各個領域。近年來,人工神經網路在水質分析和評價中的應用越來越廣泛,並取得良好效果。在這些應用中,縱觀應用於模式識別的神經網路,BP網路是最有效、最活躍的方法之一。
BP網路是多層前向網路的權值學習採用誤差逆傳播學習的一種演算法(Error Back Propagation,簡稱BP)。在具體應用該網路時分為網路訓練及網路工作兩個階段。在網路訓練階段,根據給定的訓練模式,按照「模式的順傳播」→「誤差逆傳播」→「記憶訓練」→「學習收斂」4個過程進行網路權值的訓練。在網路的工作階段,根據訓練好的網路權值及給定的輸入向量,按照「模式順傳播」方式求得與輸入向量相對應的輸出向量的解答(閻平凡,2000)。
BP演算法是一種比較成熟的有指導的訓練方法,是一個單向傳播的多層前饋網路。它包含輸入層、隱含層、輸出層,如圖4-4所示。
圖4-4 地下水質量評價的BP神經網路模型
圖4-4給出了4層地下水水質評價的BP神經網路模型。同層節點之間不連接。輸入信號從輸入層節點,依次傳過各隱含層節點,然後傳到輸出層節點,如果在輸出層得不到期望輸出,則轉入反向傳播,將誤差信號沿原來通路返回,通過學習來修改各層神經元的權值,使誤差信號最小。每一層節點的輸出隻影響下一層節點的輸入。每個節點都對應著一個作用函數(f)和閾值(a),BP網路的基本處理單元量為非線性輸入-輸出的關系,輸入層節點閾值為0,且f(x)=x;而隱含層和輸出層的作用函數為非線性的Sigmoid型(它是連續可微的)函數,其表達式為
f(x)=1/(1+e-x) (4-55)
設有L個學習樣本(Xk,Ok)(k=1,2,…,l),其中Xk為輸入,Ok為期望輸出,Xk經網路傳播後得到的實際輸出為Yk,則Yk與要求的期望輸出Ok之間的均方誤差為
區域地下水功能可持續性評價理論與方法研究
式中:M為輸出層單元數;Yk,p為第k樣本對第p特性分量的實際輸出;Ok,p為第k樣本對第p特性分量的期望輸出。
樣本的總誤差為
區域地下水功能可持續性評價理論與方法研究
由梯度下降法修改網路的權值,使得E取得最小值,學習樣本對Wij的修正為
區域地下水功能可持續性評價理論與方法研究
式中:η為學習速率,可取0到1間的數值。
所有學習樣本對權值Wij的修正為
區域地下水功能可持續性評價理論與方法研究
通常為增加學習過程的穩定性,用下式對Wij再進行修正:
區域地下水功能可持續性評價理論與方法研究
式中:β為充量常量;Wij(t)為BP網路第t次迭代循環訓練後的連接權值;Wij(t-1)為BP網路第t-1次迭代循環訓練後的連接權值。
在BP網路學習的過程中,先調整輸出層與隱含層之間的連接權值,然後調整中間隱含層間的連接權值,最後調整隱含層與輸入層之間的連接權值。實現BP網路訓練學習程序流程,如圖4-5所示(倪深海等,2000)。
圖4-5 BP神經網路模型程序框圖
若將水質評價中的評價標准作為樣本輸入,評價級別作為網路輸出,BP網路通過不斷學習,歸納出評價標准與評價級別間復雜的內在對應關系,即可進行水質綜合評價。
BP網路對地下水質量綜合評價,其評價方法不需要過多的數理統計知識,也不需要對水質量監測數據進行復雜的預處理,操作簡便易行,評價結果切合實際。由於人工神經網路方法具有高度民主的非線性函數映射功能,使得地下水水質評價結果較准確(袁曾任,1999)。
BP網路可以任意逼近任何連續函數,但是它主要存在如下缺點:①從數學上看,它可歸結為一非線性的梯度優化問題,因此不可避免地存在局部極小問題;②學習演算法的收斂速度慢,通常需要上千次或更多。
神經網路具有學習、聯想和容錯功能,是地下水水質評價工作方法的改進,如何在現行的神經網路中進一步吸取模糊和灰色理論的某些優點,建立更適合水質評價的神經網路模型,使該模型既具有方法的先進性又具有現實的可行性,將是我們今後研究和探討的問題。
㈡ 梯度下降法的優化分析原理
梯度下降法的優化分析原理是讓模型自動優化自身的各種參數。
梯度下降法簡介:
梯度下降是迭代法的一種,可以用於求解最小二乘早雀核問題(線性和非線性都可以)。在求解機器學習演算法的模型參數,即無約束優化問題時,梯度下降(Gradient Descent)是最常採用的方法之一,另一種常用的方法是最小二乘法。
在求解損失函數的最小值時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函數和模型參數值。反過來,如果我們需要求解損失函數的最大值,這時就需要用梯度上升法來迭代了。在機器學習中,基於基本的梯度下降法發展了兩種梯度下降方法,分別為隨機梯度下降歲罩法和批量梯度下降法。
㈢ 神經網路——BP演算法
對於初學者來說,了解了一個演算法的重要意義,往往會引起他對演算法本身的重視。BP(Back Propagation,後向傳播)演算法,具有非凡的歷史意義和重大的現實意義。
1969年,作為人工神經網路創始人的明斯基(Marrin M insky)和佩珀特(Seymour Papert)合作出版了《感知器》一書,論證了簡單的線性感知器功能有限,不能解決如「異或」(XOR )這樣的基本問題,而且對多層網路也持悲觀態度。這些論點給神經網路研究以沉重的打擊,很多科學家紛紛離開這一領域,神經網路的研究走向長達10年的低潮時期。[1]
1974年哈佛大學的Paul Werbos發明BP演算法時,正值神經外網路低潮期,並未受到應有的重視。[2]
1983年,加州理工學院的物理學家John Hopfield利用神經網路,在旅行商這個NP完全問題的求解上獲得當時最好成績,引起了轟動[2]。然而,Hopfield的研究成果仍未能指出明斯基等人論點的錯誤所在,要推動神經網路研究的全面開展必須直接解除對感知器——多層網路演算法的疑慮。[1]
真正打破明斯基冰封魔咒的是,David Rumelhart等學者出版的《平行分布處理:認知的微觀結構探索》一書。書中完整地提出了BP演算法,系統地解決了多層網路中隱單元連接權的學習問題,並在數學上給出了完整的推導。這是神經網路發展史上的里程碑,BP演算法迅速走紅,掀起了神經網路的第二次高潮。[1,2]
因此,BP演算法的歷史意義:明確地否定了明斯基等人的錯誤觀點,對神經網路第二次高潮具有決定性意義。
這一點是說BP演算法在神經網路領域中的地位和意義。
BP演算法是迄今最成功的神經網路學習演算法,現實任務中使用神經網路時,大多是在使用BP演算法進行訓練[2],包括最近炙手可熱的深度學習概念下的卷積神經網路(CNNs)。
BP神經網路是這樣一種神經網路模型,它是由一個輸入層、一個輸出層和一個或多個隱層構成,它的激活函數採用sigmoid函數,採用BP演算法訓練的多層前饋神經網路。
BP演算法全稱叫作誤差反向傳播(error Back Propagation,或者也叫作誤差逆傳播)演算法。其演算法基本思想為:在2.1所述的前饋網路中,輸入信號經輸入層輸入,通過隱層計算由輸出層輸出,輸出值與標記值比較,若有誤差,將誤差反向由輸出層向輸入層傳播,在這個過程中,利用梯度下降演算法對神經元權值進行調整。
BP演算法中核心的數學工具就是微積分的 鏈式求導法則 。
BP演算法的缺點,首當其沖就是局部極小值問題。
BP演算法本質上是梯度下降,而它所要優化的目標函數又非常復雜,這使得BP演算法效率低下。
[1]、《BP演算法的哲學思考》,成素梅、郝中華著
[2]、《機器學習》,周志華著
[3]、 Deep Learning論文筆記之(四)CNN卷積神經網路推導和實現
2016-05-13 第一次發布
2016-06-04 較大幅度修改,完善推導過程,修改文章名
2016-07-23 修改了公式推導中的一個錯誤,修改了一個表述錯誤
㈣ BP神經網路的MATLAB訓練Gradient是什麼意思Performance是什麼意思,大神能解釋一下嗎謝謝了
Gradient是梯度的意思,BP神經網路訓練的時候涉及到梯度下降法,表示為梯度下降的程度與訓練過程迭代次數(步長)的關系。Performance是神經網路傳遞誤差大小的意思,表示為均方差與訓練過程迭代次數(步長)的關系。
㈤ 神經網路演算法-梯度下降GradientDescent
神經網路文章索引
上一篇神經網路結構中,我們介紹了神經元的結構,激活函數以及每個神經元激活值的演算法,涉及到權重、偏置值等。
上一篇結尾提到,對於28*28的黑白手寫圖像識別,我們需要13002個權重和偏置數值,才能讓我們的神經網路最後輸出正確結果。
所謂的機器學習,就是尋找這13002個數值的過程。首先這里有兩點需要注意:
在負無窮到正無窮之間,如何獲得一萬多個數字最佳的匹配值?這比在全世界挑選1萬人讓TA們一起相愛還要難。
我們的做法是用計算機強大運算速度,暴力解決問題。
好了,現在,暴力不是問題,要想出奇跡的關鍵就在於如何找到如何 優化的規律 。
要想做優化,首先要明確目標,找到當前神經網路和期望結果之間的差距。
從下圖可以看到,隨機設定的神經網路最終輸出的是混亂的一層(被黃色線框標出),距離最右邊我們期望只點亮神經元3的情況差距很大。
我們把混亂輸出層的每個神經元與期望層每個對應神經元激活值相減,然後平方,再累加在一起,這就是方差cost代價,如下圖,計算得到cost是3.37。
我們用這個cost來表示當前神經網路13002個設定值和期望設定值之間的差距,當然,這個cost等於0是差距最小,也就是最接近期望設定值。——當然這只是針對數字3的1張圖片來說,我們需要的是針對0~9共10個數字的數萬張圖片,cost都能是最小。
從下圖,我們來看一下神經網路的功能。它能利用13002個設定值經過3層神經元激活值的計算,把784個像素亮度變為10個數字(我們期望這10個數字中只有一個是1,其他都是0)。
這13002個權重和偏置數字,加上激活值的演算法,就是神經網路的「想法」。
我們再來看看代價函數的情況,如下圖,它是利用很多很多的訓練圖片(已經明確了對應的數字),把13002個數字變為1個cost代價數。
寫成函數形式
我們假設最簡單的情況,只有1個權重和1個偏置:
x和y是任意可能的數值,我們希望知道當x和y是什麼數值的時候z最小。
每一組[x,y]都對應唯一的z,我們可以假想,有無數個[x,y,z]這樣的位置點,在三維空間坐標中,它們就會組成一個面(曲面或平面),如下圖。
從幾何意義上看,我們就是要找到凹陷最低的那個位置點的x,y的值,因為那裡z也就是cost代價最低。
假設上面的xyz繪制的cost曲面是個山地,你是一個旅行者,需要行走找到最低點的位置,你會怎麼辦?
沒錯,只要一直往下走,那麼就能走到所在區域的最低點。——當然,如果山後面還有更深的山谷,那麼你可能找到的只是局部最低點,而並非世界最低點。
實際上,對於復雜的超多維度來說,找到世界最低點幾乎是不可能任務。我們唯一能做的就是多找幾個局部最低點,然後選擇其中最低的那個。
同樣,如果我們落腳在[x',y'],那麼可以嘗試對比[x'+0.1,y'],[x'-0.1,y'],[x',y'-0.1],[x',y'+0.1],如果[x'+0.1,y']是最低的,那麼我們就走到這里,然後繼續嘗試對比四周點的高度。這就是梯度下降的演算法。
如下圖,我們沿著虛線一步一步下山找到最低點。
首先快速的從下圖了解幾個基本概念。
下圖的弧線表示的是某個函數y=f(x),比如拋物線方程y=x 2 。
曲線上任取兩個點a,b,它們對應x和x+dx。(d是指德爾塔大寫Δ,小寫δ)
ab兩點對應的y的差是dy。
現在直線ab看上去是曲線的割線(有ab兩個交點)。
假設b點沿著曲線,越來越靠近a點,那麼dx極限趨近於0,這時候dy也會越來越小趨近於0,但是!我們會意識到dy/dx永遠不會是0,而最終它仍然是角∠cab的對邊比鄰邊,也就是正切三角函數值。
實際上,這也正是曲線的切線的定義。
可以想像,我們取的a點越是靠右,那麼這個切線越是豎直。
如果我們把這個切線看做表示某個一次方程,如y=mx+n這種形式,那麼a點越靠右,直線越豎直,m值也就越大。
我們把m值叫做直線的斜率。
導數derivative ,一元函數y=f(x)(即因變數y只受到一個自變數x影響的函數)中任意取x,如果x增加極小趨近於0的Δx(或者寫為dx),那麼y相應的被增加Δy(或者寫作dy),那麼導數就是dy/dx,而又有dy=f(x+dx)-f(x),所以:
從函數的曲線圖上可以看到,某點的導數就是dx趨近於0時候∠cab的正切,導數反映了切線的陡峭程度,也就是y隨著x變化的快慢程度。
微分differential ,簡單說就是Δx和Δy,或者記作dx和dy。x稱之為自變數,y稱之為因變數,那麼x趨近於最小的時候的值,就是x的微分(趨近0又不是0的那個神秘值),同樣y的微分也是這個意思,總之是想得到又摸不到的神奇值。
斜率slope ,一元一次函數(直線方程)y=mx+n的系數m值。在這里就是a點的導數值f'(x)。
切線tangent ,某個點a的切線,就是經過a點的,以A點斜率為系數的方程y=f'(x)x+n所表示的直線。
自變數dependent variable和因變數 independent variable ,x自己的變化,引發y被動變化。
好了,我們來看 多變數微分Multivariable differential 。
上面都是一個y收到一個x的影響y=f(x),多變數就是不止受到一個自變數的影響,我們以最簡單的z=f(x,y)為例,z=x 2 +y 2 。
綠軸x的變化和紅軸y的變化,都會對應藍軸z的變化。
x從負無窮到正無窮無限種可能,y也是無限種可能,x和y復合到一起就在水平方向覆蓋了全部地面,z值有高有低,就像現實世界中的海拔一樣,把xy平面凸起或凹陷。(圖中粉色沒有畫出全部曲面)
我們可以想像,這時候不能討論A點的切線了,而應該考慮它的 切平面tangent plane (下圖綠色平面)。
方向導數directional derivative ,就是曲面上過A點的任意曲線的切線(下圖紫色線)組成的平面,就是切平面。
這么多紫色的方向中,哪一個方向最陡峭?對於這個z=x 2 +y 2 函數來說,明顯是最接近豎直朝上的那個箭頭和最接近豎直朝下的那個箭頭。
和曲線一樣道理,越陡峭意味著z對x、y的變化越敏感,或者說dx、dy的變化會引發更多的dz。
梯度gradient ,我們規定,能夠引發因變數最快變化的那個切線正方向,就叫做曲面方程上這個點的梯度。注意梯度是個xyz表示的三維方向,例如[0,0,1]表示z軸豎直向上,[0.1,0.1,1]就往xy的正方向偏一點點。
對於只有xy兩個變數的三維曲面來說,我們還可以只是考慮x+0.1,x-0.1,y+0.1,y-0.1這樣的試探方法找到最低點,只要2*2=4次就可以了,周全一點也就8次。
但是對於我們手寫數字識別中13002個自變數來說,那就要2 13002 次,這是不可行的。
借用多元微分,我們可以找到13002個自變數某一隨機點對應的切平面(實際早已不是什麼平面了,我們姑且這么說),也可以計算出其中變化最快的方向,就是梯度,數學家已經證明,不管多少個維度,沿著梯度往前走一步,都能獲得最快變化後新的一個點,這個點是一個n維向量,對於我們的案例來說就是13003個新數字組成的數組[0.322,0.123,0.55,0.222,...0.233]共13003個數字。
唯一要說明的一點不同就是,為了找最低點,我們不是往上走,而是往相反的負方向,朝下走。
步長step size ,就是我們每次沿著 負梯度 往下走多遠,在機器學習演算法裡面它叫做 學習率learning rate ,同樣道理,步子邁小了走得太慢,找到最低點耗時間太久,步子太大了容易跳過最低點(注意,1萬多維的復雜情況不是我們上面三維漏斗曲面那麼簡單可以描述的)。所以我們經常設置0.00001這樣小的數字,好在很多機器學習程序都會適當的自動調整它(比如Tensorflow中的梯度下降優化GradientDescentOptimizer),實際上不會讓它太慢。
同時,我們從上圖中看到,計算出的負梯度是由很多數字組成的數組,每個數字代表一個維度(就像xy那樣),所以我們只要在原來的位置點坐標(比如[x,y])上分別把這個梯度(比如[0.1,-0.3])加上去就能得到新的點([x+0.1,y-0.3])。
內容小結
如果您發現文章錯誤,請不吝留言指正;
如果您覺得有用,請點喜歡;
如果您覺得很有用,感謝轉發~
END
㈥ bp神經網路
BP(Back Propagation)網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。
人工神經網路就是模擬人思維的第二種方式。這是一個非線性動力學系統,其特色在於信息的分布式存儲和並行協同處理。雖然單個神經元的結構極其簡單,功能有限,但大量神經元構成的網路系統所能實現的行為卻是極其豐富多彩的。
人工神經網路首先要以一定的學習准則進行學習,然後才能工作。現以人工神經網路對手寫「A」、「B」兩個字母的識別為例進行說明,規定當「A」輸入網路時,應該輸出「1」,而當輸入為「B」時,輸出為「0」。
所以網路學習的准則應該是:如果網路作出錯誤的的判決,則通過網路的學習,應使得網路減少下次犯同樣錯誤的可能性。首先,給網路的各連接權值賦予(0,1)區間內的隨機值,將「A」所對應的圖象模式輸入給網路,網路將輸入模式加權求和、與門限比較、再進行非線性運算,得到網路的輸出。在此情況下,網路輸出為「1」和「0」的概率各為50%,也就是說是完全隨機的。這時如果輸出為「1」(結果正確),則使連接權值增大,以便使網路再次遇到「A」模式輸入時,仍然能作出正確的判斷。
如果輸出為「0」(即結果錯誤),則把網路連接權值朝著減小綜合輸入加權值的方向調整,其目的在於使網路下次再遇到「A」模式輸入時,減小犯同樣錯誤的可能性。如此操作調整,當給網路輪番輸入若干個手寫字母「A」、「B」後,經過網路按以上學習方法進行若干次學習後,網路判斷的正確率將大大提高。這說明網路對這兩個模式的學習已經獲得了成功,它已將這兩個模式分布地記憶在網路的各個連接權值上。當網路再次遇到其中任何一個模式時,能夠作出迅速、准確的判斷和識別。一般說來,網路中所含的神經元個數越多,則它能記憶、識別的模式也就越多。
如圖所示拓撲結構的單隱層前饋網路,一般稱為三層前饋網或三層感知器,即:輸入層、中間層(也稱隱層)和輸出層。它的特點是:各層神經元僅與相鄰層神經元之間相互全連接,同層內神經元之間無連接,各層神經元之間無反饋連接,構成具有層次結構的前饋型神經網路系統。單計算層前饋神經網路只能求解線性可分問題,能夠求解非線性問題的網路必須是具有隱層的多層神經網路。
神經網路的研究內容相當廣泛,反映了多學科交叉技術領域的特點。主要的研究工作集中在以下幾個方面:
(1)生物原型研究。從生理學、心理學、解剖學、腦科學、病理學等生物科學方面研究神經細胞、神經網路、神經系統的生物原型結構及其功能機理。
(2)建立理論模型。根據生物原型的研究,建立神經元、神經網路的理論模型。其中包括概念模型、知識模型、物理化學模型、數學模型等。
(3)網路模型與演算法研究。在理論模型研究的基礎上構作具體的神經網路模型,以實現計算機模擬或准備製作硬體,包括網路學習演算法的研究。這方面的工作也稱為技術模型研究。
(4)人工神經網路應用系統。在網路模型與演算法研究的基礎上,利用人工神經網路組成實際的應用系統,例如,完成某種信號處理或模式識別的功能、構作專家系統、製成機器人等等。
縱觀當代新興科學技術的發展歷史,人類在征服宇宙空間、基本粒子,生命起源等科學技術領域的進程中歷經了崎嶇不平的道路。我們也會看到,探索人腦功能和神經網路的研究將伴隨著重重困難的克服而日新月異。
神經網路可以用作分類、聚類、預測等。神經網路需要有一定量的歷史數據,通過歷史數據的訓練,網路可以學習到數據中隱含的知識。在你的問題中,首先要找到某些問題的一些特徵,以及對應的評價數據,用這些數據來訓練神經網路。
雖然BP網路得到了廣泛的應用,但自身也存在一些缺陷和不足,主要包括以下幾個方面的問題。
首先,由於學習速率是固定的,因此網路的收斂速度慢,需要較長的訓練時間。對於一些復雜問題,BP演算法需要的訓練時間可能非常長,這主要是由於學習速率太小造成的,可採用變化的學習速率或自適應的學習速率加以改進。
其次,BP演算法可以使權值收斂到某個值,但並不保證其為誤差平面的全局最小值,這是因為採用梯度下降法可能產生一個局部最小值。對於這個問題,可以採用附加動量法來解決。
再次,網路隱含層的層數和單元數的選擇尚無理論上的指導,一般是根據經驗或者通過反復實驗確定。因此,網路往往存在很大的冗餘性,在一定程度上也增加了網路學習的負擔。
最後,網路的學習和記憶具有不穩定性。也就是說,如果增加了學習樣本,訓練好的網路就需要從頭開始訓練,對於以前的權值和閾值是沒有記憶的。但是可以將預測、分類或聚類做的比較好的權值保存。