BERT 中的 TokenEmbeddings 是如何创建的?

che*_*ose 4 nlp machine-learning word-embedding

描述 BERT论文中,有一段关于 WordPiece Embeddings 的内容。

我们使用 WordPiece 嵌入(Wu 等人,2016 年)和 30,000 个标记词汇。每个序列的第一个标记总是一个特殊的分类标记([CLS])。与此标记对应的最终隐藏状态用作分类任务的聚合序列表示。句子对被打包成一个序列。我们以两种方式区分句子。首先,我们用一个特殊的标记 ([SEP]) 将它们分开。其次,我们向每个标记添加一个学习嵌入,指示它属于句子 A 还是句子 B。 如图 1 所示,我们将输入嵌入表示为 E,将特殊 [CLS] 标记的最终隐藏向量表示为 C 2 RH,以及第 i 个输入标记的最终隐藏向量为 Ti 2 RH。对于给定的令牌,它的输入表示是通过对相应的标记、段和位置嵌入求和来构建的。这种结构的可视化可以在图 2 中看到。 图2来自论文

据我了解,WordPiece 将 Words 拆分为像 #I #like #swim #ing 这样的词块,但它不会生成嵌入。但是我在论文和其他来源中没有找到任何关于如何生成这些令牌嵌入的信息。他们是否在实际的预训练之前进行了预训练?如何?或者它们是随机初始化的?

Jin*_*ich 9

wordpieces 是分开训练的,这样最常用的词保持在一起,不太常用的词最终被拆分为字符。

嵌入与 BERT 的其余部分联合训练。反向传播通过所有层完成,直到嵌入就像网络中的任何其他参数一样被更新。

请注意,只有训练批次中实际存在的标记嵌入才会更新,其余的保持不变。这也是为什么您需要使用相对较小的词块词汇表的原因,以便在训练期间所有嵌入得到足够频繁的更新。