如何计算RNN / LSTM的损失?

时间:2018-03-27 04:35:12

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

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

如何计算损失?它是在每次我给出nn新输入或通过所有给定输入进行累计时计算的,然后是backprop

2 个答案:

答案 0 :(得分:1)

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

如果您使用批量梯度下降,则在整个训练集中平均丢失。这对于神经网络来说通常是不切实际的,因为训练集太大而不适合RAM,每个优化步骤都需要花费很多时间。

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

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

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

Convergence of gradient descent depending on minibatch size

(图片来自here

答案 1 :(得分:1)

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

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