来个小例子讲述一下,过程。
apf 是0.9 , af是0.1 为什么用0.9,用0.1 主要是因为1和0.在计算过程中,会有计算隐患(可能遇到0,就计算不下去等情况)。
a0(1)=1.78 a0(2)=1.14 也就是第一组数据。输出a2 =0.9 。最后我们要进行多次的迭代和优化,优化的呢??就是w1,和w2.使得样本的数据,输入就最接近输出的过程。BP神经网络是反馈型的。具体怎么反馈的,后面在写。现在大概写一下,计算的过程。
建立一个小的神经网络。BP神经网络,它是有监督学习型的。假设神经网络的权系数
w1,从上到下,总共4条。w2,就2条线。分别对应一个系数。
矩阵的第3栏,就是阈值。前面一个章节,画神经元的时候,有阈值的。
开始计算
u1(1)是中间的变量。它进行传递函数后,就是a1(1)的输出。数学公式表示是
这里有个f()函数。就是我前一个文章里面的传递函数。
相同的求法,求出a2;求出的结果。刚开始的时候a2一定和0.9有误差的,这个时候,就要对结果进行反馈调节w(就是权重)。
要进行反馈了。
代表学习率一般是-0.1。就是w权重变化的多少由它来控制。
第二层的反馈
把第一组的方程,代入到第二组。公式看起来有点乱是吧。慢慢看吧。 p是第几组数据, t(1)是我设定的值就是0.9 a2(1)计算出来的值 它们俩相减就是误差嘛
隐层多,精度就会高,但是运算量也会增大。而且增加隐层节点,比增加隐层层数要好(一层最好)。当然当前例子就没有隐层。
隐层节点数不仅与输入/输出层的节点数有关,更与需解决的问题的复杂程度和转换函数的型式以及样本数据的特性等因素有关。(呵呵,看来难度有点大,看来这块需要慢慢来了)
输入和输出都是规定好的。因为题目出现,输入和输出层,自己也就大概知道了。
BP神经网络,很容易陷入局部最小值。有时候需要经验,所有的这些参数,没有统一的公式,标准,所以需要很多的尝试才能感觉出用哪些参数更好。
到目前为止,很多关于BP神经网络的,我都没尝试。我也不知道有多复杂。仅仅了解一点点。
我能力有限,但是我努力分享我的知识,慢慢学习,慢慢长大。