【发布时间】:2020-09-28 00:11:33
【问题描述】:
我正在尝试理解深度学习模型嵌入的概念。
我了解使用 word2vec 如何解决使用 one-hot 向量的限制。
但是,最近我看到大量的博客文章说明 ELMo、BERT 等在谈论上下文嵌入。
词嵌入与上下文嵌入有何不同?
【问题讨论】:
标签: machine-learning deep-learning artificial-intelligence
我正在尝试理解深度学习模型嵌入的概念。
我了解使用 word2vec 如何解决使用 one-hot 向量的限制。
但是,最近我看到大量的博客文章说明 ELMo、BERT 等在谈论上下文嵌入。
词嵌入与上下文嵌入有何不同?
【问题讨论】:
标签: machine-learning deep-learning artificial-intelligence
两种嵌入技术,传统的词嵌入(例如 word2vec、Glove)和上下文嵌入(例如 ELMo、BERT),旨在学习一个连续的(向量) 表示 文档中的每个单词。连续表示可用于下游机器学习任务。
传统的词嵌入技术学习全局词嵌入。他们首先通过忽略不同上下文中单词的含义,使用文档中的唯一单词构建一个全局词汇表。然后,对于在文档中出现得更频繁、彼此靠近的单词,学习相似的表示。问题是在这样的词表示中,词的上下文含义(从词的环境中得出的含义)被忽略了。例如,句子“我将手机放在left桌子的left一侧”中的“left”只学习了一个表示。但是,“left”在句子中有两种不同的含义,需要在嵌入空间中有两种不同的表示。
另一方面,上下文嵌入方法用于通过考虑文档中所有单词的序列来学习序列级语义。因此,这些技术学习多义词的不同表示,例如“左”在上面的例子中,基于他们的上下文。
【讨论】:
词嵌入和上下文嵌入略有不同。
虽然词嵌入和上下文嵌入都是使用无监督学习从模型中获得的,但存在一些差异。
word2vec 或 fastText 提供的词嵌入具有词的词汇表(字典)。该词汇表(或字典)的元素是单词及其对应的单词嵌入。因此,给定一个单词,无论它出现在哪个句子中,它的嵌入总是相同的。在这里,预训练的词嵌入是static。
但是,上下文嵌入(通常从基于转换器的模型中获得)。通过将整个句子传递给预训练模型,从模型中获得嵌入。请注意,这里有一个单词词汇表,但该词汇表不包含上下文嵌入。为每个单词生成的嵌入取决于给定句子中的其他单词。 (给定句子中的其他词称为context。基于转换器的模型工作于注意力机制,注意力是一种查看单词与其邻居之间关系的方法)。因此,给定一个词,它不会有静态嵌入,但嵌入是从预训练(或微调)模型动态生成的。
例如,考虑以下两个句子:
现在,来自预训练嵌入(例如 word2vec)的词嵌入,对于示例 1 中的两次出现,单词 'point' 的嵌入是相同的,对于示例 2 中的单词 'point' 也是相同的。 (所有三个事件都有相同的嵌入)。
虽然来自 BERT 或 ELMO 或任何此类基于转换器的模型的嵌入,但在示例 1 中两次出现的单词 'point' 将具有不同的嵌入。此外,示例 2 中出现的单词 'point' 将具有与示例 1 中不同的嵌入。
【讨论】: