BERT中的TokenEmbeddings如何创建?

时间:2019-09-16 16:29:57

标签: machine-learning nlp word-embedding

paper describing BERT中,有一段有关WordPiece嵌入的段落。

  

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

据我了解,WordPiece将单词拆分为#I #like #swim #ing之类的单词,但不会生成嵌入。但是我在论文和其他资料中都没有发现任何令牌嵌入的生成方式。他们是否在实际的预训练之前就进行了预训练?怎么样?还是随机初始化?

1 个答案:

答案 0 :(得分:3)

单词是分开训练的,因此最频繁的单词会保留在一起,而最不频繁的单词最终会分解为字符。

与BERT的其余部分一起训练嵌入。像所有网络中的其他参数一样,反向传播是贯穿所有层进行的,直到嵌入为止。

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