写在前面:
最近为了准备数模,囫囵吞枣地看了一些相关的模型和算法,神经网络模型我也是刚刚接触,这篇文章的内容算是一个笔记,记录的是我现阶段对这个算法的印象,肯定有偏颇与不对的地方,希望各位大佬多多指正与补充
BP神经网络预测算法
BP神经网络是前缀网络的一种 , 由输入层与输出层之间的若干隐层组成 , 如图 :
1. 前向传输
*对于隐层的任一神经元 j ,其的输入I_{j}为:
w_{ji} 为隐层神经元 j 与输入层神经元 i 之间的突出强度(即加权值);
*其输出为 :
其中u(x)为激活函数 , 这里取1/(1+e^(-x))
2. 误差反向传播
*隐层的实际输出y_{j} 与期望输出 d_{j} 的差距为 :
*最小均方根 (虽然我也不知道为什么要这样做==) :
*误差累加 :
*根据累加的误差 , 采用梯度下降法对加权值w{ij} 进行修正 :
其中
是设置的误差方向传播的学习率 ;
Matlab工具箱实现 (为什么用工具箱 ? 原理都没弄明白更不指望能自己手打程序了=_=,只能说工具箱是个好东西)
手动在app那找到 Neural Net Fitting (在命令行中,输入命令nftool)
一路next
在 Select Data 中选择输入数据和期待的输入数据 和 响应 的 样本类型。
一路next
在Network Archiecture 中设置 隐层 的神经元数 y 一般按照公式 :
其中n是输入层的神经元数;m是输出层的神经元数;a属于[1,10];
一路 next
在Train Network 点击 Train
一路 next
在 Save Results 中 生成脚本 (Simple Script)
回到编译器 中保存脚本并运行 ;
这时会得到一个训练好地 net 模型
在 命令行中 运用该模型 和 你的输出数据 得到 预测结果 ;
y=sim(net,x) 其中 x为输入的数据 ; y为最终预测的值 ;