前向传播神经网络的目标函数

对于一系列的训练样本 X,期望的输入为 t=(t1,...,tc)t=(t_1,...,t_c),网络的实际输出 z=(z1,...,zc)z=(z_1,...,z_c),定义目标函数为
J(w)=12tz2=12k=1c(tkzk)2J(w)=\frac{1}{2}||t-z||^2=\frac{1}{2}\sum^c_{k=1}(t_k-z_k)^2
即各输出误差的平方的累加,由此产生的问题是:如何计算目标函数的最小值?
常用的方法为 梯度下降法

梯度下降

神经网络的反向传播算法
如图表示的是参数 ww 与目标函数 J(w)J(w) 的关系图,红色部分表示目标函数有着较高的取值,需要使目标函数的值尽量的低,也就是深蓝色的部分,w1,w2w_1,w_2 表示 ww
向量的两个维度。

梯度下降 的步骤是:先确定一个初始点,将 ww 按照梯度下降的方向进行调整,就会使得 J(w)J(w) 往更低的方向进行变化,算法的结束将是在 ww 下降到无法继续下降为止。
w(m+1)=w(m)+Δw(m)=w(m)ηJww(m+1)=w(m)+\Delta w(m)=w(m)-\eta\frac{\partial J}{\partial w}

输出层权重改变量

神经网络的反向传播算法
由链式求导法则,目标函数 J(w)J(w)wkjw_{kj}(对应隐藏层与输出层之间的权重) 求偏导为
神经网络的反向传播算法
神经网络的反向传播算法
其中 f(netk)f'(net_k) 对应输出层**函数的导数,
如 Sigmoid 函数,zk=f(netk)=Sigmoid(netk)z_k=f(net_k)=Sigmoid(net_k)

隐藏层权重改变量

神经网络的反向传播算法
由目标函数 JJwjiw_{ji}(输入层与隐藏层之间的权重)求导可得
神经网络的反向传播算法
其中 netj=m=1dWjmXmnet_j = \sum^d_{m=1}W_{jm}X_m 表示隐藏层单元的总输入
神经网络的反向传播算法
由此计算隐藏层权重改变量,其中
神经网络的反向传播算法

神经网络的反向传播算法

误差传播迭代公式

神经网络的反向传播算法
神经网络的反向传播算法

输出层和隐藏层的误差传播公式可统一为:
  • 权重增量 = -1 ×\times 学习步长 ×\times 目标函数对权重的偏导数
  • 目标函数对权重的偏导数 = -1 ×\times 残差 ×\times 当前层的输入
  • 残差 = 当前层激励函数的导数 ×\times 上层反传来的误差
  • 上层反传来的误差 = 上层残差的加权和

隐藏层误差反向传播示意

神经网络的反向传播算法

反向传播算法举例

神经网络的反向传播算法
假定输入样本的自变量为 (0.35, 0.9),因变量为 0.5,初始的权重函数如上图所示

AP = 0.1; AQ = 0.4; PO = 0.3
BP = 0.8; BQ = 0.6; QO = 0.9

三个神经元都使用 Sigmoid 函数作为**函数 f(x)=11+exf(x)=\frac{1}{1+e^{-x}},X 等于输入的权重和。
将 P 上的函数记为 p,Q 上的函数记为 q,O 上的函数记为 o,例如
P(A,B)=11+e(APA+BPB)=11+e(0.10.35+0.90.8)=0.68 P(A, B)=\frac{1}{1+e^{-(AP*A+BP*B)}}=\frac{1}{1+e^{-(0.1*0.35+0.9*0.8)}}=0.68
同理计算:
P(A,B)=0.68;Q(A,B)=0.6637;O(P,Q)=0.69 \mathrm{P}(\mathrm{A}, \mathrm{B})=0.68 ; \quad \mathrm{Q}(\mathrm{A}, \mathrm{B})=0.6637 ; \quad \mathrm{O}(\mathrm{P}, \mathrm{Q})=0.69
计算目标损失函数 ξ=12e2=12(0.690.5)2=0.01805\xi=\frac{1}{2} e^{2}=\frac{1}{2}(0.69-0.5)^{2}=0.01805,我们希望通过调节 PO,QO 使其变小。
使用梯度下降法
ξPO=ξeeooPO={e}{O(1O)}{P} \frac{\partial \xi}{\partial \mathrm{PO}}=\frac{\partial \xi}{\partial \mathrm{e}} * \frac{\partial \mathrm{e}}{\partial \mathrm{o}} * \frac{\partial \mathrm{o}}{\partial \mathrm{P} \mathrm{O}}=\{\mathrm{e}\} *\{O *(1-O)\} *\{\mathrm{P}\}
=(0.690.5)0.69(10.69)0.68=0.02763 =(0.69-0.5) * 0.69 *(1-0.69) * 0.68=0.02763
ξQO=ef(x)(1f(x))Q=(0.690.5)0.69(10.69)0.6673=0.02711 \frac{\partial \xi}{\partial Q O}=e * f(x)(1-f(x)) * Q=(0.69-0.5) * 0.69 *(1-0.69) * 0.6673=0.02711
更新隐藏层与输出层权重 POPOQOQO
PO=POξPO=0.2723 PO^*=PO-\frac{\partial\xi}{\partial PO}=0.2723
QO=QOξQO=0.8730 QO^*=QO-\frac{\partial\xi}{\partial QO}=0.8730
ξAP=ξeeooppAP={e}{O(1O)}{PO}{(1P)P}{A} \frac{\partial \xi}{\partial \mathrm{AP}}=\frac{\partial \xi}{\partial \mathrm{e}} * \frac{\partial \mathrm{e}}{\partial \mathrm{o}} * \frac{\partial \mathrm{o}}{\partial \mathrm{p}} * \frac{\partial \mathrm{p}}{\mathrm{AP}}=\{\mathrm{e}\} *\{\mathrm{O}(1-O)\} *\left\{\mathrm{PO}^{*}\right\} *\{(1-\mathrm{P}) * \mathrm{P}\} *\{\mathrm{A}\}
更新输入层与隐藏层权重 APBPAQBQAP,BP,AQ,BQ
AP=APξAP=0.09916 AP^*=AP-\frac{\partial\xi}{\partial AP}=0.09916
BP=BPξBP=0.7978 BP^*=BP-\frac{\partial\xi}{\partial BP}=0.7978
AQ=AQξAQ=0.3972 AQ^*=AQ-\frac{\partial\xi}{\partial AQ}=0.3972
BQ=BQξBQ=0.5928 BQ^*=BQ-\frac{\partial\xi}{\partial BQ}=0.5928
神经网络的反向传播算法

相关文章:

  • 2021-05-10
  • 2021-11-16
  • 2021-07-15
  • 2021-07-30
  • 2021-06-17
  • 2021-08-21
  • 2021-06-27
  • 2021-07-31
猜你喜欢
  • 2021-12-30
  • 2021-09-27
  • 2021-12-25
  • 2021-04-04
  • 2021-08-03
相关资源
相似解决方案