【Token系列】12|为什么输入与输出Embedding可以共用?一张矩阵的两种角色

文章目录

  • 12|为什么输入与输出Embedding可以共用?一张矩阵的两种角色
    • 一、语言模型的输入输出路径概览
    • 二、Embedding矩阵的双重角色
    • 三、为什么这样设计?
    • 四、是否会影响性能?
    • 五、与位置编码、输出解码的配合关系
    • 六、Transformer架构中的结构美学
    • 七、结语

12|为什么输入与输出Embedding可以共用?一张矩阵的两种角色

副标题:Embedding共享机制,是Transformer结构中最隐秘也最优雅的设计之一


一、语言模型的输入输出路径概览

Transformer类模型的主要流程为:

token_id → embedding → transformer layers → output logits → softmax → 预测下一个token

其中:

  • 输入部分使用Embedding层:将token_id映射为向量;
  • 输出部分需要将隐藏状态映射回token概率分布

这两个位置,理论上都需要一个 VocabSize × HiddenDim 的矩阵。


二、Embedding矩阵的双重角色

许多语言模型(如GPT、BERT)会使用相同的矩阵权重作为:

  • 输入时的 token embedding 查表;
  • 输出时的 logits 投影矩阵。

技术上等价于:

logits = hidden_state · embedding_matrix^T

这个操作叫做:weight tying(权重共享)


三、为什么这样设计?

  1. 节省参数

假设词表大小为50,000,embedding维度为1024:

  • 不共享时:2个矩阵 → 约100M参数;
  • 共享后:只需要一份 → 参数减半。
  1. 对称结构
  • 模型“用相同的词表进入世界”;
  • 最终“用同一组词表达世界”。
  1. 训练更稳定
  • 梯度通过共享权重在输入输出间交叉传播;
  • 能更快收敛,减少输出token分布漂移。

四、是否会影响性能?

研究发现:

  • 在多数生成任务中,共享权重与非共享性能相当;
  • 在参数受限场景(如移动端模型、微调模型)中,共享更具优势;
  • 某些复杂结构(如解码器带多个输出头)可能不适合共享。

五、与位置编码、输出解码的配合关系

注意:

  • Embedding共享的是词表矩阵,不包含位置编码;
  • 输出 logits 仍需经过 softmax;
  • 权重共享的是 W_embed = W_output^T,非值复制,而是共享引用。

这使得Transformer结构更简洁,也更数学对称。


六、Transformer架构中的结构美学

结构点 共享效果
token embedding 输入输出共享
position encoding 不共享(只用于输入)
attention机制 多层结构重复共享架构设计
feed-forward模块 所有层复用结构,不共享权重

这种“共享 × 复用”模式是Transformer压缩复杂度的关键。


七、结语

Embedding共享机制,看似是一个节省参数的技巧,但实际上体现了:

模型对语言结构理解的“输入即输出、词即预测”的对称理念。

它连接了token的起点与终点,也是Transformer中最内敛的结构智慧之一。


你可能感兴趣的:(AI智能,自然语言处理,机器学习,语言模型,矩阵,embedding)