词元字典CIYUAN ZIDIAN

Logits是什么意思?AI大模型里的Logits怎么理解

更新于 2026-11-01 · ciyuanzidian.com

简答:Logits可以理解为大模型给每个候选Token打出的原始分数。它不是概率,通常要经过softmax才会变成总和为1的概率分布,然后再通过最大值选择或采样决定下一个Token。简单说,logits负责“排序和拉开差距”,概率负责“表示归一化后的选择倾向”。

定义:Logits是模型输出层针对每个候选类别或Token产生的、尚未经过softmax归一化的原始分数。

先看结论:Logits、概率和Token分别是什么

如果你只想先记住一句话:Logits是模型对候选Token打出的原始分数,概率是这些分数经过softmax后的归一化结果,Token则是最终被选出来或采样出来的文本片段。

大模型生成中的三个阶段
阶段结果是否是概率生活化理解
模型输出logits不是给每个候选答案打原始分数
概率转换softmax概率是把分数换算成可比较的占比
生成选择Token不是从候选答案中选出下一块文字

在多分类模型中,logits通常会作为softmax的输入;softmax会为每个候选类别生成一个概率,并且所有概率加起来等于1。这个定义也适用于语言模型,只是“类别”换成了词表中的候选Token。可参考Google机器学习术语表和softmax的官方课程说明。

最容易混淆的一点:logit数值越大,通常表示模型更倾向于对应的候选Token,但它不等于“模型有多少百分比的把握”。例如logits为5、2、0时,三个数字可以比较大小,却不能直接说它们分别代表500%、200%和0%的概率。

用一个小例子理解 logits 如何变成概率

假设模型读完“今天的天气很”后,为三个候选Token给出如下logits:

极简logits示例
候选TokenLogit直观排序
好2.0最高
冷1.0第二
热0.0第三

模型接下来可以先用softmax计算:

p(i) = exp(logit_i) / sum(exp(logit_j))

在这个例子中,softmax会把三个原始分数转换为三个介于0和1之间的数,并且总和为1。具体数值大约是“好”占0.665、“冷”占0.245、“热”占0.090。这里的数字只是为了演示计算过程,不代表任何真实模型的输出。

这个过程可以理解成评委给三个答案打分:logits是评委手里的原始分数,softmax是把分数换算成相对占比,最终Token则是模型真正输出的下一块文字。

因此,logits只看相对差距通常更有意义。把所有logits同时加上同一个常数,softmax得到的概率不会改变,因为分子和分母中的指数项会同时乘上同一个因子。例如,[2, 1, 0]和[12, 11, 10]经过softmax后会得到相同的概率分布。工程上,这也是为什么不能只看某一个logit的绝对值,就断言模型“更有信心”。

Logits在大模型生成流程中的位置

  1. 输入文本先经过分词器,转换成Token ID。
  2. 模型根据已有上下文计算隐藏状态。
  3. 输出层通常把最后一个位置的隐藏状态映射到整个词表。
  4. 模型得到一个长度接近词表大小的logits向量,每个位置对应一个候选Token。
  5. 系统可以直接选择最大logit对应的Token,也可以先转换为概率后进行采样。
  6. 新Token加入上下文后,模型再次计算下一个Token,循环直到达到停止条件。

如果模型输入形状是[batch_size, sequence_length],语言模型常见的输出logits形状会包含批次、序列位置和词表三个维度,可以写成[batch_size, sequence_length, vocab_size]。要取当前输入最后一个位置用于生成,通常关注的是logits[:, -1, :]。实际模型的返回结构可能因模型架构和框架而不同,使用前应以对应文档为准。

在生成框架中,temperature、top-k和top-p都可能作用于下一步的logits或由它计算出的候选分布。相关生成参数的官方说明见文本生成参数文档。

常见选择方式与logits的关系
方式怎么做结果特点
Argmax或贪心选择选择logit最大的Token规则直接,但不等于一定正确
Temperature通常先将logits除以温度,再计算概率改变分布的集中或分散程度
Top-k只保留分数或概率排名靠前的k个候选限制候选数量
Top-p保留累计概率达到阈值的最小候选集合候选数量会随分布变化

需要注意,这些参数主要改变“如何从当前分布中选择”,并不会直接给模型增加新的训练知识。它们可能影响输出的稳定性、重复程度和多样性,但不能单独保证事实正确。

Logits、概率与Log-probability怎么区分

