要让LLMs(Large Language Models,大型语言模型)生成文字,首先得让它们“懂”单词。
单词首先会被拆分为 Tokens(一种能够被编码的基础单元)。在不同的语言模型和分词系统中,Token的定义和分割方法可能会有所不同。
绝大多数情况下,一个单词对应一个Token,但是也有很多情况不能一一对应。
单词跟Token无法一一对应的场景
以下是几种常见的不能一一对应的情况:
子词分词(Subword Tokenization):
在一些语言模型中,例如BERT和GPT系列模型,采用了子词分词策略,如WordPiece、SentencePiece或Byte Pair Encoding (BPE)等。在这些分词方法中,一个单词可能会被分割成几个子词tokens。
例如,单词 "unhappiness" 可能会被分割成三个tokens:“un”、“happiness”和"##ness"。
这种方式可以让机器学习到词根、前缀和后缀等词汇结构,从而更好地理解单词的语义和结构。
字符级分词(Character-level Tokenization):
在字符级分词中,每个字符都被视为一个单独的token。例如,单词 "hello" 会被分割成五个tokens:“h”、“e”、“l”、“l”和“o”。
这种分词方法适用的场景如下:
1、语言模型的基础训练:
在一些基础的语言模型训练任务中,字符级分词可以帮助模型从基础开始学习语言的结构和规律。通过这种方法,模型可以从字符的组合中学习到单词和短语的构成规则。
2、处理未知或稀有单词:
字符级分词可以帮助模型更好地处理未见过或稀有的单词。
通过学习字符间的关系和组合规律,模型可以在面对未知单词时做出更好的预测。
3、处理拼写错误:
当文本中存在拼写错误时,字符级分词可以帮助模型识别和纠正这些错误。
因为模型可以看到单词的每个字符,所以它可以识别出可能的拼写错误并提出修正建议。
小节
字符级分词通常会产生更小的词汇表,这可以减小模型的大小和提高计算效率。
然而,这也可能会导致模型需要处理更长的序列,因此在实际应用中,需要根据具体的任务需求和条件来选择最适合的分词策略。
多字词分词(Multi-word Tokenization):
在某些情况下,一些语言模型可能会将多个单词或短语视为一个单独的token。
例如,"New York" 可能会被视为一个单独的token,而不是两个单独的tokens。
特殊字符和标点符号:
标点符号和特殊字符通常会被视为独立的tokens。
例如,句子 "I love AI." 会被分成四个tokens:“I”、“love”、“AI”和“.”
非拉丁语系的语言:
对于非拉丁语系的语言,如中文、日文和韩文等,token和单词之间的对应关系可能会更加复杂。
例如,在中文中,每个字符通常会被视为一个单独的token,但每个字符并不总是一个单独的单词。
特殊的分词标记:
在处理文本时,某些特殊的分词标记(例如,[CLS]、[SEP]等)也会被插入到token序列中,但这些标记并不对应任何实际的单词。
[CLS](Classification)标记:
[CLS] 是 Classification 的缩写,通常用于序列分类任务。
- 在模型的输入序列的开始位置插入 [CLS] 标记。
- 在训练和应用模型时,[CLS] 标记的输出向量通常被用作整个序列的聚合表示,用于分类任务。
- 例如,在情感分析任务中,[CLS] 标记的输出向量可能会被用来预测文本的情感(如正面或负面)。
[SEP](Separator)标记:
[SEP] 是 Separator 的缩写,用于分隔模型输入中的不同部分。
- 在处理两个或多个独立序列时(例如,在问答或自然语言推理任务中),[SEP] 标记用于分隔这些序列。
- 通过插入 [SEP] 标记,模型可以更好地理解输入序列中各部分之间的关系和界限。
小节
不同需求场景下,我们选择了不同的分词策略,继而出现了不同的Token跟单词的关系。
正确的分词策略对于提高模型效能至关重要,它构成了连接人类语言与计算机理解的桥梁,为自然语言处理技术奠定了基础。
Token如何表示单词的多种含义?
Token在大型语言模型中是通过多维向量来表示的。这些向量可以捕捉单词的多种含义和上下文信息。
例如,单词"bank"可以指河岸也可以指金融机构。在不同的上下文中,"bank"的向量表示会有所不同,从而能够区分它的不同含义。
一个单词的多维向量是通过神经网络模型的训练过程得到的。每个维度的值不是直接为特定的语义或句法特性分配的,而是在模型训练的过程中学习到的。
虽然这些向量能够捕捉单词的语义和上下文信息,但每个维度的具体语义往往是不透明的。也就是说,我们很难直接解释某个维度的值代表了什么具体的语义或句法特性。
让我们用一个比喻来解释这个问题:
想象你有一个神秘的魔法盒子,这个盒子可以制作美味的蛋糕。你投入各种原料,比如面粉、糖、鸡蛋等,然后盒子就会自动混合、烘烤,最后输出一个蛋糕。
现在,盒子里有很多小旋钮,每个旋钮都可以调整制作蛋糕的某个环节。一开始,你并不知道每个旋钮的具体功能。但经过多次试验,你发现调整某个旋钮会使蛋糕更松软,调整另一个旋钮会使蛋糕更甜。
这些旋钮就像词向量中的每个维度。我们不一定知道每个旋钮(维度)具体控制什么,但我们知道调整它们会影响最终的结果(单词的语义表示)。
通过训练,模型就像是在不断地尝试和调整,找到最佳的旋钮组合,使得蛋糕(单词的表示)达到最佳的味道(语义)。
所以,尽管我们很难直接解释每个维度的具体意义,但我们知道整体的向量能够很好地表示单词的语义,并在实际任务中表现出色。
总结
大型语言模型中的Token是连接人类语言与计算机理解的桥梁。
不同的分词策略决定了模型如何解析与编码文本,进而影响模型的整体效能。
正确选择分词策略,不仅能够确保信息的完整性,还能优化模型的计算效率。
而Token的多维向量表示则允许模型深入捕获词汇在各种语境下的丰富语义,使其在实际任务中具有更高的灵活性和准确性。
这种表达方式虽难以逐一解释,但其价值在于为模型提供了广泛的上下文敏感性,成为自然语言处理技术的核心组成部分。
标签:字符,模型,单词,Token,vs,分词,向量 From: https://www.cnblogs.com/ghj1976/p/token-vs-dan-ci.html