RNN/LSTM的损失是怎么计算的?
How loss in RNN/LSTM is calculated?
我正在通过练习时间序列训练数据来了解 LSTM 的工作原理(输入是特征列表,输出是标量)。
在计算 RNN/LSTM:
的损失时有一个问题我无法理解
损失是怎么计算的?它是在我每次给 nn 新输入时计算的还是通过所有给定的输入累加然后是 backprop
答案不依赖于神经网络模型。
这取决于您选择的优化方法。
如果您使用的是批量梯度下降法,则损失会在整个训练集上取平均值。这对于神经网络来说通常是不切实际的,因为训练集太大而无法放入 RAM,而且每个优化步骤都需要花费大量时间。
在随机梯度下降中,损失是为每个新输入计算的。这种方法的问题是它有噪音。
在mini-batch梯度下降中,损失在每个新的小批量上平均——一些小的固定大小的输入子样本。这种方法中的一些 variation 通常在实践中使用。
因此,您问题的答案取决于您选择的小批量大小。
(图片来自here)
@seed 答案正确。然而,在 LSTM 或任何 RNN 架构中,每个实例的损失,在所有时间步长上,都是相加的。换句话说,对于输入批次中的每个样本,您将拥有 (L0@t0, L1@t1, ... LT@tT)。为批次中的每个实例分别添加这些损失。最后平均每个输入实例的损失以获得当前批次的平均损失
更多信息请访问:https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-networks
我正在通过练习时间序列训练数据来了解 LSTM 的工作原理(输入是特征列表,输出是标量)。 在计算 RNN/LSTM:
的损失时有一个问题我无法理解损失是怎么计算的?它是在我每次给 nn 新输入时计算的还是通过所有给定的输入累加然后是 backprop
答案不依赖于神经网络模型。 这取决于您选择的优化方法。
如果您使用的是批量梯度下降法,则损失会在整个训练集上取平均值。这对于神经网络来说通常是不切实际的,因为训练集太大而无法放入 RAM,而且每个优化步骤都需要花费大量时间。
在随机梯度下降中,损失是为每个新输入计算的。这种方法的问题是它有噪音。
在mini-batch梯度下降中,损失在每个新的小批量上平均——一些小的固定大小的输入子样本。这种方法中的一些 variation 通常在实践中使用。
因此,您问题的答案取决于您选择的小批量大小。
(图片来自here)
@seed 答案正确。然而,在 LSTM 或任何 RNN 架构中,每个实例的损失,在所有时间步长上,都是相加的。换句话说,对于输入批次中的每个样本,您将拥有 (L0@t0, L1@t1, ... LT@tT)。为批次中的每个实例分别添加这些损失。最后平均每个输入实例的损失以获得当前批次的平均损失
更多信息请访问:https://stanford.edu/~shervine/teaching/cs-230/cheatsheet-recurrent-neural-networks