从高数到AI大模型:一篇入门指南
所以,在单纯比较语义相似度时,我们需要先把箭头长度变成一样(这叫**标准化**),然后再算点积——这种标准化后的点积有个专门的名字,叫**余弦相似度**。比较的数学工具叫**交叉熵**——如果模型给正确答案分配的概率很低(比如只给了2%),交叉熵就会很大,相当于狠狠打了它一个叉,让它下次记住。今天,我们不聊枯燥的公式,只玩一个你从小就会的游戏——**猜词游戏**。通过这个游戏,你会彻底搞懂大模型背
大模型背后的数学魔法:从猜词游戏到智能涌现
各位读者好,今天我们不聊枯燥的公式,只玩一个你从小就会的游戏——猜词游戏。通过这个游戏,你会彻底搞懂大模型背后的三个数学工具:线性代数、概率论和微积分。我们会一步一步来,确保每个新概念都用你听得懂的话讲清楚。
游戏开场:猜下一个字是什么
想象你在和朋友玩猜词游戏。朋友只给你一句话的前几个字,比如:
“床前明”
你的任务就是猜下一个字是什么。可能是“月”,可能是“光”,也可能是别的。这个过程,就是大模型每天都在做的事——根据上文,预测下一个词。
但是,大模型不认识汉字,只认识数字。所以,它需要先学会把文字变成数字。这就是第一个工具出场的时候。
第一部分:线性代数——把文字变成数字积木
为什么需要线性代数?
因为模型是数学机器,只能处理数字。我们要给每个汉字发一张“数字身份证”,这串数字就叫向量。比如:
-
“猫” = [0.8, -0.3, 1.2]
-
“狗” = [0.7, -0.2, 1.1]
-
“汽车” = [-1.5, 2.0, -0.5]
你可以想象每个词都住在数学空间里,这些数字就是它们的坐标。
-
如果两个词意思相近(比如“猫”和“狗”),它们的坐标就靠得很近。
-
如果意思差得远(比如“猫”和“汽车”),坐标就离得远。
把所有词的向量摞在一起,就成了一个大表格,这叫矩阵。大模型的所有知识都存在这样的矩阵里。
向量有方向和长度
每个向量都可以看作从原点出发的一个箭头。
-
方向代表词的“语义”。比如“猫”和“狗”的箭头指向差不多同一个方向。
-
长度代表词的“强度”或“重要性”。比如“超喜欢猫”里的“猫”可能比“喜欢猫”里的“猫”箭头更长,表示感情更强。高频词(像“的”)因为出现在太多地方,箭头可能被拉得短一些。
怎么计算两个词像不像?
我们需要一个数学工具来度量两个词是不是相似。这个工具叫点积(也叫内积)。它的计算方法很简单:把两个向量对应的数字相乘,再把结果加起来。例如:
-
“猫” = [0.8, -0.3, 1.2]
-
“狗” = [0.7, -0.2, 1.1]
它们的点积 = 0.8×0.7 + (-0.3)×(-0.2) + 1.2×1.1 = 0.56 + 0.06 + 1.32 = 1.94。
如果两个向量的方向越一致,点积就越大。所以点积的大小可以反映两个词在语义上的接近程度。
那为什么点积能反映方向一致性呢? 想象一下,如果两个箭头完全同方向,那么每个对应位置上的数要么都正、要么都负,乘起来都是正的,加起来就大;如果方向相反,正负交错,乘起来负的多,加起来就小。所以点积天然就是一个衡量方向一致的好工具。
但是,点积也会受长度影响:一个很长的箭头即使方向有点偏,也可能得到较大的点积。比如“汽车”的箭头特别长(假设它的每个数字都很大),那么它和“猫”的点积可能比“猫”和“狗”的点积还大,这显然不合理。所以,在单纯比较语义相似度时,我们需要先把箭头长度变成一样(这叫标准化),然后再算点积——这种标准化后的点积有个专门的名字,叫余弦相似度。余弦相似度只关心方向,不受长度干扰,是更纯粹的语义相似度指标。
在实际的大模型中,内部计算通常直接用原始点积,因为长度本身携带有用信息(比如词的重要性);而在需要比较语义的场合(比如找同义词),会用余弦相似度。
第二部分:概率论——猜下一个词的可能性
现在,模型手里有了一堆数字积木(词向量),它要开始猜词了。看到上文“床前明”,它会给每个可能的字打一个分数,表示“我觉得这个字出现的可能性有多大”。这些分数加起来必须是100%,这叫概率分布。
比如模型预测:
-
“月” → 70%
-
“光” → 20%
-
“明” → 8%
-
… → 2%
模型怎么知道该给多少百分比?它靠的是条件概率——基于当前的上文,推测下一个词的概率分布。大模型本质上就是一个巨大的概率猜词机。
训练的时候,模型会拿正确答案(比如应该是“月”)和它猜的概率分布(70%、20%、8%...)做比较。比较的数学工具叫交叉熵——如果模型给正确答案分配的概率很低(比如只给了2%),交叉熵就会很大,相当于狠狠打了它一个叉,让它下次记住。
一句话:概率论让模型学会“掂量轻重”,知道哪个可能性更大。
第三部分:微积分——从错误中学习(最核心的部分)
这才是最精彩的部分:当模型猜错了,它是怎么知道“该往哪个方向调、调多少”的?
3.1 把猜词过程变成数学公式
假设模型要预测的下一个词是“月”,但它猜了“光”。我们需要一个损失函数来衡量猜得有多差。最简单的损失函数是均方误差:
损失=(正确答案的向量−模型输出的向量)2损失=(正确答案的向量−模型输出的向量)2
损失越大,说明猜得越离谱。模型的目标就是让这个损失变小。
现在的问题是:模型知道损失很大,但它该往哪个方向调整自己内部那些密密麻麻的参数(成千上万个旋钮)?微积分就是来回答这个问题的。
3.2 导数(梯度)—— 告诉你方向和力度
微积分里的导数(也叫梯度)能精确算出:如果稍微改变某个参数,损失会怎么变化。
-
方向:正数表示“增大这个参数会让损失变大”,负数表示“减小这个参数会让损失变小”。
-
大小:数字越大,说明改变这个参数对损失的影响越强烈。
有了这个信息,模型就可以按规则调整参数:
新参数=旧参数−学习率×导数新参数=旧参数−学习率×导数
学习率是一个小数字,控制每次调整的步子大小。如果步子太大,可能一下子跨过最佳点;步子太小,学习太慢。就像你猜词时,每次调整的幅度要适中。
反复迭代,损失越来越小,猜得越来越准。这个过程就叫梯度下降。
3.3 如果模型有很多层呢?—— 链式法则和反向传播
真实的大模型有上千层,每一层都有自己的参数要调。微积分还能管用吗?能!这要靠链式法则。
想象一个两层模型:
输入“床前” → 第一层 → 中间结果 → 第二层 → 输出预测“月”
当第二层发现预测错了(比如输出了“光”),它先算出自己该往哪调,然后告诉第一层:“你给我的中间结果有问题,导致我猜错,你应该往某方向调。”第一层听了,结合自己的情况,算出自己该往哪调。
这个过程叫反向传播——错误信息从最后一层一层层传回去,每一层都得到自己的调整方向。微积分就是那个一直喊“往左点”“往右点”的导航员。
3.4 实际训练中,微积分藏在哪里?
你可能会有疑问:在实际训练代码里,我只看到一些现成的公式,比如 grad = 2*(y_pred - y_true)*x,没看到微积分符号啊?
这是因为微积分已经被封装好了。深度学习框架(如PyTorch、TensorFlow)的开发者们,用微积分手动推导了每一种基本运算(加法、乘法、指数、矩阵乘法等)的导数公式,然后把这些公式写死在代码里。训练时,框架会自动记录前向传播的计算路径,然后反向传播时,调用这些预存公式,代入当前数值,一步步算出每个参数的梯度。你看到的现成公式,就是微积分的结果。
所以,虽然你看不到微积分的符号,但每一步梯度计算都离不开微积分的原理。
第四部分:深入理解向量——长度与方向再探
你可能已经发现,向量既有方向又有长度,它们各自扮演什么角色?我们之前提到,点积同时受两者影响,但模型内部为什么还用它?
4.1 长度代表什么?
长度编码了词的统计特性和强度。比如:
-
高频词(“的”、“是”)因为出现在太多语境中,方向被“稀释”,长度往往较短。
-
专业术语(“量子”、“熵”)因为语境一致,方向稳定,长度可能较长。
-
情感强度:“超级喜欢猫”里的“猫”可能比“喜欢猫”里的“猫”长度更大。
在预测下一个词时,模型需要同时利用语义(方向)和先验概率(长度)。如果强行把所有向量标准化(变成同一长度),就会丢失这些有用信息。所以,在模型内部的前向计算中,一般保留原始长度;而在需要纯粹比较语义相似度时(比如做语义检索),会用余弦相似度(标准化后的点积)。
4.2 训练过程中,长度会不会失控?
不会。训练过程会自动平衡长度。如果某个词的向量变得特别长,它和所有词的点积都会变大——包括和不相关的词。这会导致损失急剧增大,因为模型会频繁地把不相关的词也预测出来。反向传播会迅速把这个“异常长”的向量压回去。此外,一些正则化技术也会抑制参数过度增长。最终,长度和方向是协同优化的结果,共同编码了语义和统计信息。
结语:三个数学工具是怎么配合的?
-
线性代数负责把文字变成数字积木(向量、矩阵),让模型能处理。
-
概率论负责给每个可能的答案分配可能性,让模型学会猜。
-
微积分负责在猜错时,精确计算每个参数该调多少,让下次猜得更准。
回到最初的猜词游戏:
-
你需要线性代数把文字变成数字。
-
你猜的时候心里会算概率,这是概率论。
-
猜错了要调整,这是微积分。
对于想入门的小白,你不需要成为数学高手,只需要记住:
大模型就是一个超级猜词游戏。它用线性代数把词变成位置,用概率论决定猜哪个,用微积分从错误中学习。
当你以后再看到“梯度下降”、“反向传播”、“损失函数”、“余弦相似度”这些词时,希望你能想起这个猜词游戏,心里有了一幅清晰的画面。
祝你学习愉快!
更多推荐


所有评论(0)