如图:第一层是输入层,包含两个神经元i1,i2,和截距项b1;第二层是隐含层,包含两个神经元h1,h2和截距项b2,第三层是输出o1,o2,每条线上标的wi是层与层之间连接的权重,激活函数我们默认为sigmoid函数。
关于sigmoid函数: 图形: 导数:
OK ,继续
输入及目的:
输入数据 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
b1=0.35,b2=0.60
目标:给出输入数据i1,i2(0.05和0.10),使输出尽可能与原始输出o1,o2(0.01和0.99)接近。
Step 1:前向传播(各个层次之间是全连接的)
1.输入层------>隐含层
h1的输入加权和为:neth1=w1*i1+w2*i2+b1*1=0.15*0.05+0.20*0.10+0.35*1=0.3775
h1的输出为:outh1=s(neth1)=0.593269992
同理得: outh2=0.596684378
2.隐含层——>输出层
得 : neto1=w5*outh1+w6*outh2+b2=1.105905967
outo1=0.75136507
outo2=0.772928465
前向传播结束,得到输出值为(0.75136507,0.772928465),与实际值【0.01,0.99】相差较大,现在进行反向传播,更新权值。重新计算
step2 :反向传播
1.计算总误差
总误差:(square error)
有两个输出,分别计算o1和o2的误差,为这两者之和
2.隐含层————>输出层得权值更新
以w5为例,如果想知道w5对整体误差的影响,可以用整体误差对w5求偏导:(链式法则)
对于这张图的理解,从total开始,链式法则如此total->outo1->neto1->w5
分别计算每个式子
计算:
计算
就是sigmol函数的求导,上边已经写过
计算
原文:https://www.cnblogs.com/APINKE/p/11215828.html