自然语言处理预训练——近似训练
近似训练是一种用于加速训练过程的技术。
负采样
负采样是在训练过程中对目标函数进行简化的一种方法。在传统的训练中,需要计算整个词汇表的概率分布,这在大规模任务中会非常耗时。负采样的思想是通过随机采样一小部分负例来近似计算全局的目标函数。具体来说,对于每个正例(例如一个正确的词对应的上下文),从词汇表中随机选择一些负例(不在上下文中出现的词)作为训练样本。这样可以大幅减少计算量,同时保持了模型的训练效果。
具体而言,负采样会根据词频分布对词汇表进行采样,选择一些常见的词作为噪声词。这样做的目的是使得模型能够更好地区分中心词和噪声词,从而提高词向量的质量。同时,由于只考虑了部分负例,负采样的训练计算量与每一步的噪声词数成线性关系,大大降低了计算成本。
分层sofmax
层序softmax是一种用于加速并行计算的技术,特别适用于具有大型输出空间的任务,例如词汇表很大的情况。传统的softmax要求对整个输出空间计算概率分布,计算复杂度较高。层序softmax通过将词汇表组织成一颗二叉树,每个节点代表一个词,通过自顶向下的递归方式计算概率。具体操作是,在二叉树中从根节点开始,依次选择左右子节点,直到到达叶子节点。
总结
-
负采样通过考虑相互独立的事件来构造损失函数,这些事件同时涉及正例和负例。训练的计算量与每一步的噪声词数成线性关系。
-
分层softmax使用二叉树中从根节点到叶节点的路径构造损失函数。训练的计算成本取决于词表大小的对数。