取导数背后的概念是什么?有趣的是,为了以某种方式教授一个系统,我们必须调整它的权重。但是为什么我们要使用传递函数的推导来做到这一点。派生中有什么对我们有帮助。我知道导数是给定点的连续函数的斜率,但它与问题有什么关系。
6 回答
You must already know that the cost function is a function with the weights as the variables. For now consider it as f(W).
Our main motive here is to find a W for which we get the minimum value for f(W).
One of the ways for doing this is to plot function f in one axis and W in another....... but remember that here W is not just a single variable but a collection of variables.
So what can be the other way? It can be as simple as changing values of W and see if we get a lower value or not than the previous value of W.
But taking random values for all the variables in W can be a tedious task.
So what we do is, we first take random values for W and see the output of f(W) and the slope at all the values of each variable(we get this by partially differentiating the function with the i'th variable and putting the value of the i'th variable).
now once we know the slope at that point in space we move a little further towards the lower side in the slope (this little factor is termed alpha in gradient descent) and this goes on until the slope gives a opposite value stating we already reached the lowest point in the graph(graph with n dimensions, function vs W, W being a collection of n variables).
原因是我们正在努力将损失降到最低。具体来说,我们通过梯度下降法来做到这一点。这基本上意味着,从我们在参数空间中的当前点(由完整的当前权重集确定),我们想要朝着减少损失函数的方向前进。想象站在山坡上,沿着坡度最陡的方向走。
从数学上讲,从参数空间中的当前点开始下降最陡的方向是负梯度。梯度只不过是由损失函数对每个单个参数的所有导数组成的向量。
当我第一次开始接触神经网络时,我也有这个问题。
此处的其他答案已经解释了数学,这清楚地表明在您尝试更新权重时,导数项将出现在您的计算中。但是所有这些计算都是为了实现反向传播,这只是更新权重的一种方式!现在继续阅读...
您正确地假设在一天结束时,神经网络所要做的就是更新其权重以适应您输入的数据。在此声明中也包含您的答案。您在这里感到困惑的是反向传播算法的概念。许多教科书默认使用反向传播来更新神经网络,但没有提到还有其他方法可以更新权重。这导致了神经网络和反向传播是同一事物并且具有内在联系的混淆。这也导致错误地认为神经网络需要反向传播来训练。
请记住,反向传播只是训练你的神经网络的方法之一(尽管它是最著名的一种)。现在,您一定已经看到了反向传播中涉及的数学,因此您可以看到导数项的来源(其他一些答案也对此进行了解释)。其他训练方法可能不需要导数,尽管大多数都需要。继续阅读以找出原因....
直观地考虑一下,我们正在谈论改变权重,与改变相关的直接数学运算是导数,因此需要评估导数以改变权重是有道理的。
如果您仍然感到困惑,请告诉我,我会尝试修改我的答案以使其更好。就像一个分离信息一样,另一个常见的误解是梯度下降是反向传播的一部分,就像假设反向传播是神经网络的一部分一样。梯度下降只是最小化成本函数的一种方法,还有很多其他方法可以使用。上面的答案之一在说“特别梯度下降”时也做出了这个错误的假设。这实际上是不正确的。:)
你的问题真的很好!当错误的斜率 wrt 时,为什么我应该更多地向一个方向移动重量。重量高吗?这真的有意义吗?事实上,如果错误函数 wrt 确实有意义。重量是抛物线。然而,假设它是抛物线是一个疯狂的猜测。正如 rcpinto 所说,假设误差函数是抛物线,使用链式法则使 a 更新的推导变得简单。
但是,还有一些其他参数更新规则实际上解决了这个非直观的假设。您可以制定更新规则,使权重在下坡方向上采用固定大小的步长,然后在训练后期可能会在训练时减小步长对数。(我不确定这个方法是否有正式名称。)
还有一些可以使用的替代误差函数。在你的神经网络教科书中查找交叉熵。这是对误差函数的调整,以使更新规则中的(传递函数的)导数因子抵消。只要记住根据您的输出传递函数选择正确的交叉熵函数。
反向传播是链式法则在神经网络中的一种应用。如果前向传递涉及应用传递函数,则损失函数相对于权重的梯度将包括传递函数的导数,因为 f(g(x)) 的导数是 f'(g(x)) g'(x)。
训练神经网络意味着最小化与网络权重相关的“误差”函数。现在有只使用函数值的优化方法(Nelder 和 Mead、Hooke 和 Jeeves 等的单纯形法)、另外使用一阶导数的方法(最速下降、拟牛顿法、共轭梯度)和使用二阶导数的牛顿法. 因此,如果要使用导数方法,则必须计算误差函数的导数,这反过来又涉及传递或激活函数的导数。反向传播只是一个计算导数的好算法,仅此而已。