三个容易混淆的术语
术语定义数值特点主要用途
Logitssoftmax之前的原始分数可以为正、为负或为零,不要求总和为1排序、概率转换、采样前处理
Probability归一化后的概率通常在0到1之间,总和为1表达候选Token的相对概率
Log-probability概率取自然对数通常小于或等于0计算序列似然、损失和评分

logits和log-probability都可能是负数,但两者不是同一个东西。未经归一化的logits不能直接当作概率的对数;要得到与概率分布对应的log-probability,通常需要先进行log-softmax。某些生成接口返回的分数在不同配置下可能是未归一化logits,也可能是经过处理的分数,因此读取接口字段时要查看文档说明。

例如,相关文档会特别区分生成过程中的分数、logits和经过归一化后的分数;可参考生成分数与transition scores说明。不要看到一个负数就直接把它称作“概率”,也不要把概率小数直接当成log-probability。

Logits在训练阶段有什么作用

训练语言模型时,模型会为目标位置输出一组logits,然后将正确Token对应的位置与其他候选进行比较。交叉熵损失会在内部结合log-softmax和负对数似然来计算损失,因此通常不需要先手动把logits转成概率再传入交叉熵函数。

以常见的分类或语言模型训练流程为例:如果正确答案对应的logit相对较高,softmax后的概率通常会更高,损失往往会更小;如果正确答案的logit较低,损失通常会更大。训练的目标不是让每个logit都变成概率,而是让正确候选相对于其他候选更有区分度。

PyTorch交叉熵损失文档说明,交叉熵可以等价理解为对输入进行LogSoftmax后再计算负对数似然损失。因此,把已经softmax后的概率再次传入只接受原始输入的交叉熵流程,可能造成数值处理不符合预期,实际使用时应按框架文档传入对应格式。

初学者可以怎样检查一个logits输出

如果你在调试模型输出,建议按下面顺序检查,而不是先猜某个数字代表什么:

  1. 先确认字段名称:确认接口返回的是logits、scores、概率还是log-probability。
  2. 再确认张量形状:检查是否包含batch、sequence和vocab三个维度。
  3. 取正确位置:做下一Token预测时,通常查看输入序列最后一个位置。
  4. 查看最大值索引:用最大logit对应的索引得到候选Token ID,再通过分词器映射回文本。
  5. 需要概率时再转换:对同一位置的logits执行softmax,并检查概率总和是否接近1。
  6. 记录生成参数:同时记录temperature、top-k、top-p和重复惩罚等设置,否则同一组logits可能得到不同选择。

一个框架无关的伪代码如下:

last_logits = logits[最后一个序列位置]
probs = softmax(last_logits)
token_id = argmax(last_logits)
token_text = tokenizer.decode(token_id)

这段伪代码只适合说明关系,不代表所有模型接口都使用相同字段名。若需要复现,必须先确认模型返回对象、张量维度和分词器接口。

常见误区与适用限制

因此,logits最适合用来理解模型输出层、调试生成过程和分析候选排序;如果你要判断答案是否真实、是否符合业务规则,还需要额外的事实核验和应用层校验。

常见问题

Logits是什么意思?

Logits是模型对每个候选类别或Token给出的未归一化原始分数。它主要用于比较候选之间的相对倾向,不是概率,也不要求总和为1。

为什么logits可以是负数?

因为logits是模型输出层产生的任意实数分数,并没有被限制在0到1之间。只要比较同一组候选中的相对大小,负数本身并不表示异常。

Logits和概率有什么区别?

Logits是softmax之前的原始分数;概率是softmax之后的归一化结果。概率通常介于0和1之间,并且同一组候选的概率总和为1。

Logits和log-probability是一回事吗?

不是。log-probability是概率取对数后的结果;原始logits没有经过归一化,不能直接当作log-probability。需要概率对应的对数值时,通常要使用log-softmax。

模型为什么有了logits还要softmax?

logits适合表示候选之间的原始差异,但不方便直接解释为概率。softmax会把它转换成总和为1的分布,便于采样、计算概率和损失。

temperature会不会改变logits?

在生成流程中,temperature通常会对下一步logits进行缩放,再计算概率,因此会改变候选分布的集中程度。但它通常不会改变模型已经学到的训练知识。

相关阅读

参考资料

  1. Google机器学习术语表:logits定义
  2. Google机器学习课程:多分类与softmax
  3. PyTorch官方文档:CrossEntropyLoss
  4. Hugging Face官方文档:文本生成参数与logits处理
  5. Hugging Face官方文档:生成分数与transition scores