赞
踩
神经网络作为运用广泛的智能算法,被用于很多技术领域,虽然在Matlab等软件当中已经封装了相关的函数库,任何人都能够十分方便地使用编程软件构建神经网络。但是笔者认为如果不能详细了解神经网络的构建过程,那么对于神经网络的了解也将是雾里看花,使用也是十分僵化不能变通。因此,详细地自主架构神经网络是很有必要的。
目标:BP神经网络
作用:拟合数据,输入数据为0.32,0.87,0.89,0.33;目标输出为0.99,0.32,0.45,0.12。
参考:https://blog.csdn.net/zhaomengszu/article/details/77834845.
神经网络算法是典型的学习型算法,其输出结果与执行次数有关,算法系统中存在负反馈调节,符合如下的系统流程:
BP神经网络主要由前向传播和后向传播两个算法组成,通过正向传播和反向传播之间的不断循环实现基于目标的学习。正向传播的作用是复现我们的推演假设,得到推演结果,反向传播算法的主要作用是依据上一次推演结果判断误差,并实现对于参数的调整,预备下一次运算。其中决定神经网络性能之一的便是反向传播的方式和方法,BP神经网络采用的是梯度下降法来确定性能。由于本文主要任务是将概念性的公式翻译成编程语言,因此算法的推导和变形不做过多赘述,仅列出已经经过简化之后的公式,相关推导请阅读参考博文。
构建神经网络为4输入4输出,目标隐含层的个数设计为3,层数为1,示意图如下:
具体算法步骤:
1)确定相关数值:设定每层传播之间的权值(图示的w1和w2,分别为43和34的数组),确定学习效率yeta=0.5,输入数据和参考目标;
2)构建前向传播算法,确定隐含层的数据,使用激活函数为Sigmod函数,具体公式为:
如法炮制,计算出实际输出层的值:
完成前向传播模块布置;
3)构建后向传播算法,更新w1和w2的值,具体公式如下:
由于参考文章中已有推导证明,可以自行阅读。
如法炮制再向前更新一步,计算出w1,但是结果略微有所区别,具体公式如下:
前向传播算法完成。
4)加上循环嵌套和相应的连接代码,完成算法,具体代码如下:
a=[0.32,0.87,0.89,0.33] #实际输入
target_c=[0.99,0.32,0.45,0.12] #目标输出
w1=[[0.4
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。