身边越来越多测试工程师开始焦虑。
不是业务能力不行,而是每次技术评审会,产品经理随口抛出一句“这个需求我们接入大模型解决”,全场没人敢追问技术细节。
面试的时候更直接。以前问“怎么设计测试用例”,现在问“你之前测过模型吗?怎么评估模型效果?”
很多人开始感觉到:AI不再是一个可选项,而是一道必答题。
但问题来了。零基础学AI,该从哪儿下手?看了一堆公式推导,买了一堆书,发现连“损失函数”是干什么的都说不清楚。
本质上,不是你学不会,而是你一开始搞错了重点。
转型AI,最该先搞懂的不是数学推导,而是5个最基础、最核心的概念。这些概念卡住了,后面全是空中楼阁。
目录
为什么你看了那么多教程还是不会用AI
第一个核心概念:向量(Vector)
第二个核心概念:嵌入(Embedding)
第三个核心概念:注意力机制(Attention)
第四个核心概念:损失函数(Loss Function)
第五个核心概念:梯度下降(Gradient Descent)
一个真实的落地案例帮你串起来
给你留一个值得思考的问题
为什么你看了那么多教程还是不会用AI
先讲一个真实场景。
上个月,一个做了5年测试的朋友跑来问我。他在公司负责自动化测试平台,现在领导要求把平台接上大模型,做智能用例生成。
他的第一反应是:我应该先去学PyTorch,还是学TensorFlow?
这个想法非常典型,但方向完全错了。
本质问题不是“用什么框架”,而是“计算机怎么理解我给他的文本数据”。
你给大模型输入一段需求文档,模型能生成测试用例。但计算机只认识数字,不认识汉字。中间发生了什么?
这就是最底层、最该搞懂的第一个概念:向量。
第一个核心概念:向量(Vector)
怎么做的:把任何数据——文字、图片、声音——都转换成一串数字。这串数字就是向量。
为什么这么做:计算机只能做数学运算。你要让计算机“理解”两个词的意思是否相近,本质上是在计算这两串数字之间的距离。
解决了什么问题:把不可计算的世界,变成可计算的世界。
举个例子。假设我们用两个数字表示一个词:[长度, 情绪值]。
“好”:[3, 0.9]
“棒”:[3, 0.85]
“坏”:[3, 0.1]
计算一下距离,“好”和“棒”很近,“好”和“坏”很远。这就实现了“语义理解”。
向量是一个工具,把现实世界的对象,映射到数学空间中的一个点。
零基础最容易犯的错误:一上来就研究这个映射怎么学出来的。你不需要。你只需要记住——所有AI模型,输入是向量,输出也是向量。
第二个核心概念:嵌入(Embedding)
向量是一个很大的概念。图片可以做向量,声音也可以。
但文本比较特殊。一句话里每个词都有自己的向量,怎么把“词”这个维度的向量,变成“句子”这个维度的向量?
这就用到嵌入。
怎么做的:把一个高维、稀疏的向量,压缩成一个低维、稠密的向量。说人话:把一段话变成一个更小的、但信息不丢失的向量。
为什么这么做:原始的词向量维度太高了。假设词典有10万个词,一个词的one-hot向量就是10万维,太稀疏。嵌入把它压缩到几百维,同时保留语义关系。
解决了什么问题:让模型能同时处理大量信息,而不会被维度爆炸撑死。
训练嵌入的过程很有意思。你可以理解为:让模型玩一个“猜词游戏”。模型不断调整每个词的向量表示,直到能从上下文里猜出正确的词。
工程师视角最该记住的:嵌入不是随机压缩,而是通过训练学出来的。训练完成后,你会发现“国王”的向量减去“男人”的向量加上“女人”的向量,约等于“女王”的向量。
这不是魔术,这是嵌入空间中的数学规律。
第三个核心概念:注意力机制(Attention)
前两个概念解决了“怎么表示数据”。接下来解决下一个问题:当输入很长的时候,模型该重点关注哪个部分?
传统的做法是把所有输入同等对待。你想想,一个100页的需求文档,所有句子对生成测试用例的贡献是一样的吗?当然不是。
注意力机制解决了这个问题。
怎么做的:模型在生成每一个输出的时候,都会给输入序列的每一个位置打一个“权重分”。分数越高,说明这个地方越值得关注。
为什么这么做:因为上下文是有结构的。最后一个词往往比第一个词更重要,但不绝对。让模型自己学会去哪里找信息。
本质上,注意力机制是一个动态的、可学习的“信息筛选器”。
解决了什么问题:让模型能处理超长序列,并且能在长距离中保留信息。没有注意力机制,RNN处理到第100个字的时候,早就忘了第1个字说了什么。
一个工程师必须理解的细节:注意力机制的分数不是瞎猜的,是通过“查询向量”和“键向量”的点积计算出来的。每次计算当前输出和所有输入位置的匹配程度。
mermaid图可以帮你理解这个过程:

核心在于:权重是算出来的,不是写死的。
第四个核心概念:损失函数(Loss Function)
模型跑起来了,输入输出都有了。下一个问题:怎么知道模型做得好不好?
这就是损失函数干的活。
怎么做的:用一个公式,计算模型预测的结果和真实结果之间的差距。差距越大,损失值越大。
为什么这么做:因为没有量化就没有优化。你必须给模型一个明确的信号——你这次做错了,错得有多离谱。
解决了什么问题:把“好坏”这种模糊判断,变成一个具体的数字。模型的任务变成了“让这个数字越来越小”。
不同的任务需要不同的损失函数。
分类问题用交叉熵损失
回归问题用均方误差
目标检测用更复杂的组合损失
工程师视角最重要的一点:损失函数的选择决定了模型的“价值观”。你选什么样的损失函数,模型就努力优化什么目标。
举个例子。测试用例生成任务,你如果用交叉熵损失,模型会努力让每个生成的词都贴近标准答案。这会导致一个问题:生成的用例多样性很差。
如果你想要多样性,就得换损失函数,或者在损失里加一个多样性惩罚项。
这就是为什么很多项目效果不好的根本原因——不是模型不行,是你的损失函数没选对。
第五个核心概念:梯度下降(Gradient Descent)
损失函数给出了错误的大小。下一个问题:怎么根据这个错误去调整模型?
梯度下降。
怎么做的:计算损失函数对每个模型参数的偏导数,得到梯度的方向和大小。然后让参数沿着梯度的反方向迈一小步。重复无数次。
为什么这么做:因为模型参数太多了,动辄几亿个。你不可能手动调整。梯度下降让模型能自动、高效地找到使损失最小的参数组合。
解决了什么问题:把“学习”这个抽象过程,变成了“反复计算梯度并更新参数”这个可执行的循环。
mermaid图描述这个循环:

这里有一个新手最容易踩的坑:学习率。
学习率是你每次迈的步子大小。步子太大,跨过最优解,损失反而变大。步子太小,几亿个参数,你得算到天荒地老。
这个平衡只能靠经验和调试。没有公式,只有工程实践。
一个真实的落地案例帮你串起来
把这5个概念串在一起,看一个真实场景。
你负责测试一个智能客服系统。用户问:“我的订单什么时候到?”模型要生成答案。
第一步,向量化。用户的问句被拆成词,每个词变成一个向量。
第二步,嵌入。这些词向量被压缩成一个更高效的表示,包含了整句话的语义。
第三步,注意力机制。模型生成第一个词“您”的时候,会去关注输入序列中最相关的部分。它发现“订单”这个词权重最高。生成到“时间”的时候,注意力转移到“什么时候”。
第四步,损失函数。模型生成了一个候选答案:“您订单的预计到达时间是三天”。但训练数据里标准答案是“预计3个工作日”。损失函数算出这两个答案的差距。
第五步,梯度下降。模型根据损失值调整内部参数,希望下次遇到类似问题能答得更准。
整个系统不是在执行规则,是在一个高维空间中做数学运算。
这就是为什么传统的等价类划分、边界值分析,用在AI系统上完全不灵。因为输入输出的关系不是线性的,你没办法枚举状态空间。
给你留一个值得思考的问题
这篇文章没有讲大模型背后的复杂公式,也没有让你推导反向传播。只讲了5个最基础的概念。
原因很简单。我见过太多人,花三个月学数学推导,最后还是不知道怎么评估一个模型的好坏。也有人直接用开源模型做应用,模型输出异常了,连排查的方向都没有。
问题不在知识本身,在于知识结构。你必须先建立“输入是向量、输出是向量、中间经过嵌入和注意力、优化靠损失函数和梯度下降”这个骨架,再往里填细节。
最后这个问题留给你自己去验证。
去翻一下你们公司正在用或准备用的AI模型的技术文档。看看文档里有没有出现这5个词:向量、嵌入、注意力、损失函数、梯度下降。
如果找到了,你再去读一下它们在那个模型里具体是怎么实现的。
这个问题不抽象。它决定了你能不能从一个“调API的人”,变成一个“能看懂、能排查、能优化AI系统”的人。
你的答案是什么?