大语言模型(LLM)已彻底改变了机器理解和生成人类语言的方式,幕后支持从聊天机器人到内容生成器的各种应用。其出色功能背后是每个开发人员都应该理解的一个基本概念:词元。这个基本单元直接影响使用LLM时的模型性能和成本。本文探讨了什么是词元、词元在LLM中的功能以及为什么理解分词对于高效实施AI至关重要。
在AI和自然语言处理中,词元是模型处理的文本的基本单位。不像人类将文本读取成连续字符流,LLM 将输入文本分解为名为词元的小段。词元可以是整个单词、单词的一部分、单个字符,甚至标点符号或空格。
LLM识别的独特分词集构成了词汇表。通过将文本转换成分词,LLM就可以以更易于分析和生成的形式处理语言,充当理解和生成文本的基础。
LLM使用词元作为从文本中学习和生成新内容的基础:
1. 在训练期间,LLM读取大量文本,并将每个句子或文档转换成词元序列。
2. 每个词元都映射到名为嵌入(Embedding)的数字表示,以便模型可以对其执行数学运算。
3. 模型学习词元序列的模式——哪些词元通常在各种上下文中跟在其他词元的后面。
4. 在推理期间,输入文本被分词化,模型处理这些词元序列以预测下一个最有可能的词元。
5. 模型根据学习到的概率按顺序输出每个词元,每次一个词元地生成最终响应。
这种基于词元的方法允许LLM捕获单词与短语之间的统计关系,从而使它们能够生成连贯且上下文相关的文本。
分词是将原始文本转换成词元的过程——这是LLM的关键第一步,因为它们无法直接理解人类语言。分词方法显著影响了模型处理文本的效率以及它处理不同语言和写作风格的能力。
分词主要有三种方法,每种方法都有不同的优缺点:
1. 基于单词的分词:将每个单词(用空格或标点符号分隔开来)视为单个词元。比如说,“LLMs are amazing!”变成[“LLMs”、“are”、“amazing”、“!”]。这种方法很直观,但处理不熟悉的单词(词汇表之外的单词)时会遇到困难,并且需要非常大的词汇量。
2. 基于字符的分词:该方法将文本分解成单个字符或字节。使用相同的例子,它变成 [“L”、“L”、“M”、“s”、“ ”、“a”、“r”、“e”等]。该方法可以表示任何可能的字符串,但会显著增加序列长度,从而降低处理效率。
3. 子词分词:通过将单词分解成有意义的部分来达到平衡,这些部分可能比单词短,但比字符长。像“unhappiness”这样的罕见单词可能变成[“un”、“happiness”]。这种方法可以有效地处理新的或罕见单词,同时保持词汇量易于管理,使其成为现代LLM的首选方法。
词元是LLM处理的基本单位,而单词是语言单位。词元可以是整个单词、单词的一部分、字符或标点符号。在英语中,一个单词平均等于大约1.3个词元,但这因语言和分词方法而异。
考虑不同的分词器如何处理单词“internationalization”:
这些差异表明了分词为何很重要——选择会影响模型处理文本的效率以及它们如何处理不熟悉的单词或表达。
几个工具和库可以帮助开发人员实现分词:
每个语言模型都有预定义的词元限制,为输入和输出建立了界限。这种约束定义了“上下文长度”,即模型在单个操作中可以处理的词元数量。比如说,拥有2048个词元上下文长度和500个词元输入的模型可以生成最多1548个词元的响应。这种限制是由于计算约束、内存限制以及架构设计选择而存在的。
了解这种界限至关重要,因为超出界限可能会导致响应被截断、信息丢失或模型错误。随着上下文窗口逐渐扩大,模型不断发展,但遵循词元限制有效运作仍然是LLM开发人员的一项基本技能。
词元限制直接影响LLM维护上下文和生成连贯响应的能力。当输入接近或超过这种限制时,模型可能会丢失文本中先前呈现的信息,从而导致准确性下降、细节被遗忘或输出相互矛盾。有限的词元上下文尤其会阻碍需要长期推理、解决复杂问题或参考整个文档中信息的任务。
此外,不同的分词方法会影响文本的编码效率——低效的分词导致词元的浪费,这些词元会计入上下文限制,却不添加有意义的信息。了解这些性能影响有助于开发人员设计更有效的提示和交互。
有效的词元优化始于设计简洁清晰的提示,以消除冗余和不必要的细节。开发人员可以在适当的情况下使用缩写、删除重复信息以及将查询重点放在特定点而不是广泛的主题上,以此减少词元的使用。使用后续问题而不是冗长的单个提示来构建交互可以最大限度地提高上下文利用率。
采用分块(将内容分成更小的段)等技术有助于在处理大型文档时管理词元约束。选择词元方法更高效的模型,并监测成本敏感型应用的词元使用情况,可以显著降低运营费用,同时保持输出质量。
从聊天机器人到内容生成系统,分词影响与LLM的每次交互。了解其实际意义有助于开发人员创建更有效的AI应用程序。
AI应用中分词的例子:
使用LLM创建内容时,分词会影响以下几个方面:
现代LLM通常使用子词分词算法,每种算法都有不同的方法:
字节对编码从单个字符入手,并迭代合并最常见的相邻词元对,直至达到目标词汇量。这种数据驱动的方法可以有效地处理常见单词,同时仍能够表示罕见术语。OpenAI的GPT模型使用BPE的变体。
Unigram分词采用一种概率方法,从许多候选词元入手,并迭代删除对生成训练文本的可能性影响最小的词元。这样可以创建更具有语言意义的词元。
WordPiece是为BERT开发的,与BPE相似,但优先考虑最大化训练数据可能性的合并,而不仅仅是频率。它通常用特殊前缀(比如BERT中的“##”)标记子词单元,以表示单词连续。
Tiktoken(OpenAI 的分词器)
OpenAI为GPT-3.5和GPT-4等模型定制的分词器实现了BPE,并针对速度和效率进行了优化。它处理多语言文本、特殊字符和多种格式,同时保持可逆性(词元可以完美地转换回原始文本)。
词元构成了大语言模型理解、处理和生成文本的基础。理解分词不仅仅具有学术意义,它还直接影响应用程序的效率、成本管理和输出质量。如果掌握分词概念和优化策略,开发人员可以构建更有效的AI应用程序,最大限度地发挥LLM的潜力,同时最大限度地减少其局限性。
随着模型不断发展,上下文窗口越来越大、架构越来越复杂,有效的词元管理对于力求创建最先进应用程序的AI开发人员来说仍是一项关键技能。