BERT 词嵌入中的元素是什么?

数据挖掘 词嵌入 nlp 伯特 语言模型
2021-10-08 00:39:12

据我了解,BERT 是一个词嵌入,可以微调也可以直接使用。

对于较旧的词嵌入(word2vec、Glove),每个词在嵌入中仅表示一次(每个词一个向量)。这是一个问题,因为它没有考虑同音异义词。据我了解,BERT 通过考虑上下文来解决这个问题。

这对词嵌入本身意味着什么?每个词标记是否还有一个向量?如果是这样,如何考虑上下文?如果不是,嵌入的格式是什么?

2个回答

先说几点:

  • BERT 是一个词嵌入:BERT 既是词嵌入又是句子嵌入。需要考虑的是,BERT 将句子中的单词序列考虑在内,这为您在上下文中提供了更丰富的单词嵌入,但在经典嵌入中(是的,在 BERT 之后,我们可以称其他人为“经典”!)主要处理邻域,即词向量的语义是它在训练集中具有的所有语义的平均值。
  • 它没有考虑同音异义词:要么是你的错字,要么是我不太了解同音词。说实话只好搜了!谷歌说“两个或多个单词具有相同的拼写或发音但不同的含义,如“正确”和“写”。这对词嵌入来说不是问题。也许你的意思是别的?!
  • BERT 通过考虑上下文来解决这个问题:所有嵌入都考虑上下文。不同之处在于在考虑单词序列时捕获上下文,例如建模句子。

关于问题:

  • 每个词标记是否还有一个向量?:每层每个标记一个向量。意味着要找到一个单词的单个向量,您需要 n 层并将值相加。如您所知,您越往后层(即朝向输出层)编码,层中编码的信息(特征)就越丰富。也可以一个接一个地串联起来,得到更高维度的表示。请注意,它完全依赖于任务BERT 作者尝试了不同的方法,并总结了 NER 任务的最后四层。

与经典嵌入相比,有趣的是您现在可以对令牌的句子相关语义进行编码!意味着在 word2vec(在像维基百科这样的通用语料库文本上训练)中,你有 1 个单词apple的向量,如果你检查它,你可能会发现它与iphonefruit都有关系(从未尝试过。只是举了一个例子为你说明我的观点。让我知道你是否尝试过并且出现了其他东西!)但是使用 BERT,你可以对包含不同上下文中相似单词的句子进行编码,并检查这些单词在句子中的编码。您惊讶地看到它是如何捕捉语义的!

最后但并非最不重要的是这篇博文,它是我回答的基础

希望它有所帮助!

当您运行 BERT 时,每个输入标记都会得到一个向量 + 1 个称为特殊标记的特殊标记[CLS]+ 1 个称为 的特殊标记[SEP]也许比将 BERT 嵌入称为嵌入更精确,将它们称为 BERT 的隐藏状态。上下文信息通过 12 层自注意力神经网络进入嵌入。

但是,使用 BERT 进行标记化很棘手,标记不是单词。它使用所谓的 WordPieces 来表示输入,即将频率较低的单词拆分成更小的单元,因此最后没有 OOV 标记。

使用 BERT Base Cased 模型,标记化如下所示:

  • 'I am the walrus.'
    ['I', 'am', 'the', 'wa', '##l', '##rus', '.']

  • 'What are the elements in a BERT word embedding?'
    ['What', 'are', 'the', elements', 'in', 'a', 'B', '##ER', '##T', 'word', 'em', '##bed', '##ding', '?']

训练BERT时,总是有两个句子,由[SEP]token隔开。的嵌入[CLS]用于预测两个句子是否在连贯的文本中相互跟随。在句子分类任务中,token 的嵌入[CLS]被用作分类器的输入。