《机器学习(周志华)》笔记--神经网络(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)

 

posted @ 2020-02-15 12:56  泰初  阅读(1249)  评论(0编辑  收藏  举报