LM 的训练序列是否以 IID 方式采样?

人工智能 自然语言处理 语言模型 独立同居
2021-11-18 09:53:47

如果我理解正确,在训练语言模型时,我们会获取一个文档,然后将文档分块为 k 个标记的序列。因此,如果文档的长度为 30 且 k=10,那么我们将有 20 个块,每个块有 10 个标记(标记 1-11、2-12 等等)。

然而,这些训练序列不是 iid,对吧?如果是这样,是否有任何文件试图解决这个问题?

1个回答

语言模型明确假设单词序列不是独立且同分布的(iid)。假设每个序列中的 iid 的基于单词的模型只能根据其他上下文而不是周围的单词来预测单词的概率,这对于语言模型来说不是很有用。

统计模型的训练过程在采样时通常需要 iid 输入/输出对,例如小批量。当数据集被打乱以消除示例之间的任何相关机会时,神经网络肯定会训练得更好,因为它们用于更新参数。

如何解决这两种不同的需求?当在许多序列上训练基于序列的模型时,序列的分布需要是独立同分布的并代表整个群体。序列中项目的分布是正在学习的内容,因此不应模糊或删除。

打个比方,在训练图像分类器时,您通常不希望打乱图像中的像素行。图像中的空间模式需要以与句子中的顺序模式需要保留的相同方式保留,因为模式是被建模数据的一部分。使用图像数据,您可以接受单个图像中相邻像素之间的非独立同分布关系,然后在单个图像级别应用洗牌和分层算法。

如果是这样,是否有任何文件试图解决这个问题?

可能有一些 50 年前的原始论文在将训练序列输入 RNN 时将 iid 与非 iid 数据进行比较,但几十年来,打乱数据集和用于训练 RNN 的单独序列已成为工程实践的标准部分没有什么不同。

从您的评论中:

但是,如果它们是从同一文档按顺序生成的多个序列,则为训练而采样的序列不是 iid,据我所知,这经常发生?

你是对的,如果以这种方式收集原始序列集,它们就不是独立同分布的。然而,为了训练目的,数据集总是被打乱或重新采样,它不会以原始状态输入到训练例程中。改组(内部保持完整的选定序列)发生在原始数据收集和训练之间。


有一些简单的统计模型不需要 iid 数据进行训练。例如,这发生在表格强化学习中,它可以从一个连续的状态、动作和奖励序列中在线学习。等效的语言模型是基于单词或字母的 ngram。