在序列的 pre 和 post 零填充之间进行选择如何影响结果
How does choosing between pre and post zero padding of sequences impact results
我正在研究 NLP 序列标记问题。我的数据由具有相应标签 (l_1, l_2, ..., l_k)
的可变长度序列 (w_1, w_2, ..., w_k)
组成(在本例中,任务名为实体提取)。
我打算使用递归神经网络解决问题。由于序列的长度可变,我需要填充它们(我希望批量大小 >1)。我可以选择对它们进行预零填充,或者对它们进行 post 零填充。 IE。我制作每个序列 (0, 0, ..., w_1, w_2, ..., w_k)
或 (w_1, w_2, ..., w_k, 0, 0, ..., 0)
使得每个序列的长度相同。
预填充和 post 填充之间的选择如何影响结果?
预填充似乎更常见,但我找不到解释为什么它会更好。由于 RNN 的性质,它对我来说感觉像是一个任意的选择,因为它们在时间步长上共享权重。
通常在 RNN 中,我们采用最终输出或隐藏状态并使用它来进行预测(或执行我们尝试执行的任何任务)。
如果我们在获取最终输出之前向 RNN 发送一串 0(即如您描述的 'post' 填充),则网络在句子中最后一个词处的隐藏状态可能会得到'flushed out' 在某种程度上被这个词后面的所有零输入所影响。
直觉上,这可能就是为什么预填充更多 popular/effective。
这篇论文(https://arxiv.org/pdf/1903.07288.pdf)研究了填充类型对 LSTM 和 CNN 的影响。他们发现,与 LSTM 中的预填充相比,post-padding 的准确度要低得多(接近一半),尽管 CNN 没有显着差异(post-padding 只是稍微差一点)。
对 RNN 的 simple/intuitive 解释是,post-padding 似乎增加了从时间序列中学到的东西的噪声,并且 RNN 没有更多的时间步长来从这种噪音中恢复过来。然而,通过预填充,RNN 能够更好地适应开始时增加的零噪声,因为它会随着时间从序列中学习。
我认为社区需要进行更彻底的实验,以更详细地解释填充如何影响性能的机制。
我总是建议使用预填充而不是 post-填充,即使对于 CNN,除非问题特别需要 post-填充。
我正在研究 NLP 序列标记问题。我的数据由具有相应标签 (l_1, l_2, ..., l_k)
的可变长度序列 (w_1, w_2, ..., w_k)
组成(在本例中,任务名为实体提取)。
我打算使用递归神经网络解决问题。由于序列的长度可变,我需要填充它们(我希望批量大小 >1)。我可以选择对它们进行预零填充,或者对它们进行 post 零填充。 IE。我制作每个序列 (0, 0, ..., w_1, w_2, ..., w_k)
或 (w_1, w_2, ..., w_k, 0, 0, ..., 0)
使得每个序列的长度相同。
预填充和 post 填充之间的选择如何影响结果?
预填充似乎更常见,但我找不到解释为什么它会更好。由于 RNN 的性质,它对我来说感觉像是一个任意的选择,因为它们在时间步长上共享权重。
通常在 RNN 中,我们采用最终输出或隐藏状态并使用它来进行预测(或执行我们尝试执行的任何任务)。
如果我们在获取最终输出之前向 RNN 发送一串 0(即如您描述的 'post' 填充),则网络在句子中最后一个词处的隐藏状态可能会得到'flushed out' 在某种程度上被这个词后面的所有零输入所影响。
直觉上,这可能就是为什么预填充更多 popular/effective。
这篇论文(https://arxiv.org/pdf/1903.07288.pdf)研究了填充类型对 LSTM 和 CNN 的影响。他们发现,与 LSTM 中的预填充相比,post-padding 的准确度要低得多(接近一半),尽管 CNN 没有显着差异(post-padding 只是稍微差一点)。
对 RNN 的 simple/intuitive 解释是,post-padding 似乎增加了从时间序列中学到的东西的噪声,并且 RNN 没有更多的时间步长来从这种噪音中恢复过来。然而,通过预填充,RNN 能够更好地适应开始时增加的零噪声,因为它会随着时间从序列中学习。
我认为社区需要进行更彻底的实验,以更详细地解释填充如何影响性能的机制。
我总是建议使用预填充而不是 post-填充,即使对于 CNN,除非问题特别需要 post-填充。