
前面四讲一直在谈评估。
分数为什么会骗人,人类和 AI 当裁判各有什么偏差,评估任务应该考什么,benchmark 又为什么会被 prompt、泄漏和安全攻击影响。
这些问题都在回答同一件事:
怎么判断一个模型到底好不好?
但只看评估,还没有触到另一个更底层的问题。
模型的能力到底从哪里来?
为什么给它很多资料,它就能学会分类、翻译、生成、推理、写代码?
为什么它面对没有见过的新句子、新图片、新任务,也能给出看起来合理的结果?
要回答这些问题,就要回到机器学习最基础的一句话:
机器学习是在资料中学出一个函数。
这句话听起来很抽象。
但一旦它被拆开,很多关于大模型的概念都会变得更清楚。
一、先把模型看成函数
在数学里,函数可以理解成一种输入和输出之间的对应关系。
给它一个输入,它产生一个输出。
最简单的例子是:
输入一个摄氏温度,输出对应的华氏温度。
再复杂一点:
输入一张图片,输出“猫”或“狗”。
输入一段中文,输出英文翻译。
输入一段对话上下文,输出下一个 token。
这些都可以看成函数。
函数不一定长得像课本里的公式。
在机器学习里,函数常常是一个巨大的模型。它可能有很多层神经网络,很多矩阵,很多参数。形式很复杂,但本质问题仍然是:
给定输入,它应该输出什么?
从这个角度看,模型可以先放下神秘感。
它是一个可以被调用的函数。
输入进去的是文字、图片、语音、表格、代码,或者这些东西的组合。
输出出来的是分类结果、概率分布、下一段文字、一个动作决策,或者某个工具调用。
二、机器学习省掉的是手写规则
如果没有机器学习,很多任务需要人手写规则。
比如识别垃圾邮件。
可以写规则:
如果邮件里出现某些关键词,判为垃圾邮件。
如果发件人不在联系人里,增加风险分。
如果链接很多,再增加风险分。
这种方法在简单场景里有效,但很快会遇到问题。
规则太多,维护困难。
对方稍微换个写法,规则就失效。
任务越复杂,人越难把所有判断条件写清楚。
识别图片更明显。
要让程序判断一张照片里是否有猫,很难手写出完整规则。
猫可能趴着、站着、侧着、缩成一团;可能是黑猫、白猫、橘猫;背景可能是沙发、草地、窗台,也可能只有半张脸。
人能认出来,是因为人从大量经验里形成了判断能力。
机器学习做的事也类似。
它不要求工程师把所有规则一条条写出来。
它给模型很多样例,让模型自己调整内部参数,形成一套能处理输入的函数。
三、训练资料给模型看样例
机器学习需要资料。
资料通常由输入和目标组成。
图片分类里,输入是一张图片,目标是类别标签。
房价预测里,输入是面积、位置、楼层、房龄等特征,目标是成交价格。
翻译任务里,输入是一种语言的句子,目标是另一种语言的句子。
语言模型预训练里,输入是一段文本上下文,目标可以是后面真正出现的 token。
这些样例告诉模型:
遇到这种输入时,比较合理的输出大概是什么。
模型一开始不会做。
它会先给出一个不成熟的输出。
然后系统把这个输出和目标进行比较,看差距有多大。
这个差距通常叫损失。
损失越大,说明模型当前函数越不合适。
损失越小,说明模型在这批样例上的输出更接近目标。
所以训练可以先理解成一个循环:
给模型输入,让它输出;计算输出和目标的差距;根据差距调整参数;再试一次。
一次训练不会让模型立刻学会。
但当这个过程在大量样例上反复发生,模型内部的参数就会逐渐被推向更有用的位置。

四、参数是函数的旋钮
机器学习里的模型通常有很多参数。
参数可以先粗略理解成函数里的旋钮。
旋钮的位置不同,函数的行为就不同。
同样一个输入,参数不同,输出也可能不同。
训练时,系统真正调整的就是这些参数。
如果模型把猫图判成狗,损失会提醒它当前参数不合适。
优化过程会根据损失给出的方向,把参数稍微调整一点。
下一次再遇到类似样例时,模型输出就可能更接近目标。
深度学习的特别之处在于,参数数量可以非常大。
数量不只是几个,可能是上百万、上亿,甚至更多。
这些参数分布在许多层网络里,共同决定模型如何把输入变成输出。
前面讲大语言模型内部结构时,提过 embedding、attention、FFN、representation。
那些模块背后都有参数。
模型能把一个 token 放进上下文里理解,能在不同位置之间分配注意力,能把中间表示一步步改写,都是这些参数共同作用的结果。
所以机器学习里的“学”,很大程度上就是调整参数,让这个函数逐渐改变处理输入的方式。
五、训练集表现好还不够
只在训练资料上表现好,并不代表模型真的有用。
如果一个模型只是记住了所有训练样例,它面对原题可能答得很好。
但换一个没见过的新输入,它就可能失效。
这在机器学习里叫泛化问题。
有用的模型需要从样例中抓住可迁移的规律。
比如学会识别猫,不应该只记住训练集中某几张猫照片。
它还要能处理新的猫、新的光线、新的姿势、新的背景。
学会翻译,也不应该只是背诵训练语料里的句子。
它要能处理新的句子组合、新的语境、新的表达方式。
生成式 AI 也是一样。
如果模型只会复述训练资料,它就不能稳定处理新问题。
真正有价值的是,它能从大量文本、图片、代码和交互资料中学到可复用的结构。
语言的结构,知识的关联,代码的模式,任务指令的形式,以及上下文里信息如何影响输出。
这也是为什么评估里会强调“没见过的新题”和“真实工作流”。
训练集表现可以说明模型吸收了资料。
泛化表现才更接近我们想要的能力。
六、大模型也是这个框架
大语言模型看起来比传统机器学习复杂得多。
它能聊天、写文章、写代码、总结文件、调用工具,还能接收图像和语音。
但从最底层看,仍然可以放进这个框架:
输入是什么?
输出是什么?
模型函数长什么样?
参数如何被训练?
训练目标如何定义?
新输入上能不能泛化?
语言模型预训练时,一个核心任务是根据上下文预测后面的 token。
看起来只是接龙。
但当资料规模足够大,模型结构足够强,参数足够多,这个接龙任务会逼着模型学到很多隐含能力。
它要知道词和词之间的关系。
要理解句法、语义、常识、风格和上下文约束。
要在长文本里保持一致。
要把前面出现的信息转化为后面输出的条件。
所以“预测下一个 token”这个训练目标很简单,但它带来的能力并不简单。
这也是生成式 AI 让人惊讶的地方:
一个看似朴素的学习框架,在足够大的资料、模型和计算下,会表现出很丰富的行为。
七、从这里继续看训练
这一讲先把机器学习压缩成一条主线:
从资料里学一个函数。
资料提供样例。
模型提供函数形式。
参数决定函数行为。
损失衡量输出差距。
优化调整参数。
泛化决定模型在新输入上是否真的有用。
这条线非常重要。
因为后面再谈训练过程、梯度下降、过拟合、深度学习、监督学习、自监督学习、强化学习和对齐,它们都可以放回这个框架里理解。
很多看起来高级的概念,其实都在回答几个基础问题:
模型看到了什么资料?
它被要求预测什么?
什么结果会被奖励?
什么错误会被惩罚?
参数是怎样被改动的?
它最后能不能处理新情况?
一旦这些问题清楚,大模型就不再只是一个会说话的黑箱。
它更像一个从资料中训练出来的复杂函数。
而理解这个函数怎么被训练出来,是理解生成式 AI 的下一层入口。
夜雨聆风