BP神经网络

BP是back propagation

BP神经网络主要的算法在于误差反向传播error BackPropagation

神经网络结构

有三层:输入层(input)、隐含层(hidden)、输出层(output)

输入层:n个神经元

隐含层:p个神经元

输出层:q个神经元

这里写图片描述

变量定义

输入向量: x=(x1,x2,...,xn)
隐含层输入向量: hi=(hi1,hi2,...,hip)
隐含层输出向量: ho=(ho1,ho2,...,hop)
输出层输入向量: yi=(yi1,yi2,...,yiq)
输出层输出向量: yo=(yo1,yo2,...,yoq)
期望输出向量: do=(d1,d2,...,dq)

输入层与隐含层的连接权值: wih
隐含层到输出层的连接权值: who
隐含层阈值: bh
输出层阈值: bo

样本数据个数: k=1,2,...,m
激活函数: f(.)
误差函数: e=12o=1q(do(k)yoo(k))2

第一步

网络初始化

给各个权值赋予随机初值在(-1, -1)

设定误差函数e,给定计算精度值 ε

给定计算学习次数M

第二步

随机选取第k个样本及对应期望输出

x(k)=(x1(k),x2(k),...,xn(k))

do(k)=(d1(k),d2(k),...,dq(k))

第三步

计算各个神经元的输入和输出

hih(k)=i=1nwihxi(k)bh     h=1,2,...,p

hoh(k)=f(hih(k))     h=1,2,...,p

yio(k)=h=1pwhohoh(k)bo   o=1,2,...,q

yoo(k)=f(yio(k))    o=1,2,...,q

第四步

求误差对 who 偏导

用到链导法则

ewho=eyioyiowho

把这个式子分成两部分来求:

eyio=(12o=1q(do(k)yoo(k))2)yio         =(do(k)yoo(k))yoo(k)         =(do(k)yoo(k))f(yio(k))         =δo(k)

yiowho=hoh(k) 这个等式很明显

第五步

求误差对 wih 偏导

ewih=ehih(k)hih(k)wih

这个也分两部分来求,后一部分是:

hih(k)wih=xi(k)

ehih(k)=(o=1qδo(k)who)f(hih(k))=δh(k)

如何理解上式:
主要思想就是链导
误差对隐含层输入的偏导 = 误差对输出层输入的偏导 × 输出层输入对隐含层输出的偏导 × 隐含层输出对隐含层输入的偏导

其中:
误差对输出层输入的偏导就是 δo(k)
输出层输入对隐含层输出的偏导就是 who
隐含层输出对隐含层输入的偏导就是 f(hih(k))

所以就有了上式

第六步

更新权值

Δwho(k)=μewho=μδo(k)hoh(k)
wN+1ho=wNho+Δwho(k)

Δwih(k)=μewih=δh(k)xi(k)
wN+1ih=wNih+Δwih(k)

原文地址:这里写链接内容

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值