![]() |
1
5
参数共享能够有效地处理不同长度的序列并不是参数共享的唯一优点。正如你所说,你可以通过填充来实现这一点。参数共享的主要目的是减少模型必须学习的参数。这就是使用RNN的全部目的。
如果您将为每个时间步学习不同的网络,并将第一个模型的输出反馈给第二个模型等,那么您将得到一个常规的前馈网络。对于20个时间步,您需要学习20个模型。在卷积网络中,参数由卷积滤波器共享,因为当我们可以假设图片的不同区域(例如简单边缘)有相似的有趣图案时。这大大减少了我们必须学习的参数数量。类似地,在序列学习中,我们通常可以假设在不同的时间步有相似的模式。比较
共享参数有一个缺点。因为我们的模型在每个时间步都对输入应用相同的转换,所以现在必须学习对所有时间步都有意义的转换。所以,它必须记住,哪个词出现在哪个时间步,即。
衬料至于填充序列:主要目的不是让模型直接预测不同长度的序列。正如您所说,这可以通过使用参数共享来实现。填充用于有效的训练,特别是在训练期间保持较低的计算图。在没有填充的情况下,我们有两种培训选项:
这就是为什么我们需要填充物。我们将所有序列填充到相同的长度,然后在开始训练之前只需要构造一个计算图。当序列长度很短和很长(例如5和100)时,可以使用 bucketing and padding . 这意味着,将序列填充到不同的桶长度,例如[5、20、50、100]。然后,为每个桶创建一个计算图。这样做的好处是,您不必填充长度为5到100的序列,因为您将浪费大量时间“学习”其中的95个填充标记。 |
![]() |
cventr · 用于异常检测的递归神经网络 6 年前 |
|
user5458635 · 多输出LSTM时间序列预测 6 年前 |
![]() |
Funzo · 如何配置Keras中双向LSTM的输入形状 6 年前 |
![]() |
sww · Pytorch隐藏状态LSTM 6 年前 |