BP神经网络模型及梯度下降法
BP神經網絡模型及梯度下降法
BP(Back Propagation)網絡是1985年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播算法訓練的多層前饋網絡,是目前應用最廣泛的神經網絡模型之一。
BP網絡能學習和存貯大量的輸入-輸出模式映射關系,而無需事前揭示描述這種映射關系的數學方程。它的學習規則是使用最速下降法,通過反向傳播來不斷調整網絡的權值和閾值,使網絡的誤差平方和最小。
BP神經網絡模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。一個最簡單的三層BP神經網絡:
BP神經網絡的學習目的是希望能夠學習到一個模型,能夠對輸入運算后輸出一個我們期望的輸出。
后向傳播的對象是訓練過程中的分類誤差,通過從輸出層到前一隱含層,再到更前一層的隱含層,逐層向后傳遞計算出所有層的誤差估計。
在BP神經網絡中,只有相鄰的神經層的各個單元之間有聯系,除了輸出層外,每一層都有一個偏置結點:
上圖中隱藏層只畫了一層,但其層數并沒有限制,傳統的神經網絡學習經驗認為一層就足夠好,而最近的深度學習觀點認為在一定范圍內,層數越多,模型的描述和還原能力越強。
偏置結點是為了描述訓練數據中沒有的特征,偏置結點對于下一層的每一個結點的權重的不同而生產不同的偏置,于是可以認為偏置是每一個結點(除輸入層外)的屬性。
訓練一個BP神經網絡,實際上就是在外界輸入樣本的刺激下不斷調整網絡的權重和偏置這兩個參數,以使網絡的輸出不斷接近期望的輸出,BP神經網絡的訓練過程分兩部分:
- 前向傳輸,逐層波浪式的傳遞輸出值;
- 逆向反饋,反向逐層調整權重和偏置;
BP神經網絡層與層之間的關系是通過激活函數來描述的,激活函數相當于生物學中細胞體中的細胞核,是對輸入信號的處理單元。激活函數必須滿足處處可導的條件,BP中常用的激活函數是Sigmoid。
前向傳輸?(Feed-Forward前向反饋)
BP網絡訓練開始之前,對網絡的權重和偏置值進行初始化,權重取[-1,1]之間的一個隨機數,偏置取[0,1]間的一個隨機數。神經網絡的訓練包含多次的迭代過程,每一次迭代(訓練)過程都使用訓練集的所有樣本。
每一輪訓練完成后判斷訓練樣本的分類正確率和最大訓練次數是否滿足設定條件,如果滿足則停止訓練,不滿足則從前向傳輸進入到逆向傳輸階段。
逆向反饋(Backpropagation)
逆向反饋從最后一層即輸出層開始,訓練神經網絡作分類的目的往往是希望最后一層的輸出能夠描述數據記錄的類別,比如對于一個二分類的問題,我們常常用兩個神經單元作為輸出層,如果輸出層的第一個神經單元的輸出值比第二個神經單元大,我們認為這個數據記錄屬于第一類,否則屬于第二類。
逆向反饋是為了調整網絡的參數,即權重值和偏置值,而調整的依據就是網絡的輸出層的輸出值與類別之間的差異,通過調整參數來縮小這個差異,這就是神經網絡的優化目標。對于輸出層:
其中Ej表示第j個結點的誤差值,Oj表示第j個結點的輸出值,Tj記錄輸出值,比如對于2分類問題,我們用01表示類標1,10表示類別2,如果一個記錄屬于類別1,那么其T1=0,T2=1。
中間的隱藏層并不直接與數據記錄的類別打交道,而是通過下一層的所有結點誤差按權重累加,計算公式如下:
其中Wjk表示當前層的結點j到下一層的結點k的權重值,Ek下一層的結點k的誤差率。
計算完誤差率后,就可以利用誤差率對權重和偏置進行更新,首先看權重的更新:
其中λ表示表示學習速率,取值為0到1,學習速率設置得大,訓練收斂更快,但容易陷入局部最優解,學習速率設置得比較小的話,收斂速度較慢,但能一步步逼近全局最優解。
更新完權重后,還有最后一項參數需要更新,即偏置:
這樣就完成了一次神經網絡的訓練過程,通過不斷的使用所有數據記錄進行訓練,從而得到一個分類模型。不斷地迭代,直到滿足最大迭代次數或者模型在訓練樣本集上的預測準確率達到預設要求。
BP神經網絡訓練的具體流程:BP網絡的設計
在進行BP網絡的設計是,一般應從網絡的層數、每層中的神經元個數和激活函數、初始值以及學習速率等幾個方面來進行考慮,下面是一些選取的原則。
1.網絡的層數
理論已經證明,具有偏差和至少一個S型隱層加上一個線性輸出層的網絡,能夠逼近任何有理函數,增加層數可以進一步降低誤差,提高精度,但同時也是網絡 復雜化。另外不能用僅具有非線性激活函數的單層網絡來解決問題,因為能用單層網絡解決的問題,用自適應線性網絡也一定能解決,而且自適應線性網絡的 運算速度更快,而對于只能用非線性函數解決的問題,單層精度又不夠高,也只有增加層數才能達到期望的結果。
2.隱層神經元的個數
網絡訓練精度的提高,可以通過采用一個隱含層,而增加其神經元個數的方法來獲得,這在結構實現上要比增加網絡層數簡單得多。一般而言,我們用精度和 訓練網絡的時間來恒量一個神經網絡設計的好壞:?
(1)神經元數太少時,網絡不能很好的學習,訓練迭代的次數也比較多,訓練精度也不高。?
(2)神經元數太多時,網絡的功能越強大,精確度也更高,訓練迭代的次數也大,可能會出現過擬合(over fitting)現象。?
由此,我們得到神經網絡隱層神經元個數的選取原則是:在能夠解決問題的前提下,再加上一兩個神經元,以加快誤差下降速度即可。
3.初始權值的選取
一般初始權值是取值在(?1,1)之間的隨機數。另外威得羅等人在分析了兩層網絡是如何對一個函數進行訓練后,提出選擇初始權值量級為s√r的策略, 其中r為輸入個數,s為第一層神經元個數。
4.學習速率
學習速率一般選取為0.01?0.8,大的學習速率可能導致系統的不穩定,但小的學習速率導致收斂太慢,需要較長的訓練時間。對于較復雜的網絡, 在誤差曲面的不同位置可能需要不同的學習速率,為了減少尋找學習速率的訓練次數及時間,比較合適的方法是采用變化的自適應學習速率,使網絡在不同的階段設置不同大小的學習速率。
5.期望誤差的選取
在設計網絡的過程中,期望誤差值也應當通過對比訓練后確定一個合適的值,這個合適的值是相對于所需要的隱層節點數來確定的。一般情況下,可以同時對兩個不同 的期望誤差值的網絡進行訓練,最后通過綜合因素來確定其中一個網絡。
梯度下降法
BP中通過訓練誤差來逐步調整各層間的輸入權重和偏置,這個調整的過程依據的算法一般有兩種,一是梯度下降法(Gradient Descent),一是最小二乘法。
訓練誤差(損失函數)是關于輸入權重和偏置的二次函數,分別對權重和偏置求偏導數,也就是梯度向量,沿著梯度向量的方向,是訓練誤差增加最快的地方, 而沿著梯度向量相反的方向,梯度減少最快,在這個方向上更容易找到訓練誤差函數(損失函數)的最小值。
梯度下降法的直觀理解參見下圖:
在山峰附件的某處,要一步一步走向山底,一個好的辦法是求解當前位置的梯度,然后沿著梯度的負方向向下走一步,然后繼續求解當前位置的梯度,繼續沿著梯度的負方向走下去,這樣一步一步直到山底,這其中用到的方向就是梯度下降法。
梯度下降法也有一個問題就是如果初始點的位置選擇的不合適,就容易導致找到的一個局部最優解,而不是全局最優解。?
梯度下降的算法調優
1. 算法的步長選擇。在前面的算法描述中,我提到取步長為1,但是實際上取值取決于數據樣本,可以多取一些值,從大到小,分別運行算法,看看迭代效果,如果損失函數在變小,說明取值有效,否則要增大步長。步長太大,會導致迭代過快,甚至有可能錯過最優解。步長太小,迭代速度太慢,很長時間算法都不能結束。所以算法的步長需要多次運行后才能得到一個較為優的值。
2. 算法參數的初始值選擇。?初始值不同,獲得的最小值也有可能不同,因此梯度下降求得的只是局部最小值;當然如果損失函數是凸函數則一定是最優解。由于有局部最優解的風險,需要多次用不同初始值運行算法,關鍵損失函數的最小值,選擇損失函數最小化的初值。
3.歸一化。由于樣本不同特征的取值范圍不一樣,可能導致迭代很慢,為了減少特征取值的影響,可以對特征數據歸一化,也就是對于每個特征x,求出它的期望
這樣特征的新期望為0,新方差為1,迭代次數可以大大加快。
梯度下降法分類
批量梯度下降法(Batch Gradient Descent)
批量梯度下降法,是梯度下降法最常用的形式,具體做法也就是在更新參數時使用所有的樣本來進行更新。
隨機梯度下降法(Stochastic Gradient Descent)
隨機梯度下降法,其實和批量梯度下降法原理類似,區別在與求梯度時沒有用所有的m個樣本的數據,而是僅僅選取一個樣本來求梯度。
隨機梯度下降法由于每次僅僅采用一個樣本來迭代,訓練速度很快,而批量梯度下降法在樣本量很大的時候,訓練速度不能讓人滿意。對于準確度來說,隨機梯度下降法用于僅僅用一個樣本決定梯度方向,導致解很有可能不是最優。對于收斂速度來說,由于隨機梯度下降法一次迭代一個樣本,導致迭代方向變化很大,不能很快的收斂到局部最優解。
小批量梯度下降法(Mini-batch Gradient Descent)
小批量梯度下降法是批量梯度下降法和隨機梯度下降法的折衷,也就是對于m個樣本,我們采用x個樣子來迭代,1<x<m。一般可以取x=10,當然根據樣本的數據,可以調整這個x的值。
梯度下降法和其他無約束優化算法的比較
在機器學習中的無約束優化算法,除了梯度下降以外,還有前面提到的最小二乘法,此外還有牛頓法和擬牛頓法。
梯度下降法和最小二乘法相比,梯度下降法需要選擇步長,而最小二乘法不需要。梯度下降法是迭代求解,最小二乘法是計算解析解。如果樣本量不算很大,且存在解析解,最小二乘法比起梯度下降法要有優勢,計算速度很快。但是如果樣本量很大,用最小二乘法由于需要求一個超級大的逆矩陣,這時就很難或者很慢才能求解解析解了,使用迭代的梯度下降法比較有優勢。
梯度下降法和牛頓法/擬牛頓法相比,兩者都是迭代求解,不過梯度下降法是梯度求解,而牛頓法/擬牛頓法是用二階的海森矩陣的逆矩陣或偽逆矩陣求解。相對而言,使用牛頓法/擬牛頓法收斂更快。但是每次迭代的時間比梯度下降法長。
本文轉載自BP神經網絡模型及梯度下降法
總結
以上是生活随笔為你收集整理的BP神经网络模型及梯度下降法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《华为战略管理法:DSTE实战体系》整体
- 下一篇: 华为C语言编程规范(精华总结)