译者 | 布加迪
审校 | 重楼
大语言模型(LLM)已彻底改变了机器理解和生成人类语言的方式,幕后支持从聊天机器人到内容生成器的各种应用。其出色功能背后是每个开发人员都应该理解的一个基本概念:词元。这个基本单元直接影响使用LLM时的模型性能和成本。本文探讨了什么是词元、词元在LLM中的功能以及为什么理解分词对于高效实施AI至关重要。
了解大语言模型词元
在AI和自然语言处理中,词元是模型处理的文本的基本单位。不像人类将文本读取成连续字符流,LLM 将输入文本分解为名为词元的小段。词元可以是整个单词、单词的一部分、单个字符,甚至标点符号或空格。
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的首选方法。
单词vs词元
词元是LLM处理的基本单位,而单词是语言单位。词元可以是整个单词、单词的一部分、字符或标点符号。在英语中,一个单词平均等于大约1.3个词元,但这因语言和分词方法而异。
不同分词方法的例子
考虑不同的分词器如何处理单词“internationalization”:
- 基于单词的分词器可能将其视为单个词元(如果已知)或将其标为[UNK](未知)。
- 基于字符的分词器会将其分解成20个单独的字符。
- 子词分词器可能会将其拆分成[“inter”、“national”、“ization”],以识别常见的形态单位。
这些差异表明了分词为何很重要——选择会影响模型处理文本的效率以及它们如何处理不熟悉的单词或表达。
常见的分词工具
几个工具和库可以帮助开发人员实现分词:
- NLTK和spaCy:拥有基于单词的基本分词器的流行NLP库。
- SentencePiece:支持BPE和Unigram分词方法的谷歌库。
- Hugging Face分词器:高效实现了各种分词算法。
- OpenAI的Tiktoken:针对OpenAI的模型(比如GPT-3和GPT-4)优化的快速分词器。
- 针对特定语言的分词器:比如面向日语的Mecab或面向其他语言的专用工具。
词元限制和模型约束
每个语言模型都有预定义的词元限制,为输入和输出建立了界限。这种约束定义了“上下文长度”,即模型在单个操作中可以处理的词元数量。比如说,拥有2048个词元上下文长度和500个词元输入的模型可以生成最多1548个词元的响应。这种限制是由于计算约束、内存限制以及架构设计选择而存在的。
了解这种界限至关重要,因为超出界限可能会导致响应被截断、信息丢失或模型错误。随着上下文窗口逐渐扩大,模型不断发展,但遵循词元限制有效运作仍然是LLM开发人员的一项基本技能。
词元限制如何影响性能?
词元限制直接影响LLM维护上下文和生成连贯响应的能力。当输入接近或超过这种限制时,模型可能会丢失文本中先前呈现的信息,从而导致准确性下降、细节被遗忘或输出相互矛盾。有限的词元上下文尤其会阻碍需要长期推理、解决复杂问题或参考整个文档中信息的任务。
此外,不同的分词方法会影响文本的编码效率——低效的分词导致词元的浪费,这些词元会计入上下文限制,却不添加有意义的信息。了解这些性能影响有助于开发人员设计更有效的提示和交互。
优化词元使用的几个策略
有效的词元优化始于设计简洁清晰的提示,以消除冗余和不必要的细节。开发人员可以在适当的情况下使用缩写、删除重复信息以及将查询重点放在特定点而不是广泛的主题上,以此减少词元的使用。使用后续问题而不是冗长的单个提示来构建交互可以最大限度地提高上下文利用率。
采用分块(将内容分成更小的段)等技术有助于在处理大型文档时管理词元约束。选择词元方法更高效的模型,并监测成本敏感型应用的词元使用情况,可以显著降低运营费用,同时保持输出质量。
实践中的LLM分词
从聊天机器人到内容生成系统,分词影响与LLM的每次交互。了解其实际意义有助于开发人员创建更有效的AI应用程序。
AI应用中分词的例子:
- 聊天机器人和虚拟助手:分词用户查询和以前的对话历史记录,以保持上下文。
- 机器翻译:分词源文本,在语言之间映射词元,并生成翻译输出。
- 文本摘要:将文档分解成词元,以识别要提取或抽象的关键信息。
- 代码完成:使用可以理解编程语言语法的专用分词器。
分词对SEO和内容创建的影响
使用LLM创建内容时,分词会影响以下几个方面:
- 内容长度和结构:词元限制可能需要将内容分解成部分或规划多部分生成。
- 关键字使用:了解如何分词特定术语有助于确保它们在生成的内容中完整显示。
- 内容规划:有效的提示需要了解不同指令的分词效率。
流行的分词算法及差异
现代LLM通常使用子词分词算法,每种算法都有不同的方法:
- 字节对编码(BPE)
字节对编码从单个字符入手,并迭代合并最常见的相邻词元对,直至达到目标词汇量。这种数据驱动的方法可以有效地处理常见单词,同时仍能够表示罕见术语。OpenAI的GPT模型使用BPE的变体。
- Unigram语言模型
Unigram分词采用一种概率方法,从许多候选词元入手,并迭代删除对生成训练文本的可能性影响最小的词元。这样可以创建更具有语言意义的词元。
- WordPiece分词
WordPiece是为BERT开发的,与BPE相似,但优先考虑最大化训练数据可能性的合并,而不仅仅是频率。它通常用特殊前缀(比如BERT中的“##”)标记子词单元,以表示单词连续。
Tiktoken(OpenAI 的分词器)
OpenAI为GPT-3.5和GPT-4等模型定制的分词器实现了BPE,并针对速度和效率进行了优化。它处理多语言文本、特殊字符和多种格式,同时保持可逆性(词元可以完美地转换回原始文本)。
结论
词元构成了大语言模型理解、处理和生成文本的基础。理解分词不仅仅具有学术意义,它还直接影响应用程序的效率、成本管理和输出质量。如果掌握分词概念和优化策略,开发人员可以构建更有效的AI应用程序,最大限度地发挥LLM的潜力,同时最大限度地减少其局限性。
随着模型不断发展,上下文窗口越来越大、架构越来越复杂,有效的词元管理对于力求创建最先进应用程序的AI开发人员来说仍是一项关键技能。
原文标题:What Is an LLM Token: Beginner-Friendly Guide for Developers,作者:Janakiram MSV