前馈神经网络—BP算法
简要介绍:
-
神经元模型:一个神经元接受多个输入,其自身有一个阈值,输入的强度达到阈值,便会兴奋,输出1,达不到便不兴奋输出0. 其数学模型是
y=f(i=1∑nwixi−θ)
其中f为激励函数,有多种,
1 .sigmod函数f(x)=1+e−x1
2 .Relu函数f(x)=max(x,0)
3 .softmax函数f(x)=∑eyieyi
-
神经网
包括输入层:只负责输入,不负责运算
隐层:运算
输出层:运算且输出,输出层和隐层算上层数
神经元之间是全连接,用突触连接,每个突触有一个权重
-
参数
对于一个神经网络而言,每个神经元的阈值θ,每一条突触的权重W都是参数
-
神经网络的本质
个人理解,从外表看,神经网络接收输入得到一个分类,是映射关系,故可以看做一个函数,该函数将输入映射到要分类的类别上,从内部看,神经网络拥有众多的参数,通常可达上万个参数,如此多的参数构造出来得函数可以非常复杂以及准确,这就是神经网络的魅力。
BP算法
BP算法(Back Propagation)是训练神经网络参数的算法,基本思想在神经网络里一层一层先向前传播,得到结果与真实结果比较一层一层后向后更新。
在推导过程中激励函数我们使用sigmod函数
给出数学符号和最终结论
符号 |
含义 |
---|
Whik |
第k-1层神经元中的第h个神经元与第k+1层第i个神经元之间的突触的权重 |
θik |
第k层神经元中的第i个神经元的阈值 |
bhk |
第k层第h个神经元的输出(0~1) |
Nk |
第k层的神经元个数 |
yh |
理想情况下输出层第h个神经元的输出结果 |
yh^ |
输出层第h个神经元的输出结果 |
结论:对于第k层神经元的第h个神经元,定义梯度ehk=i=1∑Nk+1(eik+1Whik+1)bhk(1−bhk), 如果该层是隐层ehk=yh^(1−yh^)(yh−yh^), 如果该层是输出层则有以下结果Wihk=Wihk+ηehkbik−1θik=θik−ηeik
推导过程:
首先f(z)=1−e−z1,f,(z)=f(z)(1−f(z)),其中z=∑i=1nwibi−θ
损失函数E=21∑h=1l(yh^−yh)2,我们的目标是求得参数使得损失函数达到最小值,采用梯度下降的方法,首先考虑输出层的参数,说明由于是输出层故不再给出参数的上标表示层数
∂Whj∂E=∂yj^∂E∗∂Whj∂yj^=(yj^−yj)∗f/(i=1∑Nk−1Wijbi−θj)bh=(yj^−yj)yj^(1−yj^)bh=−ejbh
同样有
∂θj∂E=∂yj^∂E∗∂θj∂yj^=(yj^−yj)f/(i=1∑Nk−1Wijbi−θj)∗(−1)=−(yj^−yj)yj^(1−yj^)=ej
故有输出层的参数更新
对于隐层同样的推导过程,我们考虑类似数学归纳法的方法
假设我们已知第k+1层的一些信息,如损失函数E对第k+1层的突触权重的导数是已知的,据此递推的求得损失函数E对第k层的突触权重的导数,详细过程不写了