zoukankan      html  css  js  c++  java
  • BP神经网络

    BP神经网络是一种按误差反向传播的多层前馈神经网络,含有一个或多个隐含层,其拓扑结构与一般神经网络相似,BP神经网络的隐含层激活函数一般是sigmoid函数,输出层如果是函数逼近,其激活函数一般是线性函数,分类问题其激活函数一般是sigmoid函数

    BP神经网络的学习一般分为两部分:

    一:正向计算各个神经元的输出

    二:误差反向传播修正权值和阈值

    下面开始BP神经网络的学习算法

    以有两个隐含层的BP神经网络为例,下面是其拓扑结构:

    规定一些符号:

    输入层神经元的个数是M,隐含层1是I,隐含层2是J,输出层是K

    输入层的第m个神经元用m表示,同理隐含层1是i,隐含层2是j,输出层是k

    输入层到隐含层1的权值连接用Wmi表示,隐含层1到隐含层2用Wij表示,隐含层2到输出层用Wjk表示

    (u,v)分别表示各层的输入和输出

    用Ml,Il,Jl,Kl分别标识输入层,隐含层1,隐含层2,输出层

    隐含层1第i个神经元的输入:

    ui(Il)=∑m=1 to MWmivm(ML)

    隐含层1第i个神经元的输出:

    Vi(Il)=f(ui(Il))

    隐含层2第j个神经元的输入:

    uj(Jl)=∑i=1 to IWijvi(Il)

    隐含层2第j个神经元的输出:

    vj(Jl)=g(uj(Jl))

    输出层的第k个神经元的输入是:

    uk(Kl)=∑j=1 to JWjkvj(Jl)

    输出层的第k个神经元的输出是:

    vk(Kl)=h(uk(Kl))

    第k个神经元的输出误差是:

    ek=dk-vk(Kl)

    网络的总误差是:

    E=1/2∑k=1 to K(ek)2

    BP学习算法和W-H算法一样是基于梯度下降的学习算法,所以

    W(n+1)=W(n)-η∂E/∂W

    下面开始求误差反向传播的权值更新:

    由链式求导得到:

                  ∂E/∂Wjk=(∂E/∂ek)(∂ek/∂vk(Kl))(∂vk(Kl)/∂uk(Kl))(∂uk(Kl)/∂Wjk)

                              =-ekd(h)vj(Jl) 其中d(h)表示对h函数求导

    故∂E/∂Wjk=-ekd(h)vj(Jl)

    现在定义局部梯度:

    Ψk(Kl)=∂E/∂uk(Kl)

             =(∂E/∂ek)(∂ek/∂vk(Kl))(∂vk(Kl)/∂uk(Kl))

             =-ekd(h)

    故∂E/∂Wjkk(Kl)vj(Jl)

    同理得到∂E/∂Wijj(Jl)vi(Il)

    Ψj(Jl)=∑k=1 to KWjkΨk(Kl)d(h)d(g)vi(Il)

    同理得∂E/Wmii(Il)vm(Ml)

    Ψi(Il)=∑j=1 to JWijΨj(Jl)d(f)vm(Ml)

    由上面叙述,进行权值更新:

    wmi(n+1)=Wmi(n)+η∑j=1 to JWijΨj(Jl)d(f)vm(Ml)

    Wij(n+1)=Wij(n)+η∑k=1 to KWjkΨk(Kl)d(h)d(g)vi(Il)

    Wjk(n+1)=Wjk(n)+ηekd(h)vj(Jl)

  • 相关阅读:
    HTML、CSS、JS 复习——序
    HTML + CSS短标题(二,三,四文字长度)两端对齐的方式
    Supper关键字
    java的重写
    java重载
    Java继承
    JAVA访问权限控制
    (转)java类初始化顺序
    Java 数组和集合
    Java 方法签名
  • 原文地址:https://www.cnblogs.com/semen/p/6828030.html
Copyright © 2011-2022 走看看