神经网络:反向传播阶段的逐步分解?

Neural Networks: A step-by-step breakdown of the Backpropagation phase?

我必须设计一个功能性神经网络的动画视觉表示(即 UI 允许您调整值等)。它的主要目标是帮助人们在慢动作实时动画中可视化不同数学运算的执行方式和时间。我设置了视觉效果以及 UI 允许您调整值并更改神经元的布局,以及前馈阶段的可视化效果,但因为我实际上并不专注于神经网络总之,我无法找出可视化反向传播阶段的最佳方法——主要是因为我无法弄清楚这个阶段的确切操作顺序。

可视化从向前发射神经元开始,然后在发射神经元链到达输出后,动画显示实际值和预测值之间的差异,从这一点开始我想可视化网络向后发射,同时演示正在发生的数学运算。但这是我真的不确定到底应该发生什么的地方。

所以我的问题是:

我在网上找到了很多关于前馈阶段的重要信息,但是当涉及到反向传播阶段时,我很难找到关于实际发生的事情的任何有用信息visualizations/explanations在这个阶段。

Which weights are actually adjusted in the back-propagation phase? Are all of the weights adjusted throughout the entire neural network, or just the ones that fired during the forward pass?

这取决于你如何构建神经网络,通常你的网络先正向传播,然后反向传播,在反向传播阶段,权重根据误差和 Sigmoid 导数进行调整。您可以选择调整哪些权重,以及您拥有的结构类型。对于一个简单的感知器网络(据我所知)每个权重都会被调整。

Are all of the weights in each hidden layer adjusted by the same amount during this phase, or are they adjusted by a value that is offset by their current weight, or some other value? It didn't really make sense to me that they would all be adjusted by the same amount, without being offset by a curve or something of the sort.

反向传播略微取决于您使用的结构类型。您通常使用某种算法 - 通常是梯度下降或随机梯度下降来控制调整权重的程度。据我所知,在感知器网络中,每个权重都根据其自身的值进行调整。

总而言之,反向传播只是一种调整权重的方法,使输出值更接近期望的结果。它也可能帮助您研究梯度下降,或 watch a network being built from scratch(我学会了如何通过逐步分解神经网络来构建神经网络)。

这是我自己对反向传播的逐步分解版本:

  1. 根据实际输出与预期输出之间的差异计算误差。

  2. 调整 matrix/vector 是通过计算误差 matrix/vector 和训练输入的 Sigmoid 导数的点积来计算的。

  3. 调整应用于权重。

  4. 步骤 1 - 3 迭代多次,直到实际输出接近预期输出。

外部。在更复杂的神经网络中,您可能会使用随机梯度下降或梯度下降来找到权重的最佳调整。

梯度下降编辑:

梯度下降,也称为网络导数,是一种在反向传播中找到合适的调整值来改变权重的方法。

梯度下降公式:f(X) = X * (1 - X)

梯度下降公式(程序化):

梯度下降解释:

梯度下降是一种涉及找到对权重的最佳调整的方法。这是必要的,以便可以找到最佳权重值。在反向传播迭代过程中,实际输出距离预期输出越远,权重的变化就越大。你可以把它想象成一座倒山,在每次迭代中,滚下山的球在到达底部时会先快后慢。

感谢千里眼。

随机梯度下降是一种更高级的方法,当最佳权重值比标准梯度下降示例的用例更难找到时使用。这可能不是最好的解释,所以为了更清楚的解释,refer to this video. For a clear explanation of stochastic gradient descent, refer to this video.