機器學習——BP神經網路演算法

loveliuzz發表於2017-09-12

1、背景

以人腦中的神經網路為啟發,歷史上出現過很多不同的版本,最著名的演算法是1980年的backpropagation

2、多層向前神經網路(Multilayer Feed-Forward Neural Network)

backpropagation被使用在多層向前神經網路上,多層向前神經網路由一下幾部分組成:

輸入層(input layer)、隱藏層(hidden layers)、輸出層(output layer)

(1)每層由單元(unit)組成,每個單元可以被稱作神經結點,根據生物學來源定義。

(2)輸入層(input layer)是由訓練集的例項特徵向量傳入經過連線節點的權重(weight)傳入下一層,

一層中的加權的求和,然後根據非線性方程轉化輸出一層的輸出是下一層的輸入

(3)隱藏層的個數可以是任意的,輸入層和輸出層都有一層

(4)上圖稱為2層的神經網路(輸入層不算)

(5)作為多層向前神經網路,理論上,如果有足夠多的隱藏層和足夠大的訓練集,可以模擬任何方程

3、設計神經網路結構

(1)使用神經網路訓練資料之前,必須確定神經網路的層數,以及每層單元的個數

(2)特徵向量在被傳入輸入層時通常先被標準化(normalize)到0-1之間(為了加速學習過程)。

(3)離散型變數可以被編碼成每一個輸入單元對應一個特徵值可能賦的值。(神經網路既支援離散變數也支援連續變數)

比如:特徵值A可能取3個值(a0,a1,a2),可以使用3個輸入單元來代表A。

如果A=a0,那麼代表a0的取值單元為1,其他都為0.

如果A=a1,那麼代表a1的取值單元為1,其他都為0,依此類推。

(4)神經網路既可以用來做分類(classification)問題也可以解決迴歸(regression)問題,分類問題預測值是離散型變數,迴歸問題預測值是連續型變數。

對於分類問題,如果是2類,可以用1個輸出單元表示(0和1分別代表2類)。如果多於2類,每一個類別用一個輸出單元表示,

所以,輸出層的數量通常等於類別的數量

(5)沒有明確的規則來設計最好有多少個隱藏層,根據實驗測試和誤差,以及準確度來對實驗進行改進。

4、交叉驗證方法(Cross-Validation)

設定隱藏層的層數用準確度來判斷,用科學的交叉驗證方法計算出的準確度更常用。

將一份資料分成k份,第一次用第1份做測試,剩餘的k-1份做訓練集,計算出一個準確度;第二次用第2份做測試,剩餘的k-1份做訓練集,

計算出一個準確度;以此類推,計算出k個準確度,取它們的平均值作為最終的準確度,這個演算法也稱作k-fold cross validation。

5、Backpropagation演算法

Neural Network是一種神經網路結構,Backpropagation演算法使用在這種神經網路結構上面的。

(1)通過迭代性來處理訓練集中例項。

(2)通過對比神經網路後輸入層預測值(predicted value)與真實值(target value)之間的差距

(3)反方向(從輸出層=>隱藏層=>輸入層)來以最小誤差(error)來更新每個連線的權重(weight)和偏向(bias)

6、演算法的詳細介紹

(1)輸入:D:訓練集 學習率(learing rate) 一個多層向前神經網路

(2)輸出:一個訓練好的神經網路——a trained neural network(權重全部更新好使得真實值與預測值之間的差最小化)

(3)初始化權重(weight)和偏向(bias):隨機初始化在-1到1之間或者-0.5-0.5之間,每個單元有一個偏向。

(4)對於每一個訓練例項,執行以下步驟:

a:由輸入層向前傳入先隨機給出一些權重,輸入層乘以對應權重求和再進行非線性轉化

輸入層乘以對應權重求和公式為:,Oi是前一層經過非線性轉化的輸出值,具體過程如下圖:


非線性轉化公式為:

b、根據誤差(error)反向傳輸

對於輸出層誤差:,其中,Oj是算出的預測值,Ti是原本真實的標籤值


對於隱藏層誤差:,Errk是前面一層的誤差(注:這裡是反向傳輸,

舉例:要求隱藏層第4個結點的誤差,由於反向傳輸Errk作為前一層是結點6的誤差


權重更新:,l是學習率(在0-1之間,開始設定大一點,然後逐漸減小的優化方法)


偏向更新:


c、終止條件

權重的更新低於某個閾值

預測的錯誤率低於某個閾值

達到預設一定的迴圈次數

7、Backpropagation演算法舉例



總結:隨著計算機硬體的更新和計算速度的極大提高,最近四五年裡,深度學習非常火爆,

它的基本思想還是利用Backpropagation演算法,只不過是多增加了幾層隱藏層,使得實驗結果的準確率達到很高。

相關文章