您的位置:首页 > 理论基础 > 计算机网络

神经网络(前向传播和反向传导)

2015-07-08 14:57 204 查看
所谓神经网络就是将许多个单一“神经元”(图1)联结在一起,这样,一个“神经元”的输出就可以是另一个“神经元”的输入,如图2所示。





图1 神经元





图2 神经网络结构图

本例神经网络的计算步骤如下:





其中,

表示第


层第

单元的激活值(输出值)。


表示第

层第


单元输入加权和(包括偏置单元),比如,

,则



那么,上面的等式可以更简洁地表示为:


这种方法的计算步骤叫作前向传播,这种联接图没有闭环或回路。

反向传导算法

假设我们有一个固定样本集

,它包含


个样例。我们可以用批量梯度下降法来求解神经网络。具体来讲,对于单个样例

,其代价函数为:


这是一个(二分之一的)方差代价函数。给定一个包含

个样例的数据集,我们可以定义整体代价函数为:



以上公式中的第一项

是一个均方差项。第二项是一个规则化项(也叫权重衰减项),其目的是减

小权重的幅度,防止过度拟合。

梯度下降法中每一次迭代都按照如下公式对参数




进行更新:



以上公式中的第一项

是一个均方差项。第二项是一个规则化项(也叫权重衰减项),其目的是减小权重的幅度,防止过度拟合。我们首先来讲一下如何使用反向传播算法来计算




,这两项是单个样例


的代价函数

的偏导数。一旦我们求出该偏导数,就可以

推导出整体代价函数

的偏导数:



以上两行公式稍有不同,第一行比第二行多出一项,是因为权重衰减是作用于

而不是



反向传播算法的思路如下:给定一个样例

,我们首先进行“前向传导”运算,计算出网络中所有的激活值,包括


的输出值。之后,针对第

层的每一个节点

,我们计算出其“残差”

,该残差表明了该节点对

最终输出值的残差产生了多少影响。对于最终的输出节点,我们可以直接算出网络产生的激活值与实际值之间的差距,我们将这个差距定义为

(第


层表示输出层)。对于隐藏单元我们如何处理呢?我们将基于节点(译者注:第

层节点)残差的加权平均值计算

,这些节点以


作为输入。下面将给出反向传导算法的细节:

1.进行前馈传导计算,利用前向传导公式,得到

直到输出层


的激活值。


2.对输出层(第

层),计算:





3.对于

的各层,计算:





4.计算最终需要的偏导数值:




其中:




来源:

http://deeplearning.stanford.edu/wiki/index.php/Neural_Networks
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: