BP神經網路演算法(1)

來源:互聯網
上載者:User

 

BP(Back Propagation)網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關係,而無需事前揭示描述這種映射關係的數學方程。

一個神經網路的結構如下所示。

BP神經網路模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。輸入層神經元的個數由樣本屬性的維度決定,輸出層神經元的個數由樣本分類個數決定。隱藏層的層數和每層的神經元個數由使用者指定。每一層包含若干個神經元,每個神經元包含一個而閾值,用來改變神經元的活性。網路中的弧線表示前一層神經元和後一層神經元之間的權值。每個神經元都有輸入和輸出。輸入層的輸入和輸出都是訓練樣本的屬性值。

對於隱藏層和輸出層的輸入
其中,是由上一層的單元i到單元j的串連的權;是上一層的單元i的輸出;而是單元j的閾值。

神經網路中神經元的輸出是經由賦活Function Compute得到的。該函數用符號表現單元代表的神經元活性。賦活函數一般使用simoid函數(或者logistic函數)。神經元的輸出為:

除此之外,神經網路中有一個學習率(l)的概念,通常取0和1之間的值,並有助於找到全域最小。如果學習率太小,學習將進行得很慢。如果學習率太大,可能出現在不適當的解之間擺動。

交代清楚了神經網路中基本要素,我們來看一下BP演算法的學習過程:

BPTrain(){

      初始化network的權和閾值。

      while 終止條件不滿足 {

            for samples中的每個訓練樣本X {

            // 向前傳播輸入

            for 隱藏或輸出層每個單元j {

                 
;//
相對於前一層i,計算單元j的淨輸入
;//
計算單元j的輸出

            }

            // 後向傳播誤差

            for 輸出層每個單元j {

                 
;//
計算誤差

            }

            for 由最後一個到第一個隱藏層,對於隱藏層每個單元j {

                  
;//
k是j的下一層中的神經元

            }

            for network中每個權
{

                   

; // 權增值

                   

; // 權更新

             }

             for network中每個偏差
{

                     

// 偏差增值

                     
;//
偏差更新

             }

      }

}

演算法基本流程就是:

1、初始化網路權值和神經元的閾值(最簡單的辦法就是隨機初始化)

2、前向傳播:按照公式一層一層的計算隱層神經元和輸出層神經元的輸入和輸出。

3、後向傳播:根據公式修正權值和閾值

直到滿足終止條件。

演算法中還有幾點是需要說明的:

1、關於,是神經元的誤差。

對於輸出層神經元,其中,是單元j的實際輸
出,而是j基於給定訓練樣本的已知類標號的真正輸出。

對於隱藏層神經元,其中,是由下一較高層中單元k到單元j的串連權,而是單元k的誤差。

權值增量是,閾值增量是,其中是學習率。

對於的推導採用了梯度下降的演算法。推導的前提是保證輸出單元的均方差最小。,其中P是樣本總數,m是輸出層神經元個數是樣本實際輸出,是神經網路輸出。

梯度下降思路就是對求的導數。

對於輸出層:

其中的就是。

對於隱藏層:

其中=就是隱藏層的誤差計算公式。

2、關於終止條件,可以有多種形式:

§ 前一周期所有的都太小,小於某個指定的閾值。

§ 前一周期未正確分類的樣本百分比小於某個閾值。

§ 超過預先指定的周期數。

§ 神經網路的輸出值和實際輸出值的均方誤差小於某一閾值。

一般地,最後一種終止條件的準確率更高一些。

在實際使用BP神經網路的過程中,還會有一些實際的問題:

1、 樣本處理。對於輸出,如果只有兩類那麼輸出為0和1,只有當趨於正負無窮大的時候才會輸出0,1。因此條件可適當放寬,輸出>0.9時就認為是1,輸出<0.1時認為是0。對於輸入,樣本也需要做歸一化處理。

2、 網路結構的選擇。主要是指隱藏層層數和神經元數決定了網路規模,網路規模和效能學習效果密切相關。規模大,計算量大,而且可能導致過度學習;但是規模小,也可能導致欠擬合。

3、 初始權值、閾值的選擇,初始值對學習結果是有影響的,選擇一個合適初始值也非常重要。

4、 增量學習和批量學習。上面的演算法和數學推導都是基於批量學習的,批量學習適用於離線學習,學習效果穩定性好;增量學習使用於線上學習,它對輸入樣本的雜訊是比較敏感的,不適合劇烈變化的輸入模式。

5、 對於激勵函數和誤差函數也有其他的選擇。

總的來說BP演算法的可選項比較多,針對特定的訓練資料往往有比較大的最佳化空間。

 全文參考:http://blog.csdn.net/sealyao/article/details/6538361  

 

BP(Back Propagation)網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式映射關係,而無需事前揭示描述這種映射關係的數學方程。

一個神經網路的結構如下所示。

BP神經網路模型拓撲結構包括輸入層(input)、隱層(hide layer)和輸出層(output layer)。輸入層神經元的個數由樣本屬性的維度決定,輸出層神經元的個數由樣本分類個數決定。隱藏層的層數和每層的神經元個數由使用者指定。每一層包含若干個神經元,每個神經元包含一個而閾值,用來改變神經元的活性。網路中的弧線表示前一層神經元和後一層神經元之間的權值。每個神經元都有輸入和輸出。輸入層的輸入和輸出都是訓練樣本的屬性值。

對於隱藏層和輸出層的輸入
其中,是由上一層的單元i到單元j的串連的權;是上一層的單元i的輸出;而是單元j的閾值。

神經網路中神經元的輸出是經由賦活Function Compute得到的。該函數用符號表現單元代表的神經元活性。賦活函數一般使用simoid函數(或者logistic函數)。神經元的輸出為:

除此之外,神經網路中有一個學習率(l)的概念,通常取0和1之間的值,並有助於找到全域最小。如果學習率太小,學習將進行得很慢。如果學習率太大,可能出現在不適當的解之間擺動。

交代清楚了神經網路中基本要素,我們來看一下BP演算法的學習過程:

BPTrain(){

      初始化network的權和閾值。

      while 終止條件不滿足 {

            for samples中的每個訓練樣本X {

            // 向前傳播輸入

            for 隱藏或輸出層每個單元j {

                 
;//
相對於前一層i,計算單元j的淨輸入
;//
計算單元j的輸出

            }

            // 後向傳播誤差

            for 輸出層每個單元j {

                 
;//
計算誤差

            }

            for 由最後一個到第一個隱藏層,對於隱藏層每個單元j {

                  
;//
k是j的下一層中的神經元

            }

            for network中每個權
{

                   

; // 權增值

                   

; // 權更新

             }

             for network中每個偏差
{

                     

// 偏差增值

                     
;//
偏差更新

             }

      }

}

演算法基本流程就是:

1、初始化網路權值和神經元的閾值(最簡單的辦法就是隨機初始化)

2、前向傳播:按照公式一層一層的計算隱層神經元和輸出層神經元的輸入和輸出。

3、後向傳播:根據公式修正權值和閾值

直到滿足終止條件。

演算法中還有幾點是需要說明的:

1、關於,是神經元的誤差。

對於輸出層神經元,其中,是單元j的實際輸
出,而是j基於給定訓練樣本的已知類標號的真正輸出。

對於隱藏層神經元,其中,是由下一較高層中單元k到單元j的串連權,而是單元k的誤差。

權值增量是,閾值增量是,其中是學習率。

對於的推導採用了梯度下降的演算法。推導的前提是保證輸出單元的均方差最小。,其中P是樣本總數,m是輸出層神經元個數是樣本實際輸出,是神經網路輸出。

梯度下降思路就是對求的導數。

對於輸出層:

其中的就是。

對於隱藏層:

其中=就是隱藏層的誤差計算公式。

2、關於終止條件,可以有多種形式:

§ 前一周期所有的都太小,小於某個指定的閾值。

§ 前一周期未正確分類的樣本百分比小於某個閾值。

§ 超過預先指定的周期數。

§ 神經網路的輸出值和實際輸出值的均方誤差小於某一閾值。

一般地,最後一種終止條件的準確率更高一些。

在實際使用BP神經網路的過程中,還會有一些實際的問題:

1、 樣本處理。對於輸出,如果只有兩類那麼輸出為0和1,只有當趨於正負無窮大的時候才會輸出0,1。因此條件可適當放寬,輸出>0.9時就認為是1,輸出<0.1時認為是0。對於輸入,樣本也需要做歸一化處理。

2、 網路結構的選擇。主要是指隱藏層層數和神經元數決定了網路規模,網路規模和效能學習效果密切相關。規模大,計算量大,而且可能導致過度學習;但是規模小,也可能導致欠擬合。

3、 初始權值、閾值的選擇,初始值對學習結果是有影響的,選擇一個合適初始值也非常重要。

4、 增量學習和批量學習。上面的演算法和數學推導都是基於批量學習的,批量學習適用於離線學習,學習效果穩定性好;增量學習使用於線上學習,它對輸入樣本的雜訊是比較敏感的,不適合劇烈變化的輸入模式。

5、 對於激勵函數和誤差函數也有其他的選擇。

總的來說BP演算法的可選項比較多,針對特定的訓練資料往往有比較大的最佳化空間。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.