分享

图文详情

 niudp 2019-01-01

9 - 3 - Backpropagation Intuition (13 min).

反向传播算法的直观理解

为了更好地理解反向传播算法,我们再来仔细研究一下前向传播的原理:

前向传播我个人觉得它就是从输入样本a开始到下一层的z->a然后再到下一层的z->a,逐渐到最后一层输出层的z->a的过程(每层的每个神经元都是先计算z,然后计算hθ(x)=a=g(z),然后每个神经元的a又作为下一层的输入,直到最后一层)

这个神经网络只有一个输出单元,此时我们也不考虑正则化,那么此时我们神经网络的损失函数为:

这个代价函数是由m个样本决定的,它是m个样本损失加和,则第i个样本的损失将由下面的这个式子决定:

我们可以把损失cost(i)约等于神经网络输出值与实际值的差的平方。这里的cost(i)表示了神经网络是否能够准确的预测样本i的值,也就是输出值和实际观测值y(i)的接近程度,现在我们来看一下,反向传播是怎么来做的。

其实一种比较直观的理解就是反向传播就是在计算这些δ项,并且我们可以把δ项看成是神经网络中激励值a的误差,更正式的说法是δ项实际上是代价函数关于中间项z的偏微分(理解为z对a的偏微分),也就是cost函数关于我们计算出的输入项的加权和,也就是z项的偏微分,所以实际上这个代价函数是一个关于y和这个h(x)的值(神经网络的输出)的函数

如果我们观察该神经网络内部的话,把这些中间项z修改一下,那么就会影响到神经网络的输出,并且最终会改变代价函数的值,因为δ就是关于中间项z的偏微分,因此它度量着我们对神经网络的权值做多少的改变,对中间项z的计算影响是多少,进一步的对整个神经网络的输出hθ(x)的影响是多少,以及对整个代价值的影响是多少?

我们在来看一下反向传播的这个过程:

这是我们的神经网络:

假设我们对第i个样本进行反向传播

我们从最后一层(输出层)计算δ项

接下来我们要进行反向传播,计算出输出层的上一层的δ项

然后继续反向传播,计算出上一层的δ项

我们可以看出反向传播和前向传播差不多相同,只不过方向相反,那么我们是怎样得到下面的那个单元的δ项(红色箭头指向的)

我们可以认为正向传播z=θ乘以a

而反向传播也可以反向计算δ,我们用这种方式可以计算每一个结点的δ项,但是如果要是计算向量形式(每一层的项)还是得需要

这是计算每一层每一个结点δ项的向量形式,这就是神经网络的前向传播算法和反向传播算法的直观体现。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多