关于embeding与tokenizer以及解码时所使用的sentencepiece

#14
by thlw - opened

您好,我想知道为什么embeding层的数量大于tokenizer识别的词,是否有一些词被特殊处理了,如果我想扩展词汇表,在add_token之后对应的embeding层能否覆盖原来数据。另外,为什么解码时不使用tokenizer而从tokenizer.model中获得piece,并且piece总词数与tokenizer的vob数量也不相同,谢谢。

Knowledge Engineering Group (KEG) & Data Mining at Tsinghua University org
edited Dec 29, 2023

为什么嵌入层的数量大于tokenizer识别的词?
这通常是因为嵌入层包括额外的特殊token,如未知词、句子开始、句子结束等。这些特殊token用于模型训练和推理时的特殊情况处理。
特殊处理的词: 特殊token如上所述,是为了处理特定情况或提供必要的信息给模型,比如句子的开始和结束。

扩展词汇表: 如果你想要扩展词汇表,可以使用tokenizer的add_tokens方法。但是我们没有开放模型训练的代码,估计加了也没用。

为什么解码时不使用tokenizer而是使用tokenizer.model中的piece:
tokenizer.model 是指实际处理分解和重建词汇的底层模型,在解码过程中,直接与这些pieces进行交互,尤其是在处理未知词或特殊格式化时。pieces的数量与tokenizer的vocab数量不同是由于包含了一些额外的特殊pieces和预留的空词表。

zRzRzRzRzRzRzR changed discussion status to closed

Sign up or log in to comment