Neural network 节点梯度在神经网络中代表什么?

Neural network 节点梯度在神经网络中代表什么?,neural-network,Neural Network,(代码乱七八糟,我只是在胡闹)使用这个简单的3层神经网络: 我的计算结果与这本书几乎相同(将差异归因于四舍五入): 但是梯度到底是什么呢?它们是单个节点对o1错误的贡献吗?我没有读过这本书,但听起来你需要读一下关于梯度下降算法的章节。我发现这门课程是一个非常好的入门课程(),它从一个非常直观的线性回归演示开始 您的问题的直接答案是梯度是wrt节点权重的偏导数。梯度下降法试图找到一个使某些误差函数(通常为均方误差)最小化的解决方案。如何找到这种组合是计算函数的导数,并使用一个小乘数(也称为学习率

(代码乱七八糟,我只是在胡闹)使用这个简单的3层神经网络:

我的计算结果与这本书几乎相同(将差异归因于四舍五入):


但是梯度到底是什么呢?它们是单个节点对o1错误的贡献吗?

我没有读过这本书,但听起来你需要读一下关于梯度下降算法的章节。我发现这门课程是一个非常好的入门课程(),它从一个非常直观的线性回归演示开始

您的问题的直接答案是梯度是wrt节点权重的偏导数。梯度下降法试图找到一个使某些误差函数(通常为均方误差)最小化的解决方案。如何找到这种组合是计算函数的导数,并使用一个小乘数(也称为学习率)沿导数方向更新权重。对于类似神经网络的嵌套函数,隐层导数可以通过链式规则得到


我建议尝试完全理解最简单的情况,一个变量的线性回归,你仍然可以画出你的误差函数,看看它是什么样子。在这之后,自然会理解神经网络的情况。本课程包括ml课程和编程练习

考虑神经网络的代价函数J(θ)。其中θ=(θ_1,θ_2,…,θ_n)是神经网络中连接的权重。 我们的目标是最小化函数J(θ)w.r.t.(相对于)θ。注意,J(θ)是一个多元连续函数,数学上θi w.r.t J(θ)的梯度只是J w.r.tθi的偏导数。现在让我们试着找出梯度的物理意义

证明,THETA仅由一个变量X组成。也就是θ=(x)。 现在,在x的函数梯度中,w.r.t.J就是J'(x),J在点x的导数。现在,对于足够小的alpha

[J(x) is increasing at x]
==> [J'(x) >= 0]
==> [x - alpha * J'(x) <= x]
==> [J(x - alpha * J'(x)) <= J(x)]
[J(x)在x处增加]
==>[J'(x)>=0]
==>[x-α*J'(x)[J(x-α*J'(x))[J'(x)[x-α*J'(x)>=x]

==>[J(x-alpha*J'(x))首先解释梯度下降。梯度下降是一种最小化成本函数的优化算法

考虑以下示例:

其中f(t)是我们想要最小化的函数,t有一些初始值t1,但我们想要找到一个,使得f(t)得到它的最小值

这是梯度下降算法的公式:

t = t - α  d/dt f(t),
式中,α**是一个学习率,d/dt f(t)是函数的导数。导数是与函数相切的直线的斜率

我们一直使用这个公式,直到达到最小值。

看上图,梯度下降将以以下方式更新t:斜率(导数)为正,α为正,因此t值现在将减小,从而使f(t)最小化。我们重复这一过程,直到d/dt f(t)==0(任何连续函数在其最小值(和最大值)处的斜率为零)

我们现在可以在反向传播算法中应用梯度下降的思想,以便适当地调整权重

给出一个训练示例e,我们将误差函数定义为

E_e (w ⃗ )=  1/2 ∑_(k ∈Outputs) (d_k- o_k )^2 , 
其中k是神经网络中的输出数,d是期望输出,o是观测输出

观察:如果这个函数E等于0,这意味着对于所有k,d_k==o_k,这意味着神经网络的输出与所需的输出相同,并且没有需要做的工作,也就是说,我们的神经网络非常聪明。最初当然,权重是随机分配的,从来都不是这样,但我们希望实现这一点(或者说希望差不多)

既然我们现在有了一个我们想要最小化的误差函数,它现在点击了吗?我们可以应用什么?梯度下降是的!^^^这个想法是根据误差函数梯度的负数修改权重,以快速减少这个例子中的误差(意思是e),因此我们根据梯度信息修改权重,如下所示:

∆w_ji= α (-∂E(wij)/∂wij  )
如果与上面的示例进行比较,结果完全相同,唯一的区别是,在后一种情况下,误差函数是多元函数,即对于给定的权重,我们找到该特定权重的偏导数。)

将这种误差校正(梯度下降)反复应用于权重,我们将实现误差函数最小化和神经网络良好训练的杠杆


*注意:这个问题涉及到很多问题,例如,如果学习率太高,梯度下降甚至可能超过最小值,但为了避免混淆,现在不要太在意这个问题。:)

我想知道对这个问题缺乏关注是否是因为它与编程无关,或者至少是一个特定的问题c编程问题?这怎么不是一个关于编程的问题?你想要的是一个基于计算机科学和数学的定义,而不是编程。你没有提到编程语言或描述编程问题。看。但是,嘿,这听起来像是一个有趣的研究,我希望你能得到一个有用的答案。我几乎不知道你,拉尼克,是一个有天赋的老师。
E_e (w ⃗ )=  1/2 ∑_(k ∈Outputs) (d_k- o_k )^2 , 
∆w_ji= α (-∂E(wij)/∂wij  )