《机器学习(周志华)》笔记--神经网络(4)--误差逆传播算法(BP):BP算法、BP算法推导
三、误差逆传播算法(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)