1. 神经网络架构及符号说明
图1 神经网络架构图(f1)
图1为四层神经网络的架构图,包含一个输入层(1层),两个隐层(2,3层),一个输出层(c层),分别包含2个,3个,2个,2个神经元。训练的输入输出数据共包含m组样本数据。
i1和i2代表两个输入信号值。
c1和c2代表两个输出信号值。
netln代表某个神经元的输入信号之和,其下角标包含l和n两个编号,l代表这个net对应的神经元位于神经网络的第几层;n代表这个神经元是这层的第几个神经元。
outln代表某个神经元的输出信号,其下角标包含l和n两个编号,l代表这个输出信号对应的神经元位于神经网络的第几层;n代表这个神经元是这层的第几个神经元。
bln代表某个神经元的阈值,其下角标包含l和n两个编号,l代表这个阈值对应的神经元位于神经网络的第几层;n代表这个神经元是这层的第几个神经元。
wlnd代表神经网络内不同神经元之间连接的权值;其下角标包含l,n和d三个编号,l代表这个权值的输入信号的神经元位于神经网络的第几层;n代表这个神经元是这层神经元的第几个神经元;d代表这个权值的目标神经元在所在神经元层的编号。
对于每个神经元,其输入值之和经过激活函数处理之和,成为其输出值,即:outln=f(netln)
其中,f(.)代表神经元的激活函数。在本文中去sigmoid函数,但是也可以去relu函数等其它激活函数。f’(.)代表激活函数的导数。
(f2)
2. 神经网络前向计算公式推导
第一层:
out11=net11=i1
out12=net12=i2
即第一层的神经元为输入神经元,没有激活函数。
第二层:
net21=w111*out11+w121*out12+b21*1
net22=w112*out11+w122*out12+b22*1
net23=w113*out11+w123*out12+b23*1
(f3)
第三层:
Net31=w211*out21+w221*out22+w231*out23+b31*1
Net32=w212*out21+w222*out22+w232*out23+b32*1
(f4)
输出层:
Netc1=w311*out31+w321*out32+bc1*1
Netc2=w312*out31+w322*out32+bc2*1
(f5)
3. 代价函数
如果神经网络训练的目标是连续值,那么采用欧式距离函数来对其进行训练。
(f6)
其中m代表m组训练数据。
如果神经网络训练的目标是进行分类,那么采用softmaxloss代价函数来对神经网络进行训练。本文以欧式距离函数为例来进行说明,softmaxloss代价函数可参考其它文档。
4. 神经网络反向公式推导
(1). 权值与阈值更新公式:
(f7)
(2). 输出层权值和阈值更新量反向计算:
权值w311的更新值为:
(f8)
由上式可见,权值w311是神经网络第3层中第1个神经元至下一层(输出层)的第1个神经元之间的权值;其权值的更新量为第3层中第1个神经元的输出值out31与下一层(输出层)的第1个神经元的误差值之间的乘积。
输出层的第1个神经元的误差值的等于外部信号传至本神经元的误差值
(f9)与本神经元输出值对本神经元输入值的导数outc1*(1-outc1)两者的乘积。外部信号传至本神经元的误差值即为代价函数对神经元输出变量的导数。
同理,权值w312的更新量为:
(f10)
(3). 第3层权值和阈值更新量反向计算:
(f11)
(f12)
同理可得阈值的更新量:
(f13)
(4). 第2层权值和阈值更新量反向计算:
(f14)
(f15)
5. 总结
神经网络某层神经元nxi的误差值包含两大项:
(1) 神经元nxi激活函数的导数:f’(nxi);
(2) 后一层所有神经元的误差值传递生成本层的误差值之和;上层某个神经元传输至nxi神经元的误差等于上层某个神经元的误差与这两个神经元连接权值的乘积。此处所述的后一层所有神经元包含s个神经元: n(x+1)1,n(x+1)2, n(x+1)3, n(x+1)4,…, n(x+1)5。
某个权值wtki的更新量为wtki终止神经元n(t+1)i的误差值与wtki输入信号值(即outtk)的乘积。T代表w所处的神经元的层数;k代表起始层中神经元的编号;i代表终止层中神经元的编号。
权值的初始化方法决定了梯度下降的过程是否会陷入局部极小的状态。