神經網絡

神經元模型


如上圖,神經元接收到來自\(n\)個其餘神經元傳遞過來的輸入信號,這些輸入信號經過帶權重的鏈接進行傳遞,神經元接收到的總輸入值將與神經元的閾值進行比較,而後經過激活函數處理以產生神經元的輸出。網絡

感知機

對訓練樣例\((x,y)\),若當前感知機的輸出爲\(\hat{y}\),則感知機權重將這樣調整:
\[w_i \leftarrow w_i +\Delta w_i,\\ \Delta w_i=\eta(y-\hat{y})x_i \]
其中,\(\eta\in (0,1)\)稱爲學習率,\(w_i\)爲權重。若感知機對訓練樣例\((x,y)\)預測正確,則感知機不發生變化;不然將根據錯誤的程度進行權重調整。函數

多層前饋神經網絡:每層神經元與下一層神經元互連,神經元之間不存在同層鏈接,也不存在跨層鏈接。學習

神經網絡的學習過程,就是根據訓練數據來調整神經元之間的「鏈接權」以及每一個功能神經元的閾值。測試

BP算法(反向傳播算法)

BP網絡
給定訓練集\(D=\{(x_1,y_1),(x_2,y_2),\cdots,(x_m,y_m)\},\ x_i\in R^d,\ y_i\in R_l\),即輸入示例由\(d\)個屬性描述,輸出\(l\)維實值向量。spa

對訓練集,假定神經網絡的輸出爲\(\hat{y_k}=(\hat{y}_1^k,\hat{y}_2^k,\cdots,\hat{y}_l^k)\),即
\[\hat{y}_j^k=f(\beta_j-\theta_j)\]
其中,\(\theta_j\)表示輸出層第\(j\)個神經元的閾值。3d

均方偏差爲:
\[E_k=\frac{1}{2}\sum_{j=1}^l(\hat{y}_j^k-y_j^k)^2\]blog

BP是一個迭代算法,在迭代的每一輪中採用廣義的感知機學習規則對參數進行更新估計。BP算法基於梯度降低策略,以目標的負梯度方向對參數進行調整,有
\[\Delta w_{hj}=\eta \frac{\partial E_k}{\partial w_{hj}}\]
因爲\(w_{hj}\)先影響到第\(j\)個輸出層神經元的輸入值\(\beta_j\),再影響到其輸出值\(\hat{y}_j^k\),而後影響到\(E_k\),有:
\[\frac{\partial E_k}{\partial w_{hj}}=\frac{\partial E_k}{\partial \hat{y}_j^k}\cdot \frac{\hat{y}_j^k}{\partial \beta_j}\cdot \frac{\beta_j}{\partial w_{hj}}\]
對於Sigmoid函數,有\(f'(x)=f(x)(1-f(x))\)
其中,
\[g_j=-\frac{\partial E_k}{\partial \hat{y}_j^k}\cdot \frac{\hat{y}_j^k}{\partial \beta_j}\\ =-(\hat{y}_j^k-y_j^k)f'(\beta_j-\theta_j)\\ =\hat{y}_j^k(1-\hat{y}_j^k)(y_j^k-\hat{y}_j^k)\]
\[\frac{\beta_j}{\partial w_{hj}}=b_h\]
所以,\[\Delta w_{hj}=\eta g_j b_h\]it

相似可得:
\[\Delta \theta_j=-\eta g_j\\ \Delta v_{ih}=\eta e_h x_i\\ \Delta \gamma_h=-\eta e_h\]
其中,
\[e_h=-\frac{\partial E_k}{\partial b_h}\cdot \frac{\partial b_h}{\partial \alpha_h}\\ =-\sum_{j=1}^l \frac{\partial E_k}{\partial \beta_j}\cdot \frac{\partial \beta_j}{\partial b_h}f'(\alpha_h - \gamma_h)\\ =\sum_{j=1}^lw_{hj}g_jf'(\alpha_h - \gamma_h)\\ =b_h(1-b_h)\sum_{j=1}^lw_{hj}g_j\]io

BP算法

BP算法的目標是要最小化訓練集\(D\)上的累計偏差:\[E=\frac{1}{m}\sum_{k=1}^mE_k\]

標準BP算法:每次僅針對一個訓練樣例更新鏈接權和閾值。

BP神經網絡常常遭遇過擬合,其訓練偏差持續下降,但測試偏差卻可能上升。解決策略:

  1. 「早停」(early stopping):將數據分紅訓練集和驗證集,訓練集用來計算梯度,更新鏈接權和閾值,驗證集用來估計偏差,若訓練集偏差下降但驗證集偏差升高,則中止訓練,同時返回具備最小驗證集偏差的鏈接權和閾值。
  2. 「正則化」(regularization):在偏差目標函數中增長一個用於描述網絡複雜度的部分,例如鏈接權與閾值的平方和,仍令\(E_k\)表示第\(k\)個樣例上的偏差,\(w_i\)表示鏈接權和閾值,則偏差目標函數爲:
    \[E=\lambda \frac{1}{m}\sum_{k=1}^mE_k+(1-\lambda)\sum_iw_i^2\]
    其中,\(\lambda \in (0,1)\)用於對經驗偏差與網絡複雜度這兩項進行折中,常經過交叉驗證法來估計。

擴展

多隱層神經網絡難以直接用經典算法(日標準BP算法)進行訓練,由於偏差在多隱層內逆傳播時,每每會「發散」而不能收斂到穩定狀態。

相關文章
相關標籤/搜索