BP神经网络详解和python实现

神经网络结构由输入层,隐藏层和输出层构成,神经网络中的每一个结点都与上一层所有的结点都有连接,我们称之为全连接,如下图

在图中的神经网络中,原始的输入数据,通过第一层隐含层的计算得出的输出数据,会传到第二层隐含层。而第二层的输出,又会作为输出层的输入数据。由下图可知我们可以计算出隐藏层的第一个神经元的值:

其中为激活函数由下图可知我们可以计算出隐藏层的第二个神经元的值:

由下图可知我们可以计算出隐藏层的第三个神经元的值:

同理可以得出,的值:为了简化我们以后的数据处理流程,现在我们设第层的输入数据为向量,权重为,偏置变量为。则我们从上面的求解流程可以得出层的数据为:至此神经网络的前向传播过程己经讲完。反向转播的思想就是,我们通过前向传播后计算出网络的输出值,知道输出值后我们就可以求出输出层的残差,再从输出层反向把残差传回各层的神经元中。假设我们有一个固定样本集,它包含个样例。

我们可以定义整体代价函数如下图(摘自网络):以上关于定义中的第一项是一个均方差项。第二项是一个规则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合。有了总体代价函数后,我们的目标可以转化成求代价函数的最小值。

对的各个层,第层的第个节点的残差计算方法如下(下图摘自网络):

以上逐次从后向前求导的过程即为“反向传导”的本意所在。计算我们需要的偏导数,计算方法如下:

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180725A1YEZT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券