BP神经网络过程:

基本思想

BP算法是一个迭代算法,它的基本思想如下:

  1. 将训练集数据输入到神经网络的输入层,经过隐藏层,最后达到输出层并输出结果,这就是前向传播过程。
  2. 由于神经网络的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
  3. 在反向传播的过程中,根据误差调整各种参数的值(相连神经元的权重),使得总损失函数减小。
  4. 迭代上述三个步骤(即对数据进行反复训练),直到满足停止准则。

梯度下降法

bp神经网络反向传播计算 反向传递神经网络_迭代


紫色部分:正确结果与节点输出结果的差值,也就是误差;

红色部分:节点的激活函数,所有输入该节点的链路把经过其上的信号与链路权重做乘积后加总,再把加总结果进行激活函数运算;

绿色部分:链路w(jk)前端节点输出的信号值。

神经网络训练过程实例

  1. 第一层是输入层,包含两个神经元:i1,i2 和偏置b1;
  2. 第二层是隐藏层,包含两个神经元:h1,h2 和偏置项b2;
  3. 第三层是输出:o1,o2。
  4. 每条线上标的 wi 是层与层之间连接的权重。
  5. 激活函数是 sigmod 函数。
  6. 我们用 z 表示某神经元的加权输入和;用 a 表示某神经元的输出。

Step 1 前向传播

输入层 —> 隐藏层

bp神经网络反向传播计算 反向传递神经网络_神经网络_02

隐藏层 —> 输出层

bp神经网络反向传播计算 反向传递神经网络_神经网络_03


bp神经网络反向传播计算 反向传递神经网络_反向传播_04


bp神经网络反向传播计算 反向传递神经网络_迭代_05

Step 2 反向传播

计算损失函数:

bp神经网络反向传播计算 反向传递神经网络_神经网络_06

隐藏层 —> 输出层的权值更新

bp神经网络反向传播计算 反向传递神经网络_反向传播_07


bp神经网络反向传播计算 反向传递神经网络_迭代_08


bp神经网络反向传播计算 反向传递神经网络_反向传播_09


bp神经网络反向传播计算 反向传递神经网络_反向传播_10


bp神经网络反向传播计算 反向传递神经网络_神经网络_11

输入层 —> 隐藏层的权值更新

bp神经网络反向传播计算 反向传递神经网络_反向传播_12


bp神经网络反向传播计算 反向传递神经网络_神经网络_13


bp神经网络反向传播计算 反向传递神经网络_神经网络_14


bp神经网络反向传播计算 反向传递神经网络_bp神经网络反向传播计算_15


这样,反向传播算法就完成了,最后我们再把更新的权值重新计算,不停地迭代。 在这个例子中第一次迭代之后,总误差0.298371109下降至0.291027924。

迭代10000次后,总误差为0.000035085。输出为:[0.015912196, 0.984065734]