在paper describing BERT中,有一段有关WordPiece嵌入的段落。
我们使用WordPiece嵌入(Wu等, 2016)的词汇量为30,000个。首先 每个序列的标记始终是一种特殊的分类 令牌([CLS])。最终的隐藏状态 与此令牌对应的用作汇总 分类的序列表示 任务。句子对打包在一起 单序列。我们在中区分句子 两种方式。首先,我们将它们分开 令牌([SEP])。第二,我们添加学习的嵌入 指示每个令牌是否属于 到句子A或句子B。如图1所示, 我们将输入嵌入表示为E,最后隐藏 特殊[CLS]令牌的向量为C 2 RH, 以及第i个输入标记的最终隐藏向量 作为Ti 2 RH。 对于给定的令牌,其输入表示为 通过求和相应的令牌来构造的 段和位置嵌入。可视化 这种结构的结构如图2所示。
据我了解,WordPiece将单词拆分为#I #like #swim #ing之类的单词,但不会生成嵌入。但是我在论文和其他资料中都没有发现任何令牌嵌入的生成方式。他们是否在实际的预训练之前就进行了预训练?怎么样?还是随机初始化?
答案 0 :(得分:3)
单词是分开训练的,因此最频繁的单词会保留在一起,而最不频繁的单词最终会分解为字符。
与BERT的其余部分一起训练嵌入。像所有网络中的其他参数一样,反向传播是贯穿所有层进行的,直到嵌入为止。
请注意,只有训练批次中实际存在的令牌嵌入才会更新,其余的则保持不变。这也是为什么您需要使用相对较小的单词词汇量的原因,以便在训练过程中所有嵌入都得到足够频繁的更新。