从向量到文字:Transformer 的预测与输出(LM Head)

在经过 <math xmlns="http://www.w3.org/1998/Math/MathML"> N N </math>N 层 Decoder 的复杂思考(Attention, MLP, MoE)后,模型最终需要将抽象的数学向量转化为人类可读的文字。这个过程主要发生在模型的"输出头"------LM Head


一、 核心产物:隐藏状态 (Hidden States)

当 Token 序列流经最后一层 Decoder 层后,在该位置产出的结果是一个高维稠密向量 <math xmlns="http://www.w3.org/1998/Math/MathML"> h l a s t h_{last} </math>hlast。

  • 维度:通常与模型的隐藏层维度一致(如 Llama-3 8B 为 4096)。
  • 本质 :它是模型对当前上下文及其所有前文语义的最终浓缩总结

二、 第一步:线性投影(解压回词表)

隐藏状态 <math xmlns="http://www.w3.org/1998/Math/MathML"> h l a s t h_{last} </math>hlast 无法直接对应文字,必须通过一个巨大的线性变换矩阵 <math xmlns="http://www.w3.org/1998/Math/MathML"> W v o c a b W_{vocab} </math>Wvocab(即 LM Head)映射到词表空间。

  • 数学形式 : <math xmlns="http://www.w3.org/1998/Math/MathML"> L o g i t s = h l a s t ⋅ W v o c a b Logits = h_{last} \cdot W_{vocab} </math>Logits=hlast⋅Wvocab
  • 维度变换 :从 <math xmlns="http://www.w3.org/1998/Math/MathML"> d m o d e l d_{model} </math>dmodel (如 4096) 映射到 <math xmlns="http://www.w3.org/1998/Math/MathML"> V V </math>V (词表大小,如 128,256)。
  • 物理意义 :这一步是在计算当前语义向量与词表中每一个候选词(Token)的余弦相似度(未归一化分数)

三、 第二步:Softmax(概率化分布)

线性投影得到的 <math xmlns="http://www.w3.org/1998/Math/MathML"> L o g i t s Logits </math>Logits 是一堆实数,需要通过 Softmax 函数 转化为概率分布。

<math xmlns="http://www.w3.org/1998/Math/MathML"> P ( w i ) = e L i ∑ j = 1 V e L j \text{P}(w_i) = \frac{e^{L_i}}{\sum_{j=1}^{V} e^{L_j}} </math>P(wi)=∑j=1VeLjeLi

  • 结果 :词表中每一个词都会获得一个 <math xmlns="http://www.w3.org/1998/Math/MathML"> 0 0 </math>0 到 <math xmlns="http://www.w3.org/1998/Math/MathML"> 1 1 </math>1 之间的概率,且全词表概率总和为 <math xmlns="http://www.w3.org/1998/Math/MathML"> 100 % 100\% </math>100%。
  • 示例"苹果" (0.72), "手机" (0.15), "树上" (0.03)...

四、 第三步:采样策略(决定最终 Token)

模型并不总是选择概率最高的那一个,而是根据**解码策略(Decoding Strategy)**来挑选最终的 Token ID。

  1. Temperature (温度调节)
    • 低温度 (< 1.0):让分布更"尖锐",高概率词更突出,模型表现得更严谨、确定。
    • 高温度 (> 1.0):让分布更"平滑",增加低概率词被选中的机会,模型表现得更有"创造力"甚至胡言乱语。
  2. Top-P (核采样):只在累计概率达到设定阈值(如 0.9)的候选词集中进行采样,过滤掉概率极低的长尾噪声。
  3. Greedy Search (贪婪搜索):每次雷打不动地选概率最高的词。

五、 第四步:自回归循环 (Autoregression)

一旦确定了最终选出的 Token:

  1. 反向转换 :通过 Tokenizer 将选中的 ID 变回文本。
  2. 反馈机制:这个新生成的 Token 会被重新拼接到原始序列的末尾,再次输入模型。
  3. 循环往复 :模型重复上述过程,直到生成了特殊的终止符号 [EOS] (End Of String)。

这就是"自回归"的含义:模型每生成一个词,都是在为预测下一个词制造新的背景。


六、 总结:推理全链路

环节 输入 处理逻辑 输出
Decoder Token 序列 Attention + MLP/MoE Hidden States (语义总结)
LM Head Hidden States 线性投影 ( <math xmlns="http://www.w3.org/1998/Math/MathML"> W v o c a b W_{vocab} </math>Wvocab) Logits (词表得分)
Softmax Logits 归一化指数运算 Probability (概率分布)
Sampler Probability 根据温度/P值采样 Token ID (最终选定)

💡 深度洞察:计算开销

在推理时,由于词表 <math xmlns="http://www.w3.org/1998/Math/MathML"> V V </math>V 往往非常大(10万+),LM Head 的计算量在最后一层占据了很大比例。在分布式部署中,这部分计算通常会进行张量并行(Tensor Parallelism)拆分,以减轻显存负担。

相关推荐
我学上瘾了5 小时前
Spring Cloud的前世今生
后端·spring·spring cloud
波波0076 小时前
ASP.NET Core 健康检查实战:不只是一个 /health 接口
后端·asp.net
小码哥_常6 小时前
Spring Boot 搭建邮件发送系统:开启你的邮件自动化之旅
后端
AlienZHOU7 小时前
从零开始,学习实现产品级 Agent Harness 系列(3)
aigc·ai编程·claude
石榴树下的七彩鱼7 小时前
图片修复 API 接入实战:网站如何自动去除图片水印(Python / PHP / C# 示例)
图像处理·后端·python·c#·php·api·图片去水印
我叫黑大帅7 小时前
为什么TCP是三次握手?
后端·网络协议·面试
我叫黑大帅7 小时前
如何排查 MySQL 慢查询
后端·sql·面试
techdashen7 小时前
Rust项目公开征测:Cargo 构建目录新布局方案
开发语言·后端·rust
消失的旧时光-19437 小时前
Spring Boot 实战(五):接口工程化升级(统一返回 + 异常处理 + 错误码体系 + 异常流转机制)
java·spring boot·后端·解耦
Rust研习社7 小时前
Rust 智能指针 Cell 与 RefCell 的内部可变性
开发语言·后端·rust