多层神经网络

对于多层神经网络,BP算法可以有效地对参数迭代更新。刚做完BP算法的作业,结合自己的理解简要写写重点,不展开写具体过程了。

BP算法

前向传播是指从输入逐层计算,得到输出。反向传播用来对参数进行梯度计算和更新。

为了简化,将这些层全部考虑为全连接层,这样每层都有w和b参数矩阵。过段时间再重新推导一遍。在推导过程中,首先要明确,z=w*x+b, a=g(z)。其中,x,a分别指改层的输入和输出,g(z)是指激活函数。这样在推导的过程中就会非常明确,思路清晰。

在反向计算过程中,输出层的参数梯度计算,和隐藏层间的不一样。

对于输出层,由于该层的真实值和模型预测值都已知,所以可以直接求偏导来计算。但是对于隐藏层,如果也这样做,会发现该层的真实输出值是不知道的,所以就用到了链式求导法则。从最外边的输出层逐层求导,直到该隐藏层。不过幸好,我们不需要每次都这么麻烦,因为计算后面几层的梯度时,很多值已经求过了。推导之后有这样一个关系:第L层的偏差,等于后一层偏差的线性组合,再乘以当前的激活函数导数,这不难推导出来。

在这里的偏差是指:损失函数对当前第L层输出函数z的偏导。

所以我们在求各层的梯度时,分为求各层偏差和各层梯度两个步骤。偏差求出来后,仅需要再乘上当前层的w即可。

发布了56 篇原创文章 · 获赞 49 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/IBelieve2016/article/details/88417429
今日推荐