BP神经网络学习笔记

(本文为自我总结的BP神经网络学习笔记,读者可能会有些地方不懂或者认为有错误的地方,请留言赐教或交流)

神经网络的构成为:输入层、隐含层、输出层;

每层都含有数个神经元;

X1,X2,……,Xn 为输入层神经元,其中n为神经元的个数;

h1,h2,……,hp为隐含层神经元,其中p为隐含层神经元的个数;

 

    隐层神经元的个数一般是由经验确定无固定公式,参照:p = (n + m)  + a,

    其中,n为输入层神经元个数, m为输出层神经元个数, a为[1,10]之间的常数

y1,y2,……,ym 为输出层神经元,其中m为输出层神经元的个数;

每层神经元有加权值w和截距b参数;(这里类似于一次函数的转换关系)

这里权值w和截距b一般选择在[0,1]之间的随机数;

激励函数:隐含层和输出层神经元中的每个神经元都有激励函数,一般激励函数都用sigmoid函数,这个函数的输出在[0,1]或者[-1,1]之间;

正向传递过程是(以单个隐含层为例):输入层,经过加权加参后,作为隐含层的输入,传入隐含层,经过隐含层的激励函数得到隐含层的输出,这个输出经过加权加参,作为输出层的输入,再经过输出层神经元的激励函数,得到输出;

反向训练:这个过程是通过训练函数,从实际输出值与目标输出值的误差出发,计算每个权值w和截距b对误差的影响,通过反复迭代,从而反复修改这两个参数,最后使训练集数据的实际输出与目标输出的误差达到最小;

训练函数有几种:  1,traingd;(标准BP算法)

                            2,traingdm;(增加动量法)

                            3,traingdx;(自适应学习率)

                            4,trainrp;(弹性BP算法)

                            5,trainlm;(Levenberg-Marquardt,也称为L-M算法,经常用这个)

 

接下来,介绍神经网络的步骤:

1. 首先进行初始化,即确定要输入数据所对应的目标输出,加权值w和截距b;

2. 正向传递,即输入数据通过隐含层和输出层得到实际输出;

这里在输入的数据中,需要对数据进行归一化,因为sigmoid函数的输出在[0,1]或者[-1,1]之间;

3. 误差反向传播,即计算实际输出与目标输出的误差,然后通过训练函数反向训练,计算w和b对误差的影响;

4. 修改权值,即通过计算后得到影响则对其修改,实际计算中有个学习速率作为其修改参数;

5. 重新验证误差精度;

重复上诉步骤进行迭代。

 

泛化过程:最后得到训练好的神经网络之后,利用新的数据作为输入,得到的输出就是我们想要的输出。

 

在故障诊断中的应用:

例如在正常数据的输出为(0,0,0),故障类别中规定了(1,0,0)(0,1,0)(0,0,1)这三种故障;

那么我们只需要选取的输出神经元个数为3(注意:这里的3不是对应三种,而是对应的3个输出值);

例如我们通过一个(21,9,3)结构的神经网络(21为输入层神经元个数,9为隐含层神经元个数,3为输出层神经元个数);

输入21个特征数据得到输出为(0.11, 0.95,0.12),那么我们通过误差计算就可以判定为是第二种(0,1,0)故障类别。

 

下面举个matlab例子,引荐于:https://www.cnblogs.com/sallybin/p/3169572.html

 

根据表1,预测序号15的跳高成绩。

表1               国内男子跳高运动员各项素质指标

序号

跳高成绩()

30行进跑(s)

立定三级跳远()

助跑摸高()

助跑4—6步跳高()<

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值