上下文嵌入和词嵌入有什么区别

Exp*_*ing 3 artificial-intelligence machine-learning deep-learning

我试图理解深度学习模型的嵌入概念。

我了解使用word2vec如何解决使用 one-hot 向量的局限性。

然而,最近我看到大量的博客文章指出 ELMo、BERT 等谈论上下文嵌入。

词嵌入与上下文嵌入有何不同?

Ash*_*'Sa 5

词嵌入和上下文嵌入略有不同。

虽然词嵌入和上下文嵌入都是使用无监督学习从模型中获得的,但存在一些差异。

词嵌入提供word2vecfastText具有词的词汇表(词典)。该词汇表(或词典)的元素是单词及其相应的单词嵌入。因此,给定一个词,它的嵌入在它出现的任何句子中总是相同的。这里,预训练的词嵌入是static

然而,上下文嵌入(通常从基于转换器的模型中获得)。通过将整个句子传递给预先训练的模型,从模型中获得 eddings。请注意,这里有一个词的词汇表,但词汇表不包含上下文嵌入。为每个词生成的嵌入取决于给定句子中的其他词。(在给定的句子的换句话说被称为context。基于变压器模型的注意机制的工作,并注意是一种方式来看待与邻国的一个词之间的关系)。因此,给定一个词,它不会有静态嵌入,但嵌入是从预训练(或微调)模型动态生成的。

例如,考虑以下两个句子:

  1. 我将向您展示一个有效的参考点并针对这一点进行讨论。
  2. 你把重点放在哪里了。

现在,来自预训练嵌入(例如 word2vec)的词嵌入,该词的嵌入对于'point'它在示例 1 中的两次出现是相同的,对于'point'示例 2 中的单词也是相同的。(所有三个出现都具有相同的嵌入)。

而来自 BERT 或 ELMO 或任何此类基于转换器的模型的'point'嵌入,示例 1 中出现的两次单词将具有不同的嵌入。此外,'point'示例 2 中出现的单词将与示例 1 中的单词具有不同的嵌入。


Roo*_*adi 5

传统词嵌入(例如 word2vec、Glove)和上下文嵌入(例如 ELMo、BERT)这两种嵌入技术都旨在为文档中的每个词学习连续(向量)表示。连续表示可用于下游机器学习任务。

传统的词嵌入技术学习全局词嵌入。他们首先通过忽略不同上下文中单词的含义,使用文档中的唯一单词构建全局词汇表。然后,为文档中出现的更频繁地彼此靠近的单词学习相似的表示。问题在于,在这样的词表示中,词的上下文含义(从词的周围环境得出的含义)被忽略了。例如,只有一个表示。据悉在句中的“左”“我离开了我的手机上的表的一面。” 但是,“left”在句子中有两种不同的含义,需要在embedding空间中有两种不同的表示。

另一方面,上下文嵌入方法用于通过考虑文档中所有单词的序列来学习 序列级语义。因此,此类技术基于多义词的上下文学习多义词的不同表示,例如上面示例中的“左”。