BP神经网络算法常规思路及详细解法(数学建模or机器学习)
Back-Propagation Network
原创声明:本文为博主原创,转载请注明出处:https://blog.****.net/weixin_40913261/article/details/82619840
-
简介
反向传播网络(Back-Propagation Network)简称BP网络,基于误差反向传播算法(BP算法)的一种多层网络。
下面为2-3-2BP网络模型:
-
算法介绍
算法伪代码:
输入:训练集D
学习率η
1:数据归一化
2:创建网络
3:训练网络
repeat for D
3.1:正向传播
3.2:反向传播
until for 达到结束条件
4:使用网络
5:数据反归一化
输出:训练完成的BP神经网络
-
算法详解
网络结构
如2-3-2层神经网络:
符号说明
训练样本:
输入层到隐含层权值:
隐含层输入:
(p为隐含层神经元个数)
隐含层输出:
隐含层到输出层权值:
输出层输入:
(q为输出层神经元个数)
输出层输出:
期望输出:
样本数据个数: k=1,2,...,m
各层神经元个数: n,p,q
**函数: f(·)
误差函数:
·算法详解
1.数据归一化
·最大最小法:
·平均数方差法:
(mean为均值,var为方差)
2.创建网络
2.1:确定网络层数与每层神经元数量
层数:根据经验,一般层数等于(输入+输出)/2,然后慢慢进行调整。一般使用 三层。
隐含层结点数:节点数太少, 网络不能很好的学习,需要增加训练次数;节 点数过多,训练时间会加长,网络容易过拟合。
参考以下公式:
2.2:初始化网络中所有权值
(0,1)内随机赋值。(有的资料赋(-1,1))
2.3:确定隐含层、输出层**函数
选取S型函数,在网络层数少时,一般选择sigmoid函数或tanh函数
2.4:设置训练参数
根据经验赋值
3.训练网络
3.1:随机选取某个输入样本
(图1模型中n=2)
3.2:计算当前样本隐藏层输入和输出
隐藏层输入:
(图1模型中p=3)
隐藏层输出:
3.3:计算当前样本输出层输入和输出
输出层输入:
输出层输出:
3.4:计算误差函数
3.5:计算误差函数对输出层和隐含层之间参数的偏导数
3.6:计算误差函数对隐含层和输入层之间参数的偏导数
3.7:修正参数
输出层和隐含层之间参数:
隐含层和输入层之间参数:
3.8:计算全局误差
3.9:判断网络误差是否满足要求。当误差达到预设精度或学习次数大于设定的最 大次数,则结束算法。否则回到3.1
4.使用网络
输入所要进行处理的数据。
5.数据反归一化
直接使用MATLAB反归一化函数即可
·gif动态图
·应用
BP网络主要用于:
·函数逼近:用输入矢量和相应的输出矢量训练一个网络逼近—个函数;
·模式识别:用一个特定的输出矢量将它与输入矢量联系起来;
·分类:把输入矢量以所定义的合适方式进行分类;
·数据压缩:减少输出矢量维数以便于传输或存储。