三、誤差逆傳播算法(BP)
1、BP算法
多層網絡的學習能力比單層感知機強得多。欲訓練多層網絡,簡單感知學習規則顯然不夠了,需要更強大的學習算法。誤差逆傳播(errorBackPropagation,簡稱BP)算法就是其中最傑出的代表。BP算法是迄今最成功的神經網絡學習算法。
BP網絡:用BP算法訓練的多層前饋神經網絡。
需通過學習確定的參數數目:(d+1)*q+(q+1)*l 。
2、BP算法推導
可利用梯度下降法修改權值向量和閾值,需通過學習確定的參數:
(1)輸入層與隱層之間的權值
(2)隱層神經元的閾值
(3)隱層與輸出層之間的權值
(4)輸出層的閾值
推算過程:
總結:
代碼實現:
#BP神經網絡 import numpy as np X=np.array([[0,0,-1],[0,1,-1],[1,0,-1],[1,1,-1]]) Y=np.array([[0],[1],[1],[0]]) V = (np.random.rand(3,2)-0.5)*2/np.sqrt(2) W = (np.random.rand(3,1)-0.5)*2/np.sqrt(2) i=1 while i<2000: B=1/(1+np.exp(-np.dot(X,V))) ones=-np.ones((4,1)) B=np.hstack((B,ones)) Y_h=1/(1+np.exp(-np.dot(B,W))) G= (Y-Y_h)*Y_h*(1-Y_h) E=B*(1-B)*np.dot(G,W.T) W=W+np.dot(B.T,G) V=V+np.dot(X.T,E[:,:-1]) i=i+1 print(Y_h)