个人学习记录
第一层是输入层,包含两个神经元i1,i2,和截距项b1;第二层是隐含层,包含两个神经元h1,h2和截距项b2,第三层是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数我们默认为sigmoid函数。
输入数据 i1=0.05,i2=0.10;
输出数据 o1=0.01,o2=0.99;
初始权重 w1=0.15,w2=0.20,w3=0.25,w4=0.30;
w5=0.40,w6=0.45,w7=0.50,w8=0.55
前向传播
1.输入层---->隐含层:计算神经元h1的输入加权和
2.隐含层---->输出层: 计算输出层神经元o1和o2的值
输出值与实际值相差很远,我们对误差进行反向传播,更新权值,重新计算输出。
反向传播
1.计算总误差
2.隐含层---->输出层的权值更新:
以权重参数w5为例,如果我们想知道w5对整体误差产生了多少影响,可以用整体误差对w5求偏导求出:(链式法则)
3.隐含层---->输入层的权值更新:
方法其实与上面说的差不多,但是有个地方需要变一下,在上文计算总误差对w5的偏导时,是从out(o1)---->net(o1)---->w5,但是在隐含层之间的权值更新时,是out(h1)---->net(h1)---->w1,而out(h1)会接受E(o1)和E(o2)两个地方传来的误差,所以这个地方两个都要计算。
这样误差反向传播法就完成了,最后我们再把更新的权值重新计算,不停地迭代,在第一次迭代之后,总误差E(total)由0.298371109下降至0.291027924。迭代10000次后,总误差为明显下降。