【问题标题】:How loss in RNN/LSTM is calculated?RNN/LSTM 中的损失是如何计算的?
【发布时间】:2018-03-27 04:35:11
【问题描述】:

我通过练习时间序列训练数据来了解 LSTM 的工作原理(输入是特征列表,输出是标量)。 在计算 RNN/LSTM 的损失时,有一个我无法理解的问题:

损失是如何计算的?它是在每次我给 nn 新输入时计算还是通过所有给定输入累积然后反向传播

【问题讨论】:

    标签: neural-network lstm recurrent-neural-network


    【解决方案1】:

    答案不依赖于神经网络模型。 这取决于您选择的优化方法。

    如果您使用批量梯度下降,则损失是整个训练集的平均值。这对于神经网络来说通常是不切实际的,因为训练集太大而无法放入 RAM,而且每个优化步骤都需要大量时间。

    在随机梯度下降中,为每个新输入计算损失。这种方法的问题是噪音大。

    在小批量梯度下降中,损失是在每个新小批量上平均的 - 一些固定大小的小输入的子样本。这种方法的一些variation在实践中是典型的使用。

    因此,您问题的答案取决于您选择的小批量大小。

    (图片来自here

    【讨论】:

    • 看来我想多了这个问题。顺便说一句,非常感谢你帮助我
    【解决方案2】:

    @seed 答案是正确的。然而,在 LSTM 或任何 RNN 架构中,每个实例在所有时间步长上的损失都会相加。换句话说,对于输入批次中的每个样本,您将拥有 (L0@t0, L1@t1, ... LT@tT)。为批次中的每个实例分别添加这些损失。最后平均每个输入实例的损失以获得当前批次的平均损失

    欲了解更多信息,请访问:https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-networks

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2023-02-23
      • 2020-07-20
      • 2021-07-26
      相关资源
      最近更新 更多