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)

  • 相关阅读:
    calc PI
    c# 设置水印,消除水印
    设置windows10 背景颜色
    C# 获取当前路径
    反编译工具
    c# 窗口API,以及全屏锁定一些tips
    c# 几种singleton 实现
    List<T> JIT 分配策略
    软件工程
    mariaDB 安装/卸载+启动/关闭 服务
  • 原文地址:https://www.cnblogs.com/semen/p/6828030.html
Copyright © 2011-2022 走看看