神經網路演算法預測
A. 神經網路預測原理!
Back Propagation BP (Back Propagation)神經網路,即誤差反傳誤差反向傳播演算法的學習過程,由信息的正向傳播和誤差的反向傳播兩個過程組成。輸入層各神經元負責接收來自外界的輸入信息,並傳遞給中間層各神經元;中間層是內部信息處理層,負責信息變換,根據信息變化能力的需求,中間層(隱含層)可以設計為單隱層或者多隱層結構;最後一個隱層傳遞到輸出層各神經元的信息,經進一步處理後,完成一次學習的正向傳播處理過程,由輸出層向外界輸出信息處理結果。神經網路很多種,BP神經網路最常用。
B. 機器學習之人工神經網路演算法
機器學習中有一個重要的演算法,那就是人工神經網路演算法,聽到這個名稱相信大家能夠想到人體中的神經。其實這種演算法和人工神經有一點點相似。當然,這種演算法能夠解決很多的問題,因此在機器學習中有著很高的地位。下面我們就給大家介紹一下關於人工神經網路演算法的知識。
1.神經網路的來源
我們聽到神經網路的時候也時候近一段時間,其實神經網路出現有了一段時間了。神經網路的誕生起源於對大腦工作機理的研究。早期生物界學者們使用神經網路來模擬大腦。機器學習的學者們使用神經網路進行機器學習的實驗,發現在視覺與語音的識別上效果都相當好。在BP演算法誕生以後,神經網路的發展進入了一個熱潮。
2.神經網路的原理
那麼神經網路的學習機理是什麼?簡單來說,就是分解與整合。一個復雜的圖像變成了大量的細節進入神經元,神經元處理以後再進行整合,最後得出了看到的是正確的結論。這就是大腦視覺識別的機理,也是神經網路工作的機理。所以可以看出神經網路有很明顯的優點。
3.神經網路的邏輯架構
讓我們看一個簡單的神經網路的邏輯架構。在這個網路中,分成輸入層,隱藏層,和輸出層。輸入層負責接收信號,隱藏層負責對數據的分解與處理,最後的結果被整合到輸出層。每層中的一個圓代表一個處理單元,可以認為是模擬了一個神經元,若干個處理單元組成了一個層,若干個層再組成了一個網路,也就是」神經網路」。在神經網路中,每個處理單元事實上就是一個邏輯回歸模型,邏輯回歸模型接收上層的輸入,把模型的預測結果作為輸出傳輸到下一個層次。通過這樣的過程,神經網路可以完成非常復雜的非線性分類。
4.神經網路的應用。
圖像識別領域是神經網路中的一個著名應用,這個程序是一個基於多個隱層構建的神經網路。通過這個程序可以識別多種手寫數字,並且達到很高的識別精度與擁有較好的魯棒性。可以看出,隨著層次的不斷深入,越深的層次處理的細節越低。但是進入90年代,神經網路的發展進入了一個瓶頸期。其主要原因是盡管有BP演算法的加速,神經網路的訓練過程仍然很困難。因此90年代後期支持向量機演算法取代了神經網路的地位。
在這篇文章中我們大家介紹了關於神經網路的相關知識,具體的內容就是神經網路的起源、神經網路的原理、神經網路的邏輯架構和神經網路的應用,相信大家看到這里對神經網路知識有了一定的了解,希望這篇文章能夠幫助到大家。
C. 基於改進的BP人工神經網路演算法的軟土地基沉降預測
改進的BP神經網路預測需要等間隔數據,利用Spline插值點進行建模。為了和前述方法的預測效果對比,仍選取550~665d(共24個樣本數據)的沉降量作為訓練樣本,預留 670~745d(共16個樣本數據)的沉降量作為對訓練好的BP人工神經網路的檢驗樣本。以每相鄰的連續4個沉降量(時間間隔Δt=5 d)作為一個輸入樣本(S1,S2,S3,S4),緊鄰的第5個沉降量作為目標樣本(S5),這樣,利用 2 4個原始數據點,構建了 21組訓練樣本輸入向量。每組訓練樣本的輸入層單元數為n=4,輸出層單元數為q=1,又隱層單元數p的確定公式為
溫州淺灘軟土工程特性及固結沉降規律研究
式中:a為1~10之間的常數。
由式(5.57)確定隱層神經元數為p=3~12。其具體值將通過BP人工神經網路訓練誤差來判斷,取網路誤差最小時對應的隱層神經元數。
本書基於MATLAB 7.1 編制了改進的BP神經網路程序,對標準的BP人工神經網路演算法採取了增加動量項法和自適應調節學習速率法兩點改進,此外,對輸入輸出數據進行了尺度變換(歸一化處理),變換後可防止因凈輸入的絕對值過大而使神經元輸出飽和,繼而使權值調整進入誤差曲面的平坦區。輸入輸出數據變換為[0,1]區間內的值的歸一化預處理變換式為
溫州淺灘軟土工程特性及固結沉降規律研究
式中:xi為輸入或輸出數據;xmin、xmax為最值;
B P神經網路模型的訓練曲線如圖5.1 7所示。
本書所建立的改進的B P神經網路模型之擬合/預測值與實測值列於表5.13,擬合/預測曲線與實測曲線對比如圖5.1 8所示,其殘差圖如圖5.19所示。
由表5.13 和圖5.1 8、5.19可知,改進的 B P 神經網路模型預測結果的平均殘差為0.1 cm,平均相對誤差為0.0 6%,擬合及預測效果很好。但是與前面幾種預測方法不同的是,改進的BP人工神經網路模型的預測值略小於實測值,隨著預測時間遠離訓練樣本,這將使結果偏於不安全,所以,建議該法用於短、中期預測。同時,為了使後期預測精度更高,應不斷更新訓練樣本向量集。
圖5.17 N5+850斷面 BP 神經網路訓練曲線
圖5.18 N5+850斷面改進的 BP人工神經網路模型預測曲線與實測曲線對比
圖5.19 N5+850斷面改進的 BP人工神經網路模型預測殘差圖
表5.13 改進的BP神經網路預測值與實測值對比
D. 神經網路演算法原理
神經網路預測學習樣本中的駕駛行為特徵。如圖顯示了某個駕駛場景的行駛路徑深度學習訓練,通過神經網路可以學習駕駛人的行為,並根據當前獲取的環境信息決策行駛軌跡,進而可以控制車輛的轉向、制動、驅動實現軌跡跟蹤。
E. 神經網路演算法的優勢與應用
人工神經網路(ANN)以大腦處理機製作為基礎,開發用於建立復雜模式和預測問題的演算法。
首先了解大腦如何處理信息:
在大腦中,有數億個神經元細胞,以電信號的形式處理信息。外部信息或者刺激被神經元的樹突接收,在神經元細胞體中處理,轉化成輸出並通過軸突,傳遞到下一個神經元。下一個神經元可以選擇接受它或拒絕它,這取決於信號的強度。
[圖片上傳失敗...(image-cc0d9d-1512012156403)]
現在,讓我們嘗試了解 ANN 如何工作:
這里, $w_1$ , $w_2$ , $w_3$ 給出輸入信號的強度
從上面可以看出,ANN 是一個非常簡單的表示大腦神經元如何工作的結構。
為了使事情變得更清晰,用一個簡單的例子來理解 ANN:一家銀行想評估是否批准貸款申請給客戶,所以,它想預測一個客戶是否有可能違約貸款。它有如下數據:
所以,必須預測列 X。更接近 1 的預測值表明客戶更可能違約。
基於如下例子的神經元結構,嘗試創建人造神經網路結構:
通常,上述示例中的簡單 ANN 結構可以是:
[圖片上傳失敗...(image-1b4516-1512012156403)]
ANN 有一些關鍵優勢,使它們最適合某些問題和情況:
ANN 是具有廣泛應用的強大的模型。以上列舉了幾個突出的例子,但它們在醫葯、安全、銀行、金融、政府、農業和國防等領域有著廣泛的應用。
F. 神經網路bp演算法可以對樣本進行預測,具體是預測什麼
關於神經網路(matlab)歸一化的整理
由於採集的各數據單位不一致,因而須對數據進行[-1,1]歸一化處理,歸一化方法主要有如下幾種,供大家參考:(by james)
1、線性函數轉換,表達式如下:
y=(x-MinValue)/(MaxValue-MinValue)
說明:x、y分別為轉換前、後的值,MaxValue、MinValue分別為樣本的最大值和最小值。
2、對數函數轉換,表達式如下:
y=log10(x)
說明:以10為底的對數函數轉換。
3、反餘切函數轉換,表達式如下:
y=atan(x)*2/PI
歸一化是為了加快訓練網路的收斂性,可以不進行歸一化處理
歸一化的具體作用是歸納統一樣本的統計分布性。歸一化在0-1之間是統計的概率分布,歸一化在-1--+1之間是統計的坐標分布。歸一化有同一、統一和合一的意思。無論是為了建模還是為了計算,首先基本度量單位要同一,神經網路是以樣本在事件中的統計分別幾率來進行訓練(概率計算)和預測的,歸一化是同一在0-1之間的統計概率分布;
當所有樣本的輸入信號都為正值時,與第一隱含層神經元相連的權值只能同時增加或減小,從而導致學習速度很慢。為了避免出現這種情況,加快網路學習速度,可以對輸入信號進行歸一化,使得所有樣本的輸入信號其均值接近於0或與其均方差相比很小。
歸一化是因為sigmoid函數的取值是0到1之間的,網路最後一個節點的輸出也是如此,所以經常要對樣本的輸出歸一化處理。所以這樣做分類的問題時用[0.9 0.1 0.1]就要比用[1 0 0]要好。
但是歸一化處理並不總是合適的,根據輸出值的分布情況,標准化等其它統計變換方法有時可能更好。
關於用premnmx語句進行歸一化:
premnmx語句的語法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)
其中P,T分別為原始輸入和輸出數據,minp和maxp分別為P中的最小值和最大值。mint和maxt分別為T的最小值和最大值。
premnmx函數用於將網路的輸入數據或輸出數據進行歸一化,歸一化後的數據將分布在[-1,1]區間內。
我們在訓練網路時如果所用的是經過歸一化的樣本數據,那麼以後使用網路時所用的新數據也應該和樣本數據接受相同的預處理,這就要用到tramnmx。
下面介紹tramnmx函數:
[Pn]=tramnmx(P,minp,maxp)
其中P和Pn分別為變換前、後的輸入數據,maxp和minp分別為premnmx函數找到的最大值和最小值。
(by terry2008)
matlab中的歸一化處理有三種方法
1. premnmx、postmnmx、tramnmx
2. restd、poststd、trastd
3. 自己編程
具體用那種方法就和你的具體問題有關了
(by happy)
pm=max(abs(p(i,:))); p(i,:)=p(i,:)/pm;
和
for i=1:27
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:)));
end 可以歸一到0 1 之間
0.1+(x-min)/(max-min)*(0.9-0.1)其中max和min分別表示樣本最大值和最小值。
這個可以歸一到0.1-0.9
G. BP人工神經網路預測
完全可以,神經網路就是這樣用的,極其適用於描述難以給出具體的數學表達式的非線性映射。通過歷史樣本對網路的訓練,可以使網路映射該非線性關系,從而進行可靠性很高的預測。可以使用BP、Elman、RBF網路,這些網路效果較好。建議使用MATLAB編程,較為方便,因為該數學軟體包含神經網路工具箱。
如果你裝了Matlab,可以運行下附件的例子試一下。
H. 神經網路遺傳演算法函數極值尋優
對於未知的非線性函數,僅通過函數的輸入輸出數據難以准確尋找函數極值。這類問題可以通過神經網路結合遺傳演算法求解,利用神經網路的非線性擬合能力和遺傳演算法的非線性尋優能力尋找函數極值。本文用神經網路遺傳演算法尋優如下非線性函數極值,函數表達式為
函數圖形如下圖1所示。
從函數方程和圖形可以看出,該函數的全局最小值為0,對應的坐標為(0,0)。雖然從函數方程和圖形中很容易找出函數極值及極值對應坐標,但是在函數方程未知的情況下函數極值及極值對應坐標就很難找到。
神經網路遺傳演算法函數極值尋優主要分為BP神經網路訓練擬合和遺傳演算法極值尋優兩步,演算法流程如下圖2所示。
神經網路訓練擬合根據尋優函數的特點構建合適的BP神經網路,用非線性函數的輸出數據訓練BP網路,訓練後的BP神經網路就可以預測函數輸出。遺傳演算法極值尋優把訓練後的BP神經網路預測結果作為個體適應度值,通過選擇、交叉和變異操作尋找函數的全局最優值及對應輸入值。
本文根據非線性函數有2個輸入參數、1個輸出參數,確定BP神經網路結構為2-5-1.取函數的4 000組輸入輸出數據,從中隨機選取3 900組數據訓練網路,100組數據測試網路性能,網路訓練好後用於預測非線性函數輸出。
遺傳演算法中個體採用實數編碼,由於尋優函數只有2個輸入參數,所以個體長度為2。個體適應度值為BP神經網路預測值,適應度值越小。交叉概率為0.4,變異概率為0.2。
用函數輸入輸出數據訓練BP神經網路,使訓練後的網路能夠擬合非線性函數輸出,保存訓練好的網路用語計算個體適應度值。根據非線性函數方程隨機得到該函數的4 000組輸入輸出數據,存儲於data.mat中,其中input為函數輸入數據,output為函數對應輸出數據,從中隨機抽取3 900組訓練數據訓練網路,100組測試數據測試網路擬合性能。最後保存訓練好的網路。
把訓練好的BP神經網路預測輸出作為個體適應度值。
BP神經網路擬合結果分析
本文中個體的適應度值為BP神經網路預測值,因此BP神經網路預測精度對於最優位置的尋找具有非常重要的意義。由於尋優非線性函數有2個輸入參數、1個輸出參數,所以構建的BP神經網路的結構為2-5-1。共取非線性函數4 000組輸入輸出數據,從中隨機選擇3 900組數據訓練BP神經網路,100組數據作為測試數據測試BP神經網路擬合性能,BP神經網路預測輸出和期望輸出對比如下圖3所示。
從BP神經網路預測結果可以看出,BP神經網路可以准確預測非線性函數輸出,可以把網路預測近似看成函數實際輸出。
遺傳演算法尋優結果分析 BP神經網路訓練結束後,可以利用遺傳演算法尋找該非線性函數的最小值。遺傳演算法的迭代次數是100次,種群規模是20,交叉概率為0.4,變異概率為0.2,採用浮點數編碼,個體長度為21,優化過程中最優個體適應度值變化曲線如下圖4所示。
本文所使用的方法有比較重要的工程應用價值,比如對於某項試驗來說,試驗目的是獲取到最大試驗結果對應的實驗條件,但是由於時間和經費限制,該試驗只能進行有限次,可能單靠試驗結果找不到最優的試驗條件。這時可以在已知試驗數據的基礎上,通過本文介紹的神經網路遺傳演算法尋找最優試驗條件。
思路就是先根據試驗條件數和試驗結果數確定BP神經網路結構;然後把試驗條件作為輸入數據,試驗結果作為輸出數據訓練BP網路,使得訓練後的網路可以預測一定試驗條件下的試驗結果;最後把試驗條件作為遺傳演算法中的種群個體,把網路預測的試驗結果作為個體適應度值,通過遺傳演算法推導最優試驗結果及其對應試驗條件。
I. 簡單介紹神經網路演算法
直接簡單介紹神經網路演算法
神經元:它是神經網路的基本單元。神經元先獲得輸入,然後執行某些數學運算後,再產生一個輸出。
神經元內輸入 經歷了3步數學運算,
先將兩個輸入乘以 權重 :
權重 指某一因素或指標相對於某一事物的重要程度,其不同於一般的比重,體現的不僅僅是某一因素或指標所佔的百分比,強調的是因素或指標的相對重要程度
x1→x1 × w1
x2→x2 × w2
把兩個結果相加,加上一個 偏置 :
(x1 × w1)+(x2 × w2)+ b
最後將它們經過 激活函數 處理得到輸出:
y = f(x1 × w1 + x2 × w2 + b)
激活函數 的作用是將無限制的輸入轉換為可預測形式的輸出。一種常用的激活函數是 sigmoid函數
sigmoid函數的輸出 介於0和1,我們可以理解為它把 (−∞,+∞) 范圍內的數壓縮到 (0, 1)以內。正值越大輸出越接近1,負向數值越大輸出越接近0。
神經網路: 神經網路就是把一堆神經元連接在一起
隱藏層 是夾在輸入輸入層和輸出層之間的部分,一個神經網路可以有多個隱藏層。
前饋 是指神經元的輸入向前傳遞獲得輸出的過程
訓練神經網路 ,其實這就是一個優化的過程,將損失最小化
損失 是判斷訓練神經網路的一個標准
可用 均方誤差 定義損失
均方誤差 是反映 估計量 與 被估計量 之間差異程度的一種度量。設t是根據子樣確定的總體參數θ的一個估計量,(θ-t)2的 數學期望 ,稱為估計量t的 均方誤差 。它等於σ2+b2,其中σ2與b分別是t的 方差 與 偏倚 。
預測值 是由一系列網路權重和偏置計算出來的值
反向傳播 是指向後計算偏導數的系統
正向傳播演算法 是由前往後進行的一個演算法
J. 神經網路演算法
20 世紀五、六⼗年代,科學家 Frank Rosenblatt其受到 Warren McCulloch 和 Walter Pitts早期的⼯作的影響,發明了感知機(Perceptrons)。
⼀個感知器接受⼏個⼆進制輸⼊, ,並產⽣⼀個⼆進制輸出:
如上圖所示的感知機有三個輸⼊: 。通常可以有更多或更少輸⼊。 我們再引⼊權重: ,衡量輸入對輸出的重要性。感知機的輸出為0 或者 1,則由分配權重後的總和 ⼩於等於或者⼤於閾值決定。和權重⼀樣,閾值(threshold)是⼀個實數,⼀個神經元的參數。⽤更精確的代數形式如下:
給三個因素設置權重來作出決定:
可以把這三個因素對應地⽤⼆進制變數 來表⽰。例如,如果天⽓好,我們把
,如果不好, 。類似地,如果你的朋友陪你去, ,否則 。 也類似。
這三個對於可能對你來說,「電影好不好看」對你來說最重要,而天氣顯得不是那麼的重要。所以你會這樣分配權值: ,然後定義閾值threshold=5。
現在,你可以使⽤感知器來給這種決策建⽴數學模型。
例如:
隨著權重和閾值的變化,你可以得到不同的決策模型。很明顯,感知機不是⼈做出決策使⽤的全部模型。但是這個例⼦說明了⼀個感知機如何能權衡不同的依據來決策。這看上去也可以⼤致解釋⼀個感知機⽹絡有時確實能夠做出一些不錯的決定。
現在我們隊上面的結構做一點變化,令b=-threshold,即把閾值移到不等號左邊,變成偏置, 那麼感知器的規則可以重寫為:
引⼊偏置只是我們描述感知器的⼀個很⼩的變動,但是我們後⾯會看到它引導更進⼀步的符號簡化。因此,我們不再⽤閾值,⽽總是使⽤偏置。
感知機是首個可以學習的人工神經網路,它的出現引起的神經網路的第一層高潮。需要指出的是,感知機只能做簡單的線性分類任務,而且Minsky在1969年出版的《Perceptron》書中,證明了感知機對XOR(異或)這樣的問題都無法解決。但是感知機的提出,對神經網路的發展是具有重要意義的。
通過上面的感知機的觀察我們發現一個問題,每個感知機的輸出只有0和1,這就意味著有時我們只是在單個感知機上稍微修改了一點點權值w或者偏置b,就可能造成最終輸出完全的反轉。也就是說,感知機的輸出是一個階躍函數。如下圖所示,在0附近的時候,輸出的變化是非常明顯的,而在遠離0的地方,我們可能調整好久參數也不會發生輸出的變化。
這樣階躍的跳變並不是我們想要的,我們需要的是當我們隊權值w或者偏置b做出微小的調整後,輸出也相應的發生微小的改變。這同時也意味值我們的輸出不再只是0和1,還可以輸出小數。由此我們引入了S型神經元。
S型神經元使用 S 型函數,也叫Sigmoid function函數,我們用它作為激活函數。其表達式如下:
圖像如下圖所示:
利⽤實際的 σ 函數,我們得到⼀個,就像上⾯說明的,平滑的感知器。 σ 函數的平滑特性,正是關鍵因素,⽽不是其細部形式。 σ 的平滑意味著權重和偏置的微⼩變化,即 ∆w 和 ∆b,會從神經元產⽣⼀個微⼩的輸出變化 ∆output。實際上,微積分告訴我們
∆output 可以很好地近似表⽰為:
上面的式子是⼀個反映權重、偏置變化和輸出變化的線性函數。這⼀線性使得我們可以通過選擇權重和偏置的微⼩變化來達到輸出的微⼩變化。所以當 S 型神經元和感知器本質上是相同的,但S型神經元在計算處理如何變化權重和偏置來使輸出變化的時候會更加容易。
有了對S型神經元的了解,我們就可以介紹神經網路的基本結構了。具體如下:
在⽹絡中最左邊的稱為輸⼊層,其中的神經元稱為輸⼊神經元。最右邊的,即輸出層包含有輸出神經元,在圖中,輸出層只有⼀個神經元。中間層,既然這層中的神經元既不是輸⼊也不是輸出,則被稱為隱藏層。
這就是神經網路的基本結構,隨著後面的發展神經網路的層數也隨之不斷增加和復雜。
我們回顧一下神經網路發展的歷程。神經網路的發展歷史曲折盪漾,既有被人捧上天的時刻,也有摔落在街頭無人問津的時段,中間經歷了數次大起大落。
從單層神經網路(感知機)開始,到包含一個隱藏層的兩層神經網路,再到多層的深度神經網路,一共有三次興起過程。詳見下圖。
我們希望有⼀個演算法,能讓我們找到權重和偏置,以⾄於⽹絡的輸出 y(x) 能夠擬合所有的 訓練輸⼊ x。為了量化我們如何實現這個⽬標,我們定義⼀個代價函數:
這⾥ w 表⽰所有的⽹絡中權重的集合, b 是所有的偏置, n 是訓練輸⼊數據的個數,
a 是表⽰當輸⼊為 x 時輸出的向量,求和則是在總的訓練輸⼊ x 上進⾏的。當然,輸出 a 取決於 x, w和 b,但是為了保持符號的簡潔性,我沒有明確地指出這種依賴關系。符號 ∥v∥ 是指向量 v 的模。我們把 C 稱為⼆次代價函數;有時也稱被稱為均⽅誤差或者 MSE。觀察⼆次代價函數的形式我們可以看到 C(w, b) 是⾮負的,因為求和公式中的每⼀項都是⾮負的。此外,代價函數 C(w,b)的值相當⼩,即 C(w; b) ≈ 0,精確地說,是當對於所有的訓練輸⼊ x, y(x) 接近於輸出 a 時。因
此如果我們的學習演算法能找到合適的權重和偏置,使得 C(w; b) ≈ 0,它就能很好地⼯作。相反,當 C(w; b) 很⼤時就不怎麼好了,那意味著對於⼤量地輸⼊, y(x) 與輸出 a 相差很⼤。因此我們的訓練演算法的⽬的,是最⼩化權重和偏置的代價函數 C(w; b)。換句話說,我們想要找到⼀系列能讓代價盡可能⼩的權重和偏置。我們將采⽤稱為梯度下降的演算法來達到這個⽬的。
下面我們將代價函數簡化為C(v)。它可以是任意的多元實值函數, 。
注意我們⽤ v 代替了 w 和 b 以強調它可能是任意的函數,我們現在先不局限於神經⽹絡的環境。
為了使問題更加簡單我們先考慮兩個變數的情況,想像 C 是⼀個只有兩個變數 和 的函數,我們的目的是找到 和 使得C最小。
如上圖所示,我們的目的就是找到局部最小值。對於這樣的一個問題,一種方法就是通過微積分的方法來解決,我們可以通過計算導數來求解C的極值點。但是對於神經網路來說,我們往往面對的是非常道的權值和偏置,也就是說v的維數不只是兩維,有可能是億萬維的。對於一個高維的函數C(v)求導數幾乎是不可能的。
在這種情況下,有人提出了一個有趣的演算法。想像一下一個小球從山頂滾下山谷的過程, 我們的⽇常經驗告訴我們這個球最終會滾到⾕底。我們先暫時忽略相關的物理定理, 對球體的⾁眼觀察是為了激發我們的想像⽽不是束縛我們的思維。因此與其陷進物理學⾥凌亂的細節,不如我們就這樣問⾃⼰:如果我們扮演⼀天的上帝,能夠構造⾃⼰的物理定律,能夠⽀配球體可以如何滾動,那麼我們將會採取什麼樣的運動學定律來讓球體能夠總是滾落到⾕底呢?
為了更精確地描述這個問題,讓我們思考⼀下,當我們在 和 ⽅向分別將球體移動⼀個很⼩的量,即 ∆ 和 ∆ 時,球體將會發⽣什麼情況。微積分告訴我們 C 將會有如下變化:
也可以用向量表示為
現在我們的問題就轉換為不斷尋找一個小於0的∆C,使得C+∆C不斷變小。
假設我們選取:
這⾥的 η 是個很⼩的正數(稱為學習速率),於是
由於 ∥∇C∥2 ≥ 0,這保證了 ∆C ≤ 0,即,如果我們按照上述⽅程的規則去改變 v,那麼 C
會⼀直減⼩,不會增加。
所以我們可以通過不斷改變v來C的值不斷下降,是小球滾到最低點。
總結⼀下,梯度下降演算法⼯作的⽅式就是重復計算梯度 ∇C,然後沿著相反的⽅向移動,沿著⼭⾕「滾落」。我們可以想像它像這樣:
為了使梯度下降能夠正確地運⾏,我們需要選擇合適的學習速率η,確保C不斷減少,直到找到最小值。
知道了兩個變數的函數 C 的梯度下降方法,我們可以很容易的把它推廣到多維。我們假設 C 是⼀個有 m 個變數 的多元函數。 ∆C 將會變為:
其中, ∇C為
∆v為:
更新規則為:
在回到神經網路中,w和b的更新規則為:
前面提到神經⽹絡如何使⽤梯度下降演算法來學習他們⾃⾝的權重和偏置。但是,這⾥還留下了⼀個問題:我們並沒有討論如何計算代價函數的梯度。這里就需要用到一個非常重要的演算法:反向傳播演算法(backpropagation)。
反向傳播演算法的啟示是數學中的鏈式法則。
四個方程:
輸出層誤差方程:
當前層誤差方程:
誤差方程關於偏置的關系:
誤差方程關於權值的關系
演算法描述:
檢視這個演算法,你可以看到為何它被稱作反向傳播。我們從最後⼀層開始向後計算誤差向量δ。這看起來有點奇怪,為何要從後⾯開始。但是如果你認真思考反向傳播的證明,這種反向移動其實是代價函數是⽹絡輸出的函數的結果。為了理解代價隨前⾯層的權重和偏置變化的規律,我們需要重復作⽤鏈式法則,反向地獲得需要的表達式。
參考鏈接: http://neuralnetworksanddeeplearning.com/