1、概述
全连接神经网络和卷积神经网络用的是反向传播(BackPropagation,BP),而卷积神经网络用的是随时间反向传播(BackPropagation Through Time,BPTT),这一节先讲BP。
2、网络结构
假设有如下网络,
第一层为输入层,输入节点为x1,x2, 偏置为b1,第二层为隐含层,节点为a1,a2,偏置为b2,第三层为输出层,节点为y1,y2,激活函数为Sigmoid函数。
3、初始化
目标:
输入x1=0.10,x2=0.50时,输出接近Yout1=0.01,Yout2=0.89
分别对上面网络赋初值,
输入:x1=0.1, x2 = 0.5
权重:w1=0.15, w2=0.30, w3=0.45, w4=0.60
w5=0.25, w6=0.40, w7=0.55, w8=0.65
偏置:b1=0.54, b2=0.87
4、前向传播
4.1、输入层-->隐含层
计算a1的加权和,将上面初始化的值带入运算即可,
NETa1 = x1×w1 + x2×w3 +b1=0.1×0.15+0.5×0.45+0.54=0.78
NETa2 = x1×w2 + x2×w4 +b1=0.1×0.30+0.5×0.60+0.54=0.87
对NETa1和NETa2使用Sigmoid激活函数,得到OUTa1,OUTa2,
4.2、隐含层-->输出层
同理可得,
NETy1=OUTa1×w5 + OUTa2×w7 +b2=0.6857×0.25+0.7047×0.55+0.87=1.4290
NETy2=OUTa1×w6 + OUTa2×w8 +b2=0.6857×0.40+0.7047×0.65+0.87=1.6023
对NETy1和NETy2使用Sigmoid激活函数,得到OUTy1,OUTy2
5、反向传播
5.1、计算均方误差
5.2、隐含层-->输出层权值更新
以更新w5为例,要想知道w5对整体误差产生多少影响,就用整体误差对w求偏导:
对上面每个式子分别计算:
- 解 :
由
得
- 解:
由
得
- 解:
由NETy1=OUTa1×w5 + OUTa2×w7 + b2
得
- 所以得到
假设β为学习率,β=0.1
则
新
同理可更新w6,w7,w8的值。
5.3、输入层-->隐含层权值更新
上面计算总误差对w5的偏导时,是从out(y1)->net(y1)->w5,而输入层到隐含层之间的权值更新,是out(a1)->net(a1)->w1,out(a1)会接收E(y1)和E(y2)传来的误差,也要计算在内。
得式:
计算:
先计算:
再计算:
然后计算和相加得到总值,
接着计算和,最后三者相乘,然后根据学习率更新权值。
总结:
- 对于隐含层到输出层的权值更新,想更新哪个权值w,就用整体误差通过链式法则对其求偏导,再用该权值减去该偏导和学习率的乘积。
- 对于输入层到隐含层的权值更新,与上面的方式类似,但是还需要考虑输出层传来的误差。