资讯动态

Token是什么?从信息论与计算理论拆解大模型里的可计算信息符号

发布时间:2026/10/16 12:23:22 来源:尧图企业网站定制
最近总有朋友拿同一个问题来问我Token到底是个什么东西是单词吗是半个词是计费单位还是某种被包装出来的智能原子问的人一多我意识到一件事Token正在从一个分词技术里的内部数据结构升级成AI热潮里的玄学名词。有人叫它智元说它是智能的最小单元有人拿它当资产计价单位恨不得给每次对话都贴上价格标签。今天我想做的就是顺着信息论和计算理论这两条主线——从香农那一侧到图灵那一侧——把Token的华丽外衣剥掉看看它的真名到底是什么。先说结论省得大家被后面的数学绕晕Token的真名叫可计算的信息符号。它身上同时流淌着两股血统一股来自信息论里的信息量另一股来自计算理论里的离散符号。理解了这两条线索你就能看穿绝大多数关于Token的营销话术也能在模型选型和调参的时候多一整套判断工具。1. 智元叙事是怎么把Token包装成玄学的我无意批评任何具体的产品或者公司但智元这个说法本身非常值得拆一拆。你想一个词能把智能和基本单元焊在一起听起来天然就有说服力既然物质由原子组成生命由细胞组成那智能凭什么不能由某种智元组成这种类比非常顺滑也非常危险。它把一个工程概念悄悄提升成了本体论概念仿佛只要抓住了Token就抓住了智能的起源。这种包装路径我称之为造词运动通常分三步走。第一步给Token换一个更性感的别名比如智元智能原子认知微粒第二步把这个别名和模型效果绑定话术往往是我们基于XXX实现了类人推理第三步引入稀缺性叙事把Token和算力、成本、配额绑定让它看起来像一种可以交易、可以囤积的资源。三步走完一个分词器产出的整数ID序列就变成了数字世界的石油。问题是包装虽然是营销层面的但听多了之后连做技术的人都会开始怀疑自己。我见过不止一次团队在讨论需求时冒出这样的句子这个任务的难点在于模型要在Token层面理解用户意图。每次听到这句话我都想问Token层面有意图吗没有。Token上只有离散符号意图是符号在高维空间中被上下文激发出来的整体效应。就像字母里没有诗意诗意是单词和句子的组合产生的Token里也没有智能智能是符号变换过程整体涌现的。所以在进入理论之前第一刀必须先砍向下一个Token预测的神话。大语言模型的训练目标归纳起来就是一句话给定前面的Token序列预测下一个Token的概率分布。这句话太朴素了朴素到很多人不愿意相信它是全部。于是有了各种升级版的说法预测下一个Token就是在压缩世界预测得足够好就会涌现世界模型。这类论调我不会全盘否定它确实部分解释了为什么简单目标能带来复杂行为。但请注意统计力学里的微观规则也很简单分子的位置和速度服从牛顿定律可没有人会把单个分子的坐标叫智慧。Token就是那个分子你可以感叹温度、压强这些宏观量的涌现但温度不在分子里智能也不在Token里。把预言下一个符号当成炼丹秘方是当前AI圈最划算的概念生意。因为它无法被证伪任何模型效果都可以归因到预测下一个Token这个目标的伟大而任何失败都可以归因到Token还不够多、上下文还不够长。这样一来Token就被架到了一个不可质疑的位置成了所有问题的答案同时也是所有问题的遮羞布。2. 香农这一侧Token首先是概率世界里的信息度量子现在我们把智能两个字放到一边回到Token的第一个出生地信息论。信息论奠基人给出的核心洞察说出来可能让很多人失望信息量跟意义没关系。一条消息携带多少信息取决于接收者有多难猜到它而不取决于这条消息有多重要。天气预报说明天太阳会升起你一点都不意外所以熵几乎为零天气预报说明天可能下雪概率四成你感到不确定这才有信息量。这个视角对Token至关重要。因为Token在模型眼里并不是一个有含义的单词而是一个离散符号随机变量。模型面对的任务本质上是在估计下一个符号的分布P(x_t | x_t)。它对你文本的理解全部坍缩为对条件概率的建模。所以要搞懂Token必须先搞懂熵这个度量。2.1 熵到底在说什么信息量等于意外程度用一句话解释熵它量化的是一个系统的平均意外程度。对于一个随机变量X如果它取每个值的概率是p(x)那它的熵就是H(X) -Σ p(x) log₂ p(x)公式看着吓人逻辑其实很朴素。某个结果x越罕见p(x)越小它所携带的信息量 -log₂ p(x) 就越大熵就是把所有可能结果的信息量按概率加权平均。如果某个系统只有一个确定结果p(x)1那熵就是0因为一切尽在掌握没有任何意外。如果系统有一百种等概率结果你平均需要log₂100≈6.64个二进制位才能描述其中一个结果熵就是6.64比特。我经常用掷硬币帮人建立直觉一枚均匀硬币的熵是1比特因为你只需要一个二进制位来表达结果正面/反面如果这枚硬币被做了手脚90%出正面那熵就大幅下降因为大多数情况下你猜正面就能命中意外很少。Token序列的熵也是同一个道理一段写满哈哈哈哈的文本熵极低一段信息密集、用词多变的文章熵很高。模型预测后者的难度天然比预测前者大很多。2.2 用一段Python亲手算一遍文本的熵是多少概念说多了没用我们直接上代码。这里做一个字符级熵计算用最简单的频率估计概率看两段文本的信息量差异import math from collections import Counter def entropy(text): if not text: return 0.0 freq Counter(text) total len(text) ent 0.0 for count in freq.values(): p count / total ent - p * math.log2(p) return ent text_repetitive aaaaaaabbbbbbbccccccc text_diverse the quick brown fox jumps over the lazy dog dog dog print(f重复文本熵: {entropy(text_repetitive):.4f} 比特) print(f多样文本熵: {entropy(text_diverse):.4f} 比特)重复文本里只有三种字符分布相对集中算出来的熵会显著低于多样文本。这个数字差异就是意外程度的差异。你把同样的思路从字符换成Token从这段文字换成整个训练语料逻辑完全不变模型训练时其实一直在做一件事把高熵文本的Token序列变成尽可能低的交叉熵。它学习的是如何减少意外。2.3 大模型训练目标让下一个Token的交叉熵变小语言模型的标准训练目标是最大化整个序列的联合概率等价于最小化平均负对数似然。写成损失函数就是交叉熵L -Σ log P(x_t | x_t)为什么叫交叉熵因为模型拿自己估计的分布q去逼近语料里真实的分布p。两者之间的差距一部分是真实分布自身的熵H(p)一部分是模型分布和真实分布的偏差KL散度。交叉熵 熵 KL散度。模型训练就是在拼命压缩KL散度那一项。当模型学得足够好交叉熵会逼近语料本身的熵——注意不是降到0而是逼近一个下界。语料本身有多难预测决定了模型再强也有天花板。所以从香农这一侧看Token的本质清晰了一半Token是一个可以被赋予概率的离散符号它的信息价值不是来自含义而是来自不确定性。一个Token如果永远确定地跟在某段上下文后面它对模型来说就没有信息增益一个Token越是出人意料越能带来学习信号。理解了这一点你再看那些Token是智能原子的说法就会发现它们恰恰把因果关系搞反了Token不是智能的源头Token是智能系统用来量化和处理不确定性的筹码。3. 图灵这一侧Token同时是状态机里被操作的符号如果说香农给Token配上了概率这块拼图那图灵给Token配上的就是计算这块拼图。计算理论的核心思想是把一切计算过程还原为对离散符号的机械操作。这个概念太重要了它直接决定了Token在模型里承担的角色。3.1 图灵机把计算还原成了符号搬家想象一条无限长的纸带上面画着一个个格子每个格子里写着一个符号有一个读写头每次只能读当前格子的符号擦掉或者写上新的符号然后向左或向右移动一格还有一张规则表告诉机器处于某个状态、读到某个符号时应该做什么动作。这套思想实验就是图灵机。它的惊人之处在于没有一个理解符号含义的组件机器只是严格按规则在符号之间跳转但就是这种纯粹的符号搬家被证明能够计算所有可计算函数。为什么对理解Token有启发因为大语言模型虽然和图灵机不是一回事但它在离散符号输入、离散符号输出这个框架上和图灵机完全同构。模型收到的是一串Token ID输出也是一串Token ID。中间层哪怕全是浮点向量运算最外面这层边界仍然是符号操作。图灵机告诉我们计算可以在完全没有语义理解的情况下发生。Token作为一个符号不需要拥有意义只需要能被机械地变换。这里有个很重要的推论符号操作可以表现出语义但语义不是符号的属性而是操作过程的结果。就像国际象棋的棋子在规则表里只是车马象的代号没有任何战略意图。但一场高水平的对局能展现出深远的战略这战略藏在棋子的移动过程中不在棋子本身上。Token在Transformer中获得语义身份同样是在注意力机制的交换过程中形成的不是Token自带的。3.2 自回归生成一个极简下一个符号模拟器读到这里可能还是有人觉得抽象。没关系我们用几十行代码构造一个极简的自回归预测器。它用马尔可夫链模拟根据前文预测下一个符号虽然简单到可笑但骨架和真正的大模型是一致的import random from collections import defaultdict class TinyNextSymbolPredictor: def __init__(self, corpus, order2): self.order order self.table defaultdict(list) for i in range(len(corpus) - order): context corpus[i:iorder] next_symbol corpus[iorder] self.table[context].append(next_symbol) def predict_next(self, context): candidates self.table.get(context, []) if not candidates: return None return random.choice(candidates) corpus the quick brown fox jumps over the lazy dog the quick brown fox jumps model TinyNextSymbolPredictor(corpus, order3) ctx the qui print(model.predict_next(ctx)) # 大概率输出 c这段代码做的事叫作给定前3个字符统计后一位字符的经验分布再采样。真正的语言模型把统计频次换成了神经网络参数化一个条件概率分布把前3个字符换成了上下文窗口内所有Token通过注意力融合后的表征。但宏观骨架没有变读入离散符号序列建模条件分布输出下一个符号的分布。我特别喜欢拿这个例子提醒团队里的人当你说模型在理解文本时不妨想想这个10行代码的玩具预测器。它不理解任何东西但它也在预测下一个符号。大模型和它的区别是规模和拟合能力是表征空间的连续性是长程依赖的建模方式而不是某种额外的灵魂。Token在这两种系统里扮演的角色完全一致它是被操作的符号。3.3 离散符号与连续空间的夹缝LLM真正干活的地方当然如果大模型真的只是一台概率化图灵机就没必要有几千亿参数了。它真正特别的地方在于把离散符号投影到连续向量空间在高维空间里做计算最后再映射回离散符号空间。这个过程可以简单描述为三跳第一跳嵌入每个Token ID查表变成一个高维向量。这个向量不在符号意义上代表Token而是一个语义坐标的起点。第二跳注意力与多层变换每个Token的向量和其他Token的向量做交互信息沿着整个序列流动输出一个融合了上下文的新向量。第三跳解码最后把向量映射到词表维度得到每个Token的概率然后采样选出一个新Token。有意思的地方在于真正的智能行为发生在连续空间的第二跳但系统的输入和输出都是离散符号也就是Token。这带来了一个长期争论LLM到底是在做符号操作还是在做分布式表征计算我的看法是Token作为离散边界保证了系统能和外界交换可枚举的符号让图灵式计算框架可以套用而中间的连续空间让符号之间的相似性、类比性可以被学习让香农意义上的概率估计变得平滑。Token恰恰站在离散与连续的交界处这是它作为可计算符号的物理位置。4. Token的真名是可计算的信息符号三路证据前面的分析都还是引子这一节来正面回答标题提出的问题Token的真名为什么只有一个为了讲清楚我从三个方向给证据每个方向都能从工程实践中得到验证。4.1 从分词器到嵌入表Token被计算化的第一站Token的第一站是分词器。现在主流使用的BPE分词算法核心操作只有一条不断统计相邻符号对出现的频次把最高频的一对合并成一个新符号。这个过程不断重复直到词表大小达到预设值。注意BPE从头到尾都是频次统计没有任何语义判断。它不知道apple是苹果它只知道app和le经常挨在一起合并起来能降低序列长度。这说明什么说明Token的划分边界不是语言学边界而是统计优化边界。分词器追求的目标是用有限的词表覆盖尽可能多的文本同时让Token序列尽量短、尽量少出现未登录词。这个目标完全是信息论的编码思想。你可以把BPE理解成在给文本做一种变长编码高频组合用短编码罕见词拆成小块。Token不是词不是语素它是在给定词表预算下统计上最划算的符号颗粒。这也解释了为什么同一个词在不同分词器里会被切成不同样子。英文单词unhappiness可能被切成unhappiness也可能被切成unhappiness全看词表合并的历史过程。没有哪一个是正确的切法只有统计效率的不同。一个没有内在语义含义的、完全由统计规则决定的可操作符号这正是可计算符号的第一条证据。4.2 注意力机制为每个Token分配三种角色Token进入模型之后还发生了一件值得细品的事在注意力机制里每个Token同时扮演三种角色。它输出一个Query查询向量去询问其他Token提供一个Key键向量让别人来匹配它还提供一个Value值向量把它携带的信息交给匹配者。用大白话说每个Token既在向序列提问也在回答别人的问题还在贡献自己知道的信息。这种设计最深刻的地方在于Token的身份不是固定的。同一个Token放在不同上下文里它贡献的信息权重完全不一样。句首的苹果和句尾的苹果在向量空间里的表征会因为注意力交互而大幅分化。Token的意义是上下文通过计算赋予它的它不是从词表里带出来的静止含义。这一点直接把Token等于语义单元的说法按在地上摩擦。如果Token本身携带固定语义那它就不需要这么复杂的交互机制了直接查表就好。但事实上词向量只是起点真正决定Token语义的是它和其他Token的交互路径。整个注意力计算本质上是在对一组离散符号做关系推断符号本身是一堆可被查询、匹配、贡献的向量完全服务于计算而不是服务于某个固定含义。4.3 拆穿误读一张表看清Token不是什么我把市面上常见的Token误读列了一张表方便大家对照自查常见说法错在哪里Token就是单词BPE会把常见词切成子词也会把生僻词拼成整块划分依据是频率不是词边界Token就是语义单元大量Token没有独立语义语义是上下文交互中涌现的Token是智能原子Token不携带智能智能体现在符号变换的全过程Token是数字资产或货币计费只是商业规则Token本身没有经济学属性Token越少越好不一定信息含量低的冗余Token可以删但高信息量的Token是必要的预测下一个Token就能产生理解预测是手段理解如果有的话是在表征空间中形成的整体效应做项目的时候我们经常会被Token越多越贵这类焦虑绑住手脚。但从信息论视角看真正应该关心的是每个Token给模型带来了多少边际信息。如果一个上下文明确告诉模型接下来要处理的是退货请求那这句话里的每个Token都降低了后续预测的不确定性是值得的如果喂进去几百个字的背景介绍和当前任务毫无关联那它们只是给模型增加了噪声和成本删掉反而更好。4.4 为什么真名只有一个现在可以缝合了。香农那一侧给出了信息的定义离散符号携带的量取决于它的概率分布和不确定性。图灵那一侧给出了计算的定义离散符号可以被规则机械地变换。Token恰好同时满足这两个定义它是一个离散符号可以被赋予概率、参与信息度量的计算它也是一个可操作符号可以进入状态转移过程、参与符号变换。把它合在一起就是可计算的信息符号。这个词比智能原子准确得多也冷静得多。称它可计算是因为Token的全生命周期都发生在计算流程里分词器统计生成、嵌入层映射、注意力加权、softmax采样。称它信息是因为它的功能是量化不确定性降低模型对下一个符号的意外程度。称它符号是因为它凌驾于连续向量之上保持离散边界让系统可以无限复用地进行符号级输入输出。智能不是Token的属性智能是可计算的信息符号在规模足够大的变换网络中涌现出来的系统性质。5. 认清真名的实用价值选型、调参与成本判断理论讲完说点对实际干活有帮助的。认清了Token是可计算的信息符号之后很多工程决策会变得清晰起来。下面这几件事是我在项目里真实踩过坑才总结出来的。5.1 用困惑度给模型的意外程度打分评估语言模型最经典的信息论指标是困惑度Perplexity它的定义非常朴素困惑度 2^交叉熵。如果模型对下一个Token的平均不确定性是2比特那困惑度就是4意味着模型面对下一个Token时平均需要从4个等概率候选中猜测。困惑度越低模型的意外程度越小。你完全可以用一个简单的二元语法模型在自己领域的语料上算困惑度作为选型前的快速摸底import math from collections import defaultdict, Counter def train_bigram(corpus): model defaultdict(Counter) tokens corpus.split() prev s for tok in tokens: model[prev][tok] 1 prev tok model[prev][/s] 1 return {ctx: {w: c / sum(cnt.values()) for w, c in cnt.items()} for ctx, cnt in model.items()} def perplexity(text, model): tokens text.split() log_prob_sum 0.0 n 0 prev s for tok in tokens: dist model.get(prev, {}) p dist.get(tok, 1e-6) log_prob_sum math.log2(p) n 1 prev tok return 2 ** (-log_prob_sum / n) model train_bigram(the quick brown fox jumps over the lazy dog * 50) print(perplexity(the quick brown fox, model))这个数字虽然是玩具级的但它给了你一个信息论意义上的基线如果你的任务领域和通用语料差异很大通用大模型的困惑度很可能不理想。更好用的做法是拿一批业务样本分别用候选模型算平均条件概率比较哪个模型在面对你的真实文本时更不意外。注意困惑度低不代表生成质量一定高它可能只是更保守、更爱说套话但这个指标作为筛选工具比单纯看宣传参数要可靠得多。5.2 上下文窗口与Token成本信息量的算账逻辑Token成本是很多团队绕不开的坎。计算规则本身很简单每次调用的成本 ≈ 输入Token数 × 输入单价 输出Token数 × 输出单价。但真正值得琢磨的是这些Token到底提供了多少信息量我见过太多人盲目堆上下文把整个历史对话、几十页文档一股脑塞进去理由是让模型了解全部背景。但从信息论角度看如果那些历史内容对预测当前任务没有帮助它们就没有降低不确定性只增加了序列的熵和计算负担。我在实际项目里有个习惯开工前先画出信息流图。把调用链路上每一个Token来源拆开问它三个问题它是否直接影响最终输出如果去掉它输出会有多大变化它对降低下一个Token的意外程度贡献了多少很多团队做完了这个审计会发现所谓的超长上下文里真正有信息增益的部分可能只占一小部分。这时再决定是截断、检索还是全量输入成本判断就清晰了。另外要注意上下文长度的增加不只是钱的问题它还会影响模型的行为分布。序列越长注意力分布越容易被稀释中间位置的Token越容易被淡忘。在项目里把关键指令放在开头和结尾把冗长背景放在中间往往比一股脑堆砌更稳妥。这本质上是利用Token的信息量排序让高信息量的Token占据注意力优势。5.3 采样温度在确定与随机之间选一个熵值采样温度是这个话题里最直观的熵旋钮。softmax温度公式是p_i exp(z_i / T) / Σ exp(z_j / T)T1时是原始概率分布T趋近0时概率分布被锐化成接近one-hot模型几乎总选最高概率的Token输出序列的熵趋近0T越大分布越平坦低概率Token也有机会被选中输出熵变大。这个旋钮调节的不是创造性这种玄学它调节的正是输出分布的香农熵你希望模型在每一个决策点上保留多大程度的意外。在项目里我是这样用的做结构化输出、代码生成、数据抽取这类任务T设在0.1到0.3之间尽量降低意外保证稳定做头脑风暴、文案扩展这类任务T放到0.8到1.2之间让模型偶尔跳出高概率路径有些需要长时间连贯性的场景我还会配合top_p设置一个概率质量截断比如0.9把长尾的低质量Token直接挡在外面。信息论视角的提醒是如果你发现某个任务无论怎么调温度都效果差问题的根源很可能不在采样而在于前面的符号变换阶段——模型根本没有在它的表征空间里把任务对齐好。5.4 三条选型建议最后给三条务实的选型建议都是基于Token是可计算信息符号这个定性推导出来的。第一评估模型先评估它在你的语料上的条件概率质量。别只在通用benchmark上看分数拿你的业务数据算一遍困惑度或者平均对数概率差距立刻显现。第二警惕把Token数量当成质量指标。有些模型词表切得碎同样的文本产生更多Token成本看着高但对生僻术语的覆盖可能更好词表大、Token省不代表理解能力强。第三把上下文管理当工程来做。决定给模型喂什么Token、喂多少、按什么顺序喂本身就是一次信息设计值得投入人力。这些经验说来简单但每一个都来自真实的调试痛苦。我见过有团队为了省一点Token成本把关键指令截断了结果输出一塌糊涂也见过有团队疯狂堆长上下文模型反而被无关信息带偏。理解了Token的信息本质这类问题就不再是玄学而是可计算的取舍。6. 剥掉外衣之后Token还剩下什么写到这里我们剥掉了智元的华丽外衣从香农的信息度量走到图灵的符号计算最后落在一个朴素的定义上Token是可计算的信息符号。它不携带智能不代表语义不是货币更不神秘。它是分词器基于统计切出来的离散单元是模型用来交换概率和计算信号的边界符号。我个人在实际操作中的体会是把Token当成可计算的信息符号看待能让人少踩很多坑。至少当我再看到某个产品宣称自己是基于智能原子做出来的我不会急着掏钱而是会先问三个问题你的Token是怎么切出来的你的模型在业务语料上的困惑度是多少你在符号变换的哪一层做了关键优化能答上来这三个问题的团队才是真正在做技术答不上来的基本在讲叙事。技术在往前走新的名词还会不断冒出来但糖衣下面的内核不会变。香农和图灵在几十年前就替我们把问题想明白了信息可以度量符号可以计算。Token只是把那两套老智慧在当代硬件上重新实现了一遍而已。以后再听到任何关于Token的宏大叙事你都不妨回到这个真名上来——它的全部职责就是做一个既可以被度量、又可以被操作的符号仅此而已。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