大语言模型是怎么理解文本的?

AI听到的"你好",和你想的完全不一样
你打完"你好"两个字,AI秒回了一句"你好呀!"。你以为它和你一样,看见了"你"和"好"两个字?
不是的。
在AI的"眼里",你的"你好"是一串数字。大概是[2034, 5678]这样的一组编号。再过一会儿,这串数字被转换成一种更复杂的表示——一个你根本看不懂的多维向量。但就是这个向量,让AI"理解"了你是在打招呼。
这个把文字变成数字的过程,就是今天的主题:大语言模型是怎么理解文本的?
AI分词的方式,和你想的不一样
先问个问题:"unhappiness"这个词,你会怎么拆?
按人类的方式,可能就是u-n-h-a-p-p-i-n-e-s-s,11个字母一口气记住。但AI不这么干。
AI会把它拆成"un"+"happi"+"ness"。
为什么这么拆?因为"un"通常表示"不","ness"通常表示名词,"happi"是"happy"的变形。这就像你学英语时老师教的词根词缀记忆法——AI也在用同样的思路。
这种拆分方式有个名字,叫"子词级分词"。现代大语言模型基本都用这套。
好处是什么?你写错了也不容易崩。你写"unhapiness"少打了个p,AI照样能猜到你想说的是什么。但你要是按字母拆,o和0、l和1分不清,模型就彻底懵了。
具体怎么拆,业界主要有两种玩法。
第一种叫BPE,字节对编码。听起来高大上,其实原理很简单。
想象你有一堆积木,最开始全是单块。模型开始"搭积木":统计哪些块经常挨在一起,就把它们粘成一块新的。"a"和"p"老是凑一块?那就合并成"ap"。"ap"和"p"又经常出现?那就继续合并成"app"。
GLM就是用的这套方法。
第二种叫SentencePiece。更加直接粗暴,直接从原始文本里训练,不用预设什么规则。Qwen系列模型在用这个。
两种方法的本质一样:在"记住高频模式"和"处理新词汇"之间找平衡。词表太小,未知词就多;词表太大,模型负担就重。
Token到数字:身份证号还不够用
分完词,下一步是给每个词块分配编号。
"hello"是2034,"world"是5678,"!"是99999……这个编号表就是"词表"。ChatGPT的词表大概有10万个token,GPT-4更夸张,有超过10万个。
但光有编号还不行。
2034只是个代号,模型需要的是更丰富的信息。于是就有了"词向量嵌入"——把每个token变成一个高维向量。
怎么理解这个概念?
Token ID像是身份证号,只有"这是谁",没有"这个人什么样"。词向量更像是档案——包含身高、体重、性格、爱好等所有信息。只不过向量里的"信息"是数字,对AI来说有意义的数字。
"love"这个token,会变成一个1536维的向量,大概长这样:[0.2, -0.5, 0.8, -1.2, ...]。
为什么要这么多维度?因为维度越高,能表达的信息就越丰富。就像你描述一个人,10个形容词比2个形容词更立体。
注意力机制:让AI学会看上下文
到这里,每个token都有自己的向量了。
但有个问题:单独看每个词的向量够吗?
不够。"The bank by the river"——这个"bank"是银行还是河岸?"I feel very apple"——这话说得通吗?
人类靠上下文判断。AI也得学这一招。
这就引出了Transformer架构的核心——自注意力机制。
原理很直观:让每个token"看看"句子里的其他token,问问自己应该多关注谁。
"bank"这个token,在自注意力层里会"回头看":前面有"by",后面有"river"。哦,大概率是河岸的意思。
注意力机制会计算每个token和其他token的"相关度",相关度高的就连线更紧密。最终输出的是一个"上下文表示"——综合了整个句子甚至整篇文章的信息后的向量。
这就是为什么AI能理解"他苹果我香蕉"这种奇怪的语法,因为它看的不是孤立的词,而是词和词之间的关系。
完整流水线:文字是怎么变成AI能懂的向量的
来串一下整个流程。
你输入"Hello, how are you?"
第一步,Tokenization,分词。变成["Hello", ",", "how", "are", "you", "?"]。
第二步,ID映射。每个token找到自己的编号。
第三步,词向量嵌入。编号变成高维向量。
第四步,注意力机制。每个token看看周围,生成上下文表示。
第五步,输出。模型拿到这组向量,才能决定该回复什么。
这条流水线,把人类语言和机器语言打通了。
所以LLM能写诗、能翻译、能编程——本质上都是因为这套表示够好用。它把语言里的语义、语法、逻辑关系,都编码进了向量空间里。
但这真的算"理解"吗?
写到这里,有个问题不得不提。
这套流程很精巧,但本质上还是"统计意义上的表示"——词向量相近的词,在语义上也相近。但人类说的"理解",真的是这个意思吗?
AI知道"苹果"和"橘子"都是水果,但它没有吃过苹果。它只是在向量空间里发现它们离得近。
这也是为什么大模型有时候会"一本正经地胡说八道"——它的知识是向量空间里的映射,不是真实世界的经验。
那问题来了:参数规模变大、模型变复杂之后,这种"统计理解"能接近真正的"语义理解"吗?
这就说到了下一个话题——预训练。大语言模型为什么要在大规模文本上预训练?预训练到底在训练什么?
