很多人第一次接触大模型时,会自然地以为:模型像人一样读一句话,先看第一个字,再看第二个字,然后理解整句话的意思。
这个想法只对了一半。模型确实会处理一句话,但它并不是直接“看懂文字”,也不是像人一样在脑子里默读。对模型来说,文字首先要被拆成一小块一小块的符号,这些小块叫 Token。然后模型再通过注意力机制,让每个 Token 去“观察”句子里的其他 Token,判断哪些内容和自己关系更大。
所以,如果只用一句话概括大模型读句子的过程,可以这样说:
模型先把句子拆成 Token,再让 Token 之间互相看一眼,最后形成带上下文的表示。
这篇只讲够用的直觉,不写矩阵乘法,也不展开复杂公式。你只需要理解两个问题:
- Token 是什么,为什么模型必须先分词?
- 注意力机制为什么能让模型理解上下文?
一、模型不能直接读“文字”,它只能处理数字
计算机不能直接理解“模型怎么读句子?”这几个字。它真正能处理的是数字。
所以第一步,是把文字转换成模型能识别的编号。这个过程通常叫 Tokenization,也可以粗略理解成“分词 + 编号”。
比如一句话:
模型怎么读句子?
它不会简单地被模型当成一个完整句子处理,而是可能被拆成类似下面这样的片段:
模型 / 怎么 / 读 / 句子 / ?
也可能被拆得更细,比如:
模 / 型 / 怎么 / 读 / 句 / 子 / ?
具体怎么拆,取决于模型使用的 tokenizer,也就是分词器。不同模型的 tokenizer 不完全一样,同一句话在不同模型里可能会拆成不同 Token。
这就是为什么你有时会看到“一个中文词不一定等于一个 Token”“一个英文单词也不一定等于一个 Token”。Token 不是自然语言里的“词”,而是模型词表里的最小处理单位。
图 1:文字进入模型前,会先被 tokenizer 拆成 Token,并转换成对应的数字 ID。
Token 的意义在于:模型不用直接面对无限复杂的文字,而是面对一个有限的词表。词表里每个 Token 都有自己的编号。模型看到的不是“模型怎么读句子?”,而是一串数字 ID。
你可以把 Token 想象成积木。人类看到的是一句话,模型看到的是一串积木编号。后面所有理解、推理、生成,都是建立在这些积木之上的。
二、Token 不只是切开,它还会被变成“向量”
把文字变成编号,只是第一步。编号本身没有语义。
比如 Token ID 10086,并不天然代表“模型”这个含义。它只是词表里的一个位置。模型真正要使用它,还需要把这个编号转换成一组数字,这组数字通常叫向量。
你可以把向量理解成模型内部的“语义坐标”。
一个 Token 进入模型后,会先被查表,变成一串数字。这个数字串不是给人看的,而是给模型后续计算用的。它可能包含很多维度,每个维度都记录某种抽象特征。
比如“苹果”这个 Token,在不同语境里可能指水果,也可能指公司。刚进入模型时,它还没有完全确定是哪一种意思。只有结合上下文,它的含义才会逐渐变清楚。
这就引出第二个关键机制:注意力。
三、注意力机制:让每个 Token 环顾上下文
如果模型只是把一句话拆成 Token,然后逐个处理,就会遇到一个大问题:上下文丢了。
看这个句子:
苹果发布了新芯片。
这里的“苹果”大概率是公司。
再看这个句子:
苹果放久了会变软。
这里的“苹果”大概率是水果。
同样是“苹果”,含义完全不同。区别来自哪里?来自旁边的词。
“发布”“新芯片”让我们想到公司;“放久了”“变软”让我们想到水果。人类理解句子时,会自然地看上下文。模型也需要类似能力。
注意力机制解决的就是这个问题:让每个 Token 在理解自己时,可以参考句子里的其他 Token。
这里不要把“注意力”理解成人类意识里的注意力。它不是模型真的在专心思考,而是一种计算机制:模型会为 Token 之间的关系分配不同权重。
比如在“苹果发布了新芯片”里,“苹果”可能会更多关注“发布”“芯片”;在“苹果放久了会变软”里,“苹果”可能会更多关注“放久了”“变软”。
注意力不是平均看所有词,而是判断:哪些词对当前 Token 的含义更重要。
四、K、Q、V 的直觉:每个词都在提问,也都在回答
讲注意力时,经常会看到三个缩写:Q、K、V。
很多资料会直接进入 Query、Key、Value 的矩阵计算,但对入门读者来说,先抓住比喻更重要。
你可以把一句话想象成一个小会议室。句子里的每个 Token 都是参会者。每个参会者会做三件事:
第一,提出问题。
这就是 Q,也就是 Query。当前 Token 会问:“我现在要理解自己,应该关注谁?”
第二,亮出标签。
这就是 K,也就是 Key。其他 Token 会展示自己的信息标签,告诉大家:“我可能和什么问题相关。”
第三,提供内容。
这就是 V,也就是 Value。其他 Token 不只是有标签,还带着真正可被参考的信息。
于是,一个 Token 在理解自己时,会拿自己的问题 Q,去匹配其他 Token 的标签 K。匹配度越高,就说明对方越值得关注。然后它再按重要程度,从其他 Token 的 V 里吸收信息。
最后,这个 Token 得到的就不再是孤立含义,而是融合了上下文的新表示。
图 2:可以把注意力理解成一场 Token 会议:当前 Token 提问,其他 Token 用 Key 和 Value 提供可参考的信息。
这个比喻虽然不精确,但很有用。它能帮你记住注意力机制的核心:
每个 Token 都会主动寻找和自己有关的信息,然后把这些信息按权重融合进来。
五、注意力让模型理解“关系”,而不是只记住词
为什么注意力机制这么重要?因为语言不是词的堆积,而是关系的组合。
看两个句子:
小明批评了小王。
小王批评了小明。
这两句话用到的词几乎一样,但意思相反。关键区别在于谁是动作发出者,谁是动作承受者。
模型要理解这种区别,不能只知道“小明”“小王”“批评”这几个 Token 出现了。它还要知道这些 Token 之间的关系。
注意力机制正是用来建模这种关系的。
在不同层里,模型可能会关注不同类型的信息。有的注意力头可能更关注主语和谓语的关系,有的可能更关注代词指代,有的可能更关注句子里的时间、地点、条件。
当然,我们不需要把每个注意力头都解释清楚。对应用开发者来说,够用的理解是:
注意力机制让模型不只是看到词,还能看到词和词之间的关联。
这也是为什么大模型比早期很多文本模型更擅长处理长句、复杂语境和多轮对话。
六、它对提示词有什么实际影响?
理解 Token 和注意力,不只是为了懂原理,也能帮你写出更好的提示词。
第一个影响是:提示词越清楚,模型越容易建立正确关联。
比如你直接说:
帮我优化一下。
模型不知道你要优化什么,是优化代码、标题、语气,还是方案结构。
如果你说:
请把下面这段公众号文章开头优化得更适合技术读者,要求少一点营销味,多一点问题意识。
这时,“公众号文章开头”“技术读者”“少营销味”“问题意识”这些 Token 会相互提供上下文,模型更容易判断你真正想要什么。
第二个影响是:相关信息尽量放在一起。
模型虽然可以处理长上下文,但注意力不是魔法。信息隔得太远、结构太乱、要求互相冲突,都会提高理解难度。
写提示词时,可以把任务、背景、约束、输出格式分开写。这样模型更容易建立稳定的注意力关系。
比如:
任务:把下面内容改写成技术公众号文章。
读者:有编程基础,但不熟悉大模型原理。
要求:逻辑清晰,不写复杂公式,多用比喻。
输出:标题 + 正文 + 小结。
这种结构化写法,本质上是在帮模型减少歧义。
图 3:一句话进入模型后,会经历文本、Token、向量、注意力融合,最后形成带上下文的信息表示。
七、用一段极简代码看 Token
如果你想让读者直观看到 Token,可以放一段非常短的代码。它不负责解释注意力,只用来证明:模型看到的确实不是原始文字,而是一串 Token 和 ID。
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("Qwen/Qwen2.5-0.5B-Instruct")
text = "模型怎么读句子?"
tokens = tokenizer.tokenize(text)
ids = tokenizer.encode(text)
print(tokens)
print(ids)
print(tokenizer.decode(ids))
运行后,你会看到类似这样的结果:
['模型', '怎么', '读', '句子', '?']
[xxxxx, xxxxx, xxxxx, xxxxx, xxxxx]
模型怎么读句子?
具体输出不一定和这里完全一样,因为不同 tokenizer 的切分规则不同。重点不是记住某个 ID,而是理解这个过程:
文字先变成 Token,Token 再变成 ID,ID 再进入模型计算。
小结
这篇可以先记住三个结论。
第一,Token 是模型处理语言的基本单位。它不等同于中文词,也不等同于英文单词,而是 tokenizer 根据词表规则切出来的片段。
第二,模型不能直接处理文字,它处理的是数字。文字会先被切成 Token,再被转换成编号和向量。
第三,注意力机制让每个 Token 都能参考上下文。通过“提问、匹配、吸收信息”的过程,模型把孤立 Token 变成带上下文的表示。
所以,大模型所谓“读懂一句话”,并不是像人一样默读和理解,而是经历了一个计算过程:
文本 → Token → 数字 ID → 向量 → 注意力融合上下文 → 下一步生成
理解了这一步,后面再看“模型为什么是在预测下一个词”“温度和 top_p 为什么会影响回答风格”“为什么上下文太乱会导致模型跑偏”,就会顺很多。
下一篇,我们就可以接着讲:模型拿到这些带上下文的信息之后,是如何从“猜下一个词”一步步生成完整回答的。