LLM从0到1 | 从输入维度变化理解Transformer:以Encoder为例

0. 简介

本文将从维度变换的视角,详细剖析BERT中输入序列的处理流程——从原始文本输入到Encoder层输出的全过程。通过追踪这些维度的变化,希望有助于更好地理解BERT模型(即Transformer的Encoder部分)的内部运作机制。

1. 前置说明

以bert-base-uncased模型为例,进行step by step解析:

  • 输入序列长度n (例如,512 是 BERT 的典型最大长度)
  • 批大小batch_size (例如,32)
  • 词表大小vocab_size (例如,30522 对于 BERT-base)
  • embedding_sized_modeld (例如,768 对于 BERT-base,在config.json中的名字是"hidden_size",所以这3个名字都是指同一个意思)
  • 注意力头数h (例如,12 对于 BERT-base)
  • 每个头的维度d_k = d_v = d_head (例如,d_head = d / h = 768 / 12 = 64 对于 BERT-base)
  • 前馈网络隐藏层维度d_ff (例如,4 * d = 3072 对于 bert-base-uncased该值存于config.json的"intermediate_size"字段)

补充说明:
之前有小伙伴问我embedding_sized_model是什么关系,这里做一些补充说明。
其实embedding_size = d_model,只是称谓不同而已。

  • embedding_size(也称为d_model)
    指的是你将每个输入token转换成的连续向量表示的维度大小。例如,你有一个包含 30000 个单词的词表,embedding_size=512 意味着每个单词会被表示成一个 512 维的实数向量。
  • d_model:在 Transformer 架构(BERT 基于此)中,d_model 是模型内部表示的统一维度。它定义了模型在处理序列时,每个时间步(每个token位置)的特征向量的长度。它是 Transformer 块(编码器/解码器层)设计的关键参数。
  • 关系:在标准的 Transformer 和 BERT 实现中, embedding_size 被设定为等于 d_model 。也就是说,词嵌入向量被直接映射到模型内部工作所需的维度 d_model 上。这是模型设计的一个关键点,它确保了:
    • 可加性:词嵌入(Word Embedding)、位置嵌入(Positional Embedding)、段嵌入(Segment Embedding)都是 d_model 维的,可以直接相加。
    • 一致性:所有后续线性变换(如 Q、K、V 投影)、层归一化(LayerNorm)、前馈网络(FFN)的输入和输出在序列长度 n 的每个位置上都保持 d_model 维的特征向量。

步骤0:输入准备

  • 输入数据:一批句子。每个句子被分词、添加特殊token(如 [CLS], [SEP])并填充/截断到长度 n
  • 初始维度(batch_size, n)。这是一个整数张量,每个元素是词表 vocab_size 中的token ID。

完整版欢迎前往微信公众号"小窗幽记机器学习"。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值