的确,将梯度传播限制为30个时间步将阻止它学习数据集中所有可能的信息。但是,这是否会阻止它学习关于模型特征的重要知识,在很大程度上取决于您的数据集!
在训练期间限制梯度更像是限制模型可以高置信度吸收模型的输入特征和隐藏状态的窗口。因为在测试时将模型应用于整个输入序列,所以它仍然能够将有关所有输入要素的信息合并到其隐藏状态中。在做出对句子的最终预测之前,它可能并不确切知道如何保存该信息,但是可能仍然可以建立一些(公认较弱的)联系。
首先考虑一个人为的例子。假设您的网络在输入中任何地方都有1时生成1,否则就生成0。假设您以长度为20的序列训练网络,然后将梯度限制为10步。如果训练数据集在输入的最后10个步骤中从不包含1,则网络将对任何配置的测试输入产生问题。但是,如果训练集有一些示例,例如[1 0 0 ... 0 0 0],而其他示例,例如[0 0 0 ... 1 0 0],则网络将能够从“存在的1“功能在其输入中的任何位置。
然后回到情绪分析。假设在训练过程中,您的模型遇到了很长的否定句子,例如“我讨厌这个,因为……周围……”,用省略号表示50个单词。通过将梯度传播限制为30个时间步长,模型将不会将“我讨厌这是因为”与输出标签相关联,因此该培训不会从“ I”,“恨”或“此”中选取例。但是它将从句子结尾处的30个时间步内提取单词。如果您的训练集包含其他包含相同词的示例(可能还包含“仇恨”),那么它就有机会在“仇恨”和负面情绪标签之间建立联系。另外,如果您的培训示例较短,请说:“我们讨厌这样做,因为它太可怕了!” 那么您的模型就可以将“讨厌”和“此”功能连接到目标标签。如果您有足够的这些培训示例,那么该模型应该应该能够有效地学习连接。
在测试时,假设您在模型上再加上一个长长的句子,例如“我讨厌这样做,因为...在壁虎上!” 模型的输入将以“我讨厌这个”开始,它将以某种形式传递到模型的隐藏状态。该隐藏状态用于影响模型的未来隐藏状态,因此,即使句子末尾可能有50个单词,这些初始单词的隐藏状态在理论上也有可能影响输出,即使它从来没有在样本中接受过培训,样本中“我讨厌这个”和句子结尾之间的距离非常大。