Algorithm 关于人工神经网络反向传播算法的问题——更新顺序
嘿,大家好,我一直在试着得到一个我编码的人工神经网络来使用反向传播算法。我读过几篇关于它们的论文,但我注意到一些不一致之处 这里似乎是算法的超级通用格式:Algorithm 关于人工神经网络反向传播算法的问题——更新顺序,algorithm,neural-network,Algorithm,Neural Network,嘿,大家好,我一直在试着得到一个我编码的人工神经网络来使用反向传播算法。我读过几篇关于它们的论文,但我注意到一些不一致之处 这里似乎是算法的超级通用格式: 输入 获得输出 计算误差 计算重量的变化 重复步骤3和4,直到达到输入级别 但问题是:显然,权重需要在某个时候更新。但是,因为我们是反向传播,所以在计算更接近输入层的层的误差时,我们需要使用前面层(我的意思是更接近输出层的层)的权重。但是我们已经计算了更接近输出层的层的权重变化!因此,当我们使用这些权重来计算更接近输入的层的误差时,我们是使用
谢谢!据我所知,您应该立即更新权重。反向传播的目的是找到使ANN误差最小化的权重,它通过梯度下降来实现。我认为页面中的算法描述非常好。您还可以在引擎中仔细检查它的实现。您通常反向传播增量不是错误。这些增量是根据错误计算的,但它们的含义不同。一旦有了n层的增量(从输入到输出),就可以使用这些增量和n层的权重来计算n-1层的增量(离输入更近的一个)。增量仅对网络的旧状态有意义,而对新状态没有意义,因此您应始终使用旧权重将增量传播回输入 Delta在某种意义上是指NN的每个部分之前对错误的贡献程度,而不是下一步对错误的贡献程度(因为您还不知道实际错误)
与大多数机器学习技术一样,如果你使用更新的权重,它可能仍然有效,但收敛速度可能较慢。如果你只是在单个输入-输出对上训练它,我的直觉是立即更新权重,因为梯度不是恒定的。但我认为你的书只提到了单个输入-输出配对。通常你们会提出一个ANN,因为你们有很多输入输出样本来自一个你们想用ANN建模的函数。所以你们的循环应该从第1步开始重复,而不是从第3步开始 如果我们将您的两种方法标记为new->online和old->offline,那么我们有两种算法
- 当您不知道将看到多少样本输入输出关系,并且您不介意权重更新方式中的一些随机性时,在线算法是很好的
- 如果您希望以最佳方式拟合特定数据集,则脱机算法很好。为了避免数据集中的样本拟合过度,您可以将其拆分为训练集和测试集。您可以使用训练集更新权重,并使用测试集来衡量拟合程度。当测试集上的错误开始增加时,y你完了