BP神经网络模型

一、简介

BP神经网络学习算法可以说是目前最成功的神经网络学习算法。显示任务中使用神经网络时,大多数是使用BP算法进行训练.

在我看来BP神经网络就是一个”万能的模型+误差修正函数“,每次根据训练得到的结果与预想结果进行误差分析,进而修改权值和阈值,一步一步得到能输出和预想结果一致的模型。举一个例子:比如某厂商生产一种产品,投放到市场之后得到了消费者的反馈,根据消费者的反馈,厂商对产品进一步升级,优化,从而生产出让消费者更满意的产品。这就是BP神经网络的核心。

BP神经网络是一种按误差反向传播(简称误差反传)训练的多层前馈网络,其算法称为BP算法,它的基本思想是梯度下降法,利用梯度搜索技术,以期使网络的实际输出值和期望输出值的误差均方差为最小

关于梯度下降算法的直观理解

关于梯度下降算法的直观理解,我们以一个人下山为例。比如刚开始的初始位置是在红色的山顶位置,那么现在的问题是该如何达到蓝色的山底呢?按照梯度下降算法的思想,它将按如下操作达到最低点:

 

第一步,明确自己现在所处的位置

第二步,找到相对于该位置而言下降最快的方向

第三步, 沿着第二步找到的方向走一小步,到达一个新的位置,此时的位置肯定比原来低

第四部, 回到第一步

第五步,终止于最低点

按照以上5步,最终达到最低点,这就是梯度下降的完整流程。当然你可能会说,上图不是有不同的路径吗?是的,因为上图并不是标准的凸函数,往往不能找到最小值,只能找到局部极小值。所以你可以用不同的初始位置进行梯度下降,来寻找更小的极小值点,当然如果损失函数是凸函数就没必要了,开开心心的进行梯度下降吧!

BP神经网络结构

BP神经网络的过程主要分为两个阶段,第一阶段是信号的前向传播,从输入层经过隐含层,最后到达输出层;第二阶段是误差的反向传播,从输出层到隐含层,最后到输入层,依次调节隐含层到输出层的权重和偏置,输入层到隐含层的权重和偏置。

BP神经网络流程

神经元是以生物研究及大脑的响应机制而建立的拓扑结构网络,神经网络的基本组成单元是神经元。神经元的通用模型如图所示,其中常用的激活函数有阈值函数、sigmoid函数和双曲正切函数。

神经元的输出为: 

神经网络是将多个神经元按一定规则联结在一起而形成的网络,如图 所示。 

二、BP网络输入与输出关系

BP网络采用的传递函数是非线性变换函数——Sigmoid函数(又称S函数)。其特点是函数本身及其导数都是连续的,因而在处理上十分方便。

三、 BP算法的Java代码实现

1.  定义一个BP神经网络的类,设置网络相关参数

2.    实例化该神经网络,按下图被构建成一个输出3维,输出1维,带有3个隐藏层(每个隐藏层10个节点)的BP网络;(此处还可以随意扩展输入、输出维度和隐藏层相关系数)

3.    初始化BP神经网络的时候,开始初始化各层网络节点的 权重、权重动量、误差初始值

4.  引入学习训练数据;4组输入、输出数据迭代5000次

    5000次中不断向前逐层计算输出的节点数据

    并同时逐层计算误差反向修改权重值,直到迭代完毕;注意误差函数值必须呈现下降趋势

5.  引入数据进行结果预测,将数据带回模型计算得结果;最终可知预测结果趋近于0.7

四、 BP算法意味着什么

神经网络利用现有的数据找出输入与输出之间得权值关系(近似),然后利用这样的权值关系进行仿真,例如输入一组数据仿真出输出结果,当然你的输入要和训练时采用的数据集在一个范畴之内。例如预报天气:温度 湿度 气压等作为输入 天气情况作为输出利用历史得输入输出关系训练出神经网络,然后利用这样的神经网络输入今天的温度 湿度 气压等 得出即将得天气情况。同理,运用到自动化测试中,使用测试数据反映结果走向,bug数,质量问题等情况也可以做到提前预测的!

附录:

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值