神經網絡概念:
由具有適應性的簡單單元組成的廣泛并行互連的網絡,它的組織能夠模擬生物神經系統(tǒng)對真實世界物種所作出的交互反應
M-P神經元模型:
每個神經元收到nn個其他神經元傳遞過來的輸入信號,這些輸入信號通過帶權重的連接傳遞,神經元接收到的總輸入值與該神經元閾值進行比較,然后通過激活函數(shù)處理,產生神經元的輸出。
激活函數(shù)常采用Sigmoid函數(shù):\displaystyle \text{sigmoid}(x)=\frac{1}{1 + e^{-x}}sigmoid(x)=1+e?x1
感知機概念:
由兩層神經元組成,輸入層接收外界信號后傳遞給輸出層,輸出層是M-P神經元(閾值邏輯單元)
感知機學習規(guī)則:
對訓練樣例(x,y)(x,y),若當前感知機的輸出為\hat{y}y^,則感知機權重進行如下調整:\begin{array}{cc} w_i \leftarrow w_i + \Delta w_i \\ \Delta w_i = \eta(y-\hat{y})x_i \end{array}wi←wi+ΔwiΔwi=η(y?y^)xi其中\(zhòng)eta \in (0,1)η∈(0,1)稱為學習率。
多層神經網絡:目的是解決非線性可分問題,輸出層和輸入層之間的被稱為隱含層,隱含層和輸出層神經元都是擁有激活函數(shù)的功能神經元。
BP算法思路:
首先將誤差反向傳播給隱含層神經元,調節(jié)隱含層到輸出層的連接權重與輸出層神經元的閾值;接著根據隱含層神經元的均方誤差,來調節(jié)輸入層到隱含層的連接權值與隱含層神經元的閾值。
BP算法基本流程:
輸入:?訓練集D=\{(x_k,y_k)\}_{k=1}^mD={(xk,yk)}k=1m
學習率\etaη
過程:
(1) 在(0,1)(0,1)范圍內隨機初始化網絡中所有連接權和閾值;
(2)?repeat
(3)for all?(x_k,y_k) \in D(xk,yk)∈D?do
(4) ??根據當前參數(shù)和\hat{y}_j^k = f(\beta_j-\theta_j)y^jk=f(βj?θj)計算當前樣本的輸出\hat{y}_ky^k;
(5) ??根據g_j= \hat{y}_j^k (1-\hat{y}_j^k )(y_j^k-\hat{y}_j^k)gj=y^jk(1?y^jk)(yjk?y^jk)計算輸出層神經元的梯度項g_jgj;
(6) ??根據\displaystyle e_h=b_h(1-b_h)\sum_{j=1}^l w_{hj} g_jeh=bh(1?bh)j=1∑lwhjgj隱藏層神經元的梯度項e_heh;
(7) ??更新連接權w_{hj},v_{ih}whj,vih與閾值\theta_j,\gamma_hθj,γh;
(8)end for
(9)?until?達到停止條件
輸出:?連接權與閾值確定的多層前饋神經網絡
BP算法更新規(guī)則:
基于每個樣本的預測值與真實類標的均方誤差來進行權值調節(jié),即每次更新只針對單個樣例。其最終目標是要最小化整個訓練集DD上的累積誤差,即:\displaystyle E=\frac{1}{m} \sum_{k=1}^m E_kE=m1k=1∑mEk
通過“試錯法”設置隱含層神經元個數(shù),使得多層前饋網絡能夠逼近連續(xù)函數(shù)。
解決BP網絡的過擬合:
早停(early stopping):將數(shù)據分為訓練集與驗證集,訓練集用于計算梯度、更新連接權重和閾值,驗證集用于評估誤差,若在訓練過程中,訓練集誤差降低,而驗證集誤差升高,則停止訓練。
正則化(regularization):在誤差目標函數(shù)中增加一個用于描述網絡復雜度的部分,例如連接權重與閾值的平方和,其中\(zhòng)lambda \in (0,1)λ∈(0,1)用于對經驗誤差與網絡復雜度這兩項進行折中,常通過交叉驗證法來估計。E=\lambda \frac{1}{m} \sum_{k=1}^m E_k+(1-\lambda) \sum_{i} w_i^2E=λm1k=1∑mEk+(1?λ)i∑wi2