如何解决神经网络:反向传播阶段的逐步细分?
我必须设计一个功能性神经网络的动画视觉表示(即具有允许您调整值等的 UI)。它的主要目标是帮助人们在慢动作实时动画中可视化如何以及何时执行不同的数学运算。我将视觉效果与 UI 一起设置,允许您调整值和更改神经元的布局,以及前馈阶段的视觉效果,但由于我实际上根本不专注于神经网络,我无法找出可视化反向传播阶段的最佳方法 - 主要是因为我在此阶段无法确定确切的操作顺序。
可视化首先向前激发神经元,然后在激发神经元链到达输出后,动画显示实际值和预测值之间的差异,从这一点开始,我想可视化网络向后激发,同时演示正在发生的数学。但这正是我真正不确定应该发生什么的地方。
所以我的问题是:
- 在反向传播阶段实际调整了哪些权重?是在整个神经网络中调整所有权重,还是仅调整在前向传递期间触发的权重?
- 在这个阶段,每个隐藏层中的所有权重是否都调整了相同的数量,还是调整了一个被当前权重抵消的值,或者其他一些值?对我来说,将它们全部调整相同的数量,而不会被曲线或类似的东西抵消,这对我来说真的没有意义。
我在网上找到了很多关于前馈阶段的重要信息,但是当涉及到反向传播阶段时,我很难找到关于该阶段实际发生的任何好的可视化/解释。
解决方法
在反向传播阶段实际上调整了哪些权重?是在整个神经网络中调整所有权重,还是仅调整在前向传递期间触发的权重?
这取决于你如何构建神经网络,通常你先向前传播你的网络,然后反向传播,在反向传播阶段,权重根据误差和 Sigmoid 导数进行调整。您可以选择调整哪些权重,以及您拥有的结构类型。对于一个简单的感知器网络(基于我所知道的),每个权重都会被调整。
在这个阶段,每个隐藏层中的所有权重是否都调整了相同的数量,还是调整了一个被当前权重抵消的值,或者其他一些值?对我来说,它们都被调整相同的数量,而不被曲线或类似的东西抵消,这对我来说真的没有意义。
反向传播稍微取决于您使用的结构类型。您通常使用某种算法 - 通常是梯度下降或随机梯度下降来控制调整权重的程度。据我所知,在感知器网络中,每个权重都根据自己的值进行调整。
总而言之,反向传播只是一种调整权重的方法,以便输出值更接近所需的结果。它还可以帮助您了解梯度下降或 watch a network being built from scratch(我通过逐步分解神经网络学习了如何构建神经网络)。
这是我自己的反向传播分步分解版本:
-
根据实际输出和预期输出之间的差异计算误差。
-
调整矩阵/向量是通过找到误差矩阵/向量和训练输入的 Sigmoid 导数的点积来计算的。
-
调整应用于权重。
-
重复步骤 1 - 3 多次,直到实际输出接近预期输出。
外部。在更复杂的神经网络中,您可能会使用随机梯度下降或梯度下降来找到权重的最佳调整。
梯度下降编辑:
梯度下降,也称为网络导数,是一种找到一个好的调整值来改变反向传播权重的方法。
梯度下降公式:f(X) = X * (1 - X)
梯度下降公式(程序化):
梯度下降解释:
梯度下降是一种涉及找到对权重的最佳调整的方法。这是必要的,以便可以找到最佳的权重值。在反向传播迭代过程中,实际输出离期望输出越远,权重的变化就越大。你可以把它想象成一个倒山,在每次迭代中,滚下山的球速度更快,到达底部时速度更慢。
随机梯度下降是一种更高级的方法,当最佳权重值比标准梯度下降示例的用例更难找到时使用。这可能不是最好的解释,所以为了更清晰的解释,refer to this video.对于随机梯度下降的清晰解释,refer to this video.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。