青训营X豆包MarsCode 技术训练营第一课

119 阅读2分钟

ChatGPT 是如何处理文字输入的?

文字在进入 ChatGPT 模型之前,需要先经过一个转换,形成另外一种数据形式。在 ChatGPT 计算处理完之后,也需要将结果再做逆转换,形成文字形式,反馈给用户。 这种转换包括两个步骤,Tokenizer 和 Embedding。本节主要介绍这两个模块。

image.png

Tokenizer

定义:将用户输入的文本转换为 token 序列的过程就叫做 Tokenizer token 是任何 NLP 神经网络 模型接收用户输入的最小粒度。

Tokenizer 算法 BPE 执行流程

字符对编码 BPE(Byte Pair Encoding) 算法 定义:BPE 算法是根据一份 token 词表(Vocabulary),将输入的文本拆解成若干个 token。其中,每一个 token 都存在于词表。 ChatGPT 模型在回答用户问题,输出答案时,也是首先输出 token 序列,再将 token 序列反转为正常的自然语言文本,这个操作叫做 D e-tokenization。它与 Tokenization 是完全互逆的操作。读者可以尝试把上面的 token 序列合并成完整的文本句子。

Byte-level BPE 算法

拓展: 所有的字符在计算机中都是以 Unicode 编码格式实现的。 区别: 这种算法的执行步骤和上述的 BPE 算法完全一致,唯一的区别在于,BPE 算法直接操作 Unicode 字符,而 Byte-level BPE 算法把文本的字节作为直接操作的对象。

BPE 的词表是如何训练得到的?

BPE 的词表主要是根据训练文本语料统计得到的

Tokenizer 的好处

克服长尾效应 OOV

而那些极低频的单词数量极多,但总共加起来的实际使用量也不超过 2%。这就是自然语言的长尾效应   这种现象也出现在其它语言中。

多语言支持

在早期,NLP 神经网络模型功能十分单一,且仅支持某一种语言。一个针对英文的文本分类模型,并不能支持中文的文本分类。而 BPE 算法,包括 Byte-level BPE 算法的设计,使得一份词表中包含了多种语言的字符,支持模型的多语言处理功能。

词嵌入(Embedding)

定义: 将用户输入的 token 转换为浮点数张量的过程,就叫做词嵌入(Embedding)

embeddinginput = UWe + Wpembeddinginput​ = UWe​ + Wp​

Embedding 的好处

Embedding 方便接入大规模神经网络

总结

  • Tokenizer 将模型输入的文字转换为 token 序列。
  • ChatGPT 使用了 BPE 算法实现 Tokenizer。
  • Embedding 将 token 序列映射为张量矩阵,方便模型进行张量矩阵运算。