用基础数学看懂LLM的本质

函数的表达能力,决定了计算机能在多大程度上逼近对自然语言的理解。 本文尝试用直觉性的方式,从"计算机如何理解语言"这个根本问题出发,逐步推导出大语言模型背后的核心数学原理。 假设词典中有若干单词,单词之间存在各种语义关系——近义、反义、上下位等。如何让计算机捕捉这些关系? 如何让计算机理解单词? 可以借助一种数学工具——向量。 两个向量的夹角余弦可以衡量它们的相似度: $$\cos(\theta) = \frac{\mathbf{a} \cdot \mathbf{b}}{\|\mathbf{a}\| \|\mathbf{b}\|}$$$\cos(\theta)$ 越接近 1,两个向量越相似;越接近 -1,越相反。 因此,可以用向量来表示单词,向量之间的余弦相似度就反映了两个词之间的语义关系。这种表示方式称为 Token Embedding:每个单词对应一个 d 维向量 $\mathbf{x} = (x_1, x_2, \dots, x_d)$。 如何让计算机理解句子? 同一个词在不同句子中含义不同。Token Embedding 只能表示孤立单词的语义,还需要一种方式来编码单词在上下文中的含义。 为此引入位置向量(Positional Embedding):假设句子由 m 个单词组成,为每个位置分配一个 d 维向量 $\mathbf{p}_j$。将两者相加得到最终表示: $$\mathbf{x}_j = \text{token\_embedding}_j + \text{pos\_embedding}_j$$直觉上理解:向量加法会让结果同时保留两个加数的特征。就像把"红色"和"大"两个标签贴在同一个物体上,加法后的向量 $\mathbf{x}_j$ 就同时携带了"这个词是什么"和"它在第几个位置"两层信息。 这样,一个由 m 个单词组成的句子就可以用 m 个向量 $(\mathbf{x}_1, \mathbf{x}_2, \dots, \mathbf{x}_m)$ 来表示,计算机便能通过向量运算"理解"句子的含义。 如何训练模型生成文本? GPT 类 LLM 的核心目标是预测下一个词——给定前面的所有词,预测最可能的下一个词: $$P(x_{t+1} \mid x_1, x_2, \dots, x_t)$$例如输入"今天天气真",模型应输出"好"的概率最高。生成长文本时,只需不断把预测出的词拼接到输入末尾,重复这个过程即可。 完整的流程是: 将输入文本通过 Embedding 转换为向量序列 向量序列经过模型的函数映射,得到输出向量 输出向量与词表中所有词的向量计算相似度,通过 softmax 得到每个词的概率分布 从概率分布中选出下一个词 其中 Embedding 映射表(词 → 向量)也是函数的一部分,无法手工指定,需要和整个模型一起学习。 ...

March 11, 2026