【问题标题】:Looping through training data in Neural Networks Backpropagation Algorithm在神经网络反向传播算法中循环训练数据
【发布时间】:2014-05-02 03:37:31
【问题描述】:

我在一个训练周期中使用了多少次训练数据样本? 假设我有 60 个训练数据。我通过第一行并进行前向传递并使用后向传递的结果调整权重。使用 sigmoidal 函数如下:

Forward pass 
Si = sum of (Wi * Uj)
Ui = f(Si) = 1 / 1 + e^ - Si

Backward pass 
Output Cell = (expected -Ui)(f'(Si)), where 
f'(Si) = Ui(1-Ui)

然后我是通过第 2 行并执行与第 1 行相同的过程还是围绕第 1 行直到错误减少?

希望有人能帮忙

【问题讨论】:

    标签: artificial-intelligence neural-network backpropagation


    【解决方案1】:

    训练网络

    您应该在每个训练时期使用训练集的每个实例一次。

    一个训练时期是整个数据集的完整循环。

    遍历数据集并计算增量后,您应该调整网络的权重。然后,您可以对神经网络执行新的前向传递并执行另一个训练 epoch,循环通过您的训练数据集。

    图形表示
    at this link.

    可以找到一个非常棒的反向传播图形表示

    单步训练

    有两种方法可以训练您的网络对数据集执行分类。最简单的方法称为单步学习或在线学习。这是您在大多数文献中都能找到的方法,也是收敛速度最快的方法。在训练网络时,您将计算每一层的增量并调整数据集的每个实例的权重。

    因此,如果您有一个包含 60 个实例的数据集,这意味着您应该在训练 epoch 结束之前调整权重 60 次。

    批量训练

    另一种方法称为批量训练或离线学习。这种方法通常会产生具有较低残差的网络。 当您训练网络时,您应该为数据集的每个实例计算每一层的增量,然后最终平均各个增量并每个时期校正一次权重

    如果您有一个包含 60 个实例的数据集,这意味着您应该在训练周期结束之前调整一次权重。

    【讨论】:

    • 非常感谢您的帮助。你是说我应该遍历我的所有 60 个数据并计算增量,一旦循环完成我调整权重?还是我循环遍历我的 60 个数据并在计算增量后立即调整权重?
    • 我已经扩展了我的答案,因为这无法用 600 个内联字符来解释。我认为你应该去在线版本!
    • 只是为了解决您的主要问题:我在一个训练周期中使用训练数据样本多少次? 一次,几乎总是.
    • 谢谢。如果我只使用一组数据,我了解它是如何工作的。当我有多个训练数据时,混乱就开始了。我想我正在尝试进行单步训练。我不确定您所说的“调整网络每个实例的权重”是什么意思。我以为我们只使用一个网络实例来训练
    • jorgenkp 所说的“单步训练”在大多数文献中被称为随机训练。在几乎所有情况下,随机训练都将胜过批量训练。
    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 2012-03-11
    • 2018-08-04
    • 1970-01-01
    • 2017-07-30
    • 2021-12-11
    • 2012-04-14
    • 2017-09-28
    相关资源
    最近更新 更多