我试图理解词嵌入和上下文嵌入之间的区别。
以下是我的理解,如有错误请补充。
词嵌入算法有一个单词的全局词汇表(字典)。当我们执行 word2vec 时,输入语料库(唯一单词)与全局字典映射,它将返回嵌入。
上下文嵌入用于通过考虑文档中所有单词的序列来学习序列级语义。
但我不明白我们在词嵌入中考虑上下文的位置。
您对上下文嵌入的理解是正确的。上下文嵌入是通过考虑句子或文档中单词的上下文来生成的。这是通过使用 BERT、ELMO 或 GPT 等模型来完成的,这些模型经过大量文本数据的训练,可以生成根据上下文捕获单词含义的嵌入。
关于词嵌入,训练期间没有明确考虑上下文。词嵌入是通过查看大型文本语料库中单词的共现情况来生成的。词嵌入背后的想法是,在相似上下文中出现的词将具有相似的嵌入。例如,“狗”和“猫”一词可能具有相似的嵌入,因为它们经常出现在相似的上下文中,例如“我有一只宠物”或“动物很可爱。”
然而,值得注意的是,一些生成词嵌入的算法,例如带有负采样的skip-gram(SGNS),可以被视为隐式考虑上下文。在 SGNS 中,目标是预测给定目标单词的上下文单词,因此算法本质上是尝试学习善于捕获单词上下文的嵌入。
今天,当谈论上下文嵌入时,它通常用于描述根据给定上下文动态变化的嵌入(例如“单词”出现的句子),并且不会作为预训练过程生成一次并用作不依赖于当前上下文的字典,就像 w2v 中一样。
虽然 w2v 和上下文嵌入通常都是基于“单词”出现的“上下文”生成的,但 w2v 仅训练一次,同时使用“单词”出现的所有上下文作为预训练过程。另一方面,上下文嵌入是根据给定的“单词”及其出现的上下文动态生成的。 清楚显示差异的一个例子是“鼠标”一词。这个词可以用来描述一种动物,或者用来在计算机屏幕上移动光标的机械工具。在 w2v 中,“鼠标”的嵌入将是静态的,并且将保存有关“动物鼠标”和“计算机鼠标”的信息。在上下文嵌入中,您需要提供该单词出现的当前上下文,因此在谈论动物的句子中的“鼠标”和谈论计算机的句子中的“鼠标”将会有不同的嵌入。
请注意,上下文嵌入是在大型语言模型的上下文中讨论的,它可以根据上下文动态动态输出文本嵌入。