BP算法

谈BP算法

以下仅是我个人对BP算法的理解与看法,仅供学术参考

BP算法的来源与背景

1.1943年,心理学家W·Mcculloch和数理逻辑学家W·Pitts在分析、总结神经元基本特性的基础上首先提出神经元的数学模型。此模型也一直沿用至今。
2.到了80年代,美国的物理学家Hopfield于1982年和1984年在美国科学院院刊上发表了两篇关于人工神经网络研究的论文,这也是神经网络最原始的框架,一直到了现在有了完整的神经网络体系。

什么是BP算法

误差逆传播算法(backpropagation BP算法)是应用与神经网络中的一种反向传播的算法,也就是根据所损失函数,求出损失函数关于每一层的权值及偏置项的偏导数,也称为梯度,用该值更新初始的权值和偏置项,一直更新到损失函数取得最小值或是设置的迭代次数完成为止。以此来计算神经网络中的最佳的参数,也就是通过反向传播而得出最优解。

BP算法的应用

可应用于回归预测问题(可以进行数据分析检测、控制等)
可用于类型划分,进行模式分析等问题

BP算法的优点

BP是所有优化问题的基础
BP实质上实现了一个从输入到输出的映射功能,这使得它特别适合于求解内部机制复杂的问题;
能通过学习带正确答案的实例集自动提取“合理的”求解规则,即具有自学习能力;
BP具有一定的推广、概括能力。

算法的基本实现步骤

1.初始化
2.输入训练样本对,计算各层输出
3.计算网络输出误差
4.计算各层误差信号
5.调整各层权值

代码实现

#include "BpNet.h"
#include "Util.h"

using namespace std;

void getInput(double& threshold,int& mostTimes);  // 获得输入的阀值和误差大小
vector<Sample> getTrianData();           // 从文件获取训练数据 没获取到直接退出
vector<Sample> getTestData();            // 从文件获取测试数据 没获取到直接退出
void showTest(vector<Sample>testGroup);  // 输出测试数据的结果

int main(){
   
    // 准备所有数据
    BpNet bpNet;
    vector<Sample> sampleGroup = getTrianData();
    vector<Sample> testGroup = getTestData();
	double threshold;   // 设定的阀值
    int mostTimes;      // 最大训练次数

    // 获取输入 并提示数据已经录入
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值