为什么我们在计算反向传播算法时采用传递函数的导数?

时间:2016-03-03 07:20:17

标签: neural-network artificial-intelligence recurrent-neural-network

采用衍生产品背后的概念是什么?有趣的是,为了以某种方式教授系统,我们必须调整其权重。但是我们为什么要使用传递函数的推导来做到这一点。什么是推导,帮助我们。我知道推导是给定点上连续函数的斜率,但它与问题有什么关系。

6 个答案:

答案 0 :(得分:2)

您必须已经知道成本函数是一个以权重作为变量的函数。 现在将其视为f(W)。

我们的主要动机是找到一个W,我们得到f(W)的最小值。

这样做的一种方法是在一个轴上绘制函数f,在另一个轴上绘制W ......但请记住,这里W不仅仅是一个变量而是一组变量。

那么另一种方式又是什么呢? 它可以像改变W的值一样简单,看看我们得到的值是否低于W的先前值。

但是为W中的所有变量取随机值可能是一项繁琐的工作。

所以我们做的是,我们首先得到W的随机值并看到f(W)的输出和每个变量的所有值的斜率(我们通过将函数与第i个变量部分区分来得到这个值)并把第i个变量的值。)

现在,一旦我们知道了太空中那个点的斜率,我们就会向斜坡的下侧稍微移动一点(这个小因子在梯度下降中被称为阿尔法),这一直持续到斜率给出相反的值表示我们已达到图表中的最低点(具有n维的图形,函数与W,W是n个变量的集合)。

答案 1 :(得分:1)

原因是我们正在努力减少损失。具体来说,我们通过gradient descent method执行此操作。它基本上意味着从我们在参数空间中的当前点(由完整的当前权重集确定),我们想要朝着将减少损失函数的方向前进。可视化站在山坡上,沿着坡度最陡的方向走。

在数学上,从参数空间中的当前点开始最陡下降的方向是负梯度。并且梯度只不过是由每个单个参数的损失函数的所有导数组成的向量。

答案 2 :(得分:0)

反向传播是Chain Rule对神经网络的应用。如果正向通过涉及应用传递函数,则损失函数相对于权重的梯度将包括传递函数的导数,因为f(g(x))的导数是f'(g(x)) G'(x)的

答案 3 :(得分:0)

你的问题非常好!当误差的斜率为什么时,我为什么要在一个方向上移动重量。重量很高?这真的有意义吗?事实上,如果错误函数wrt,它确实有意义。重量是抛物线。然而,假设它是一个抛物线是一个疯狂的猜测。正如rcpinto所说,假设误差函数是抛物线,使用链规则简化a更新的推导。

但是,还有一些其他参数更新规则实际上解决了这个非直观的假设。您可以制作更新规则,使得权重在下坡方向上采用固定大小的步长,然后可能在训练中稍后在训练时减小步长对数。 (我不确定这种方法是否有正式名称。)

还可以使用som替代错误功能。在神经网络教科书中查找交叉熵。这是对误差函数的调整,使得更新规则中的导数(传递函数)因子抵消。只需记住根据输出传递函数选择正确的交叉熵函数。

答案 4 :(得分:0)

当我第一次进入神经网络时,我也遇到了这个问题。

这里的其他答案已经解释了数学,这使得很明显,当您尝试更新权重时,衍生术语将出现在您的计算中。 但所有这些计算都是为了实现反向传播,这只是更新权重的方法之一!现在继续阅读......

你是正确的假设在一天结束时,所有神经网络试图做的是更新其权重以适合你输入的数据。在这个陈述中也有你的答案。你在这里混淆的是反向传播算法的想法。许多教科书默认使用backprop更新神经网络,但没有提到还有其他方法来更新权重。这导致了神经网络和反向支架是相同的并且本质上相连的混淆。这也导致了错误的信念,认为神经网络需要反向训练。

请记住,反向传播只是训练神经网络的一种方式(虽然它是最着名的一种)。现在,你必须看到backprop中涉及的数学,因此你可以看到衍生术语的来源(其他一些答案也解释了这一点)。其他训练方法可能不需要衍生物,尽管其中大部分都是如此。继续阅读以找出原因......

直观地考虑这一点,我们谈论的是改变权重,与变化相关的直接数学运算是一个导数,有意义的是你应该评估导数以改变权重。

如果您仍然感到困惑,请告诉我,我会尝试修改我的答案以使其更好。就像信息的分离一样,另一个常见的误解是梯度下降是反向提升的一部分,就像假设backprop是神经网络的一部分一样。梯度下降只是降低成本函数的一种方法,还有很多其他可以使用的方法。上面提到的一个答案也是错误的假设,当它说“特别梯度下降”时。这实际上是不正确的。 :)

答案 5 :(得分:0)

训练神经网络意味着最小化相关的错误"功能与网络权重。现在有一些优化方法只使用函数值(Nelder和Mead,Hooke和Jeeves的Simplex方法等),另外使用一阶导数(最陡下降,准牛顿,共轭梯度)和使用二阶导数的牛顿方法的方法。因此,如果要使用导数方法,则必须计算误差函数的导数,而后者则涉及传递或激活函数的导数。 反向传播只是计算衍生物的一种很好的算法,仅此而已。