BP神经网络过程:
基本思想
BP算法是一个迭代算法,它的基本思想如下:
- 将训练集数据输入到神经网络的输入层,经过隐藏层,最后达到输出层并输出结果,这就是前向传播过程。
- 由于神经网络的输出结果与实际结果有误差,则计算估计值与实际值之间的误差,并将该误差从输出层向隐藏层反向传播,直至传播到输入层;
- 在反向传播的过程中,根据误差调整各种参数的值(相连神经元的权重),使得总损失函数减小。
- 迭代上述三个步骤(即对数据进行反复训练),直到满足停止准则。
梯度下降法
紫色部分:正确结果与节点输出结果的差值,也就是误差;
红色部分:节点的激活函数,所有输入该节点的链路把经过其上的信号与链路权重做乘积后加总,再把加总结果进行激活函数运算;
绿色部分:链路w(jk)前端节点输出的信号值。
神经网络训练过程实例
- 第一层是输入层,包含两个神经元:i1,i2 和偏置b1;
- 第二层是隐藏层,包含两个神经元:h1,h2 和偏置项b2;
- 第三层是输出:o1,o2。
- 每条线上标的 wi 是层与层之间连接的权重。
- 激活函数是 sigmod 函数。
- 我们用 z 表示某神经元的加权输入和;用 a 表示某神经元的输出。
Step 1 前向传播
输入层 —> 隐藏层
隐藏层 —> 输出层
Step 2 反向传播
计算损失函数:
隐藏层 —> 输出层的权值更新
输入层 —> 隐藏层的权值更新
这样,反向传播算法就完成了,最后我们再把更新的权值重新计算,不停地迭代。 在这个例子中第一次迭代之后,总误差0.298371109下降至0.291027924。
迭代10000次后,总误差为0.000035085。输出为:[0.015912196, 0.984065734]