词嵌入(Word Embedding)和位置编码(Positional Encoding)

词嵌入(Word Embedding)和位置编码(Positional Encoding) 在 Transformer 架构中**词嵌入Word Embedding和位置编码Positional Encoding**的确定方式有着根本的物理差异词嵌入是模型“一点点学出来”的而位置编码是基于严密的数学公式“硬算出来”的在经典架构中。一、 词嵌入 (Word Embedding)从离散符号到稠密向量的高维映射计算机不认识“我”、“爱”、“学习”它只认识数字。词嵌入的过程就是将离散的文字映射到一个连续的高维空间中。1. 构建绝对坐标词表 (Vocabulary) 与独热编码 (One-Hot)首先我们需要一个庞大的词表字典。假设词表大小V100,000V 100,000V100,000。当你输入“爱”这个词时分词器Tokenizer会去查字典发现“爱”的索引号是952795279527。在数学上这等价于生成一个长度为100,000100,000100,000的极度稀疏的向量除了第952795279527个位置是111其余全为000。这就是独热编码。2. 核心发生器嵌入矩阵 (Embedding Matrix)大模型内部维护着一个极其巨大的参数矩阵我们称之为嵌入矩阵WEW_EWE​。它的维度是V×dmodelV \times d_{model}V×dmodel​即100,000×4096100,000 \times 4096100,000×4096。这个矩阵里一共有 4 亿多个浮点数。这些数字是怎么来的答案是随机初始化然后通过反向传播Backpropagation在预训练阶段海量的数据中不断调整、学习出来的。3. 矩阵乘法提取向量此时我们将“爱”的独热编码1×100,0001 \times 100,0001×100,000的行向量与嵌入矩阵WEW_EWE​相乘X爱OneHot爱⋅WEX_{\text{爱}} \text{OneHot}_{\text{爱}} \cdot W_EX爱​OneHot爱​⋅WE​因为独热向量只有一个位置是111这个矩阵乘法的物理结果就是直接把WEW_EWE​矩阵的第 9527 行完整地“抠”出来。抠出来的这一行就是一个长度为409640964096的一维稠密向量。结论词嵌入没有任何预先设定的规则。它是模型在阅读了万亿字的人类语料后根据词语的上下文共现概率用梯度下降法不断修改矩阵WEW_EWE​里的数值最终强行将具有相似语义的词语比如“爱”和“喜欢”在409640964096维的数学空间中推到相近的坐标系里。二、 位置编码 (Positional Encoding)强加时间箭头的数学引擎提取出词嵌入后我们面临一个致命缺陷Transformer 的注意力公式ZA⋅VZ A \cdot VZA⋅V是一种“集合”运算它完全丧失了词语的语序信息。如果不管语序“我爱学习”和“学习爱我”在模型眼里的计算结果将完全一致。因此我们必须强行给每个向量打上一个绝对的“位置时间戳”。经典的 Transformer 使用了严密的正弦和余弦函数来生成这个时间戳。对于句子中的第pospospos个词比如“学习”是第333个词那么pos3pos3pos3我们要生成一个和词向量维度完全相同的、长度为409640964096的位置向量PEPEPE。对于这个向量中的第iii个维度iii从000到409540954095它的数值是由以下两个严格交替的公式算出来的偶数维度当索引为2i2i2i时PE(pos,2i)sin⁡(pos100002i/dmodel)PE_{(pos, 2i)} \sin\left(\frac{pos}{10000^{2i/d_{model}}}\right)PE(pos,2i)​sin(100002i/dmodel​pos​)奇数维度当索引为2i12i12i1时PE(pos,2i1)cos⁡(pos100002i/dmodel)PE_{(pos, 2i1)} \cos\left(\frac{pos}{10000^{2i/d_{model}}}\right)PE(pos,2i1)​cos(100002i/dmodel​pos​)这套公式为什么如此设计底层数学原理绝对唯一性因为正弦和余弦函数的频率在各个维度上呈几何级数递减导致每一个pospospos计算出的409640964096维向量在空间中都是绝对唯一的绝不重复。相对位置的线性可计算性最核心动机根据三角函数的和差化积公式位置poskpos kposk的编码可以表示为位置pospospos编码的线性组合。这意味着无论句子有多长模型在后续的矩阵乘法中可以极其轻松地通过线性变换“感知”到词与词之间到底隔了几个位置距离kkk。三、 终极融合数据的起航确定了这两个向量后最后一步就是简单暴力的向量加法。对于输入序列中的第pospospos个词它进入第一层 Decoder 前的最终形态XinputX_{input}Xinput​是XinputXembeddingPEposX_{input} X_{\text{embedding}} PE_{pos}Xinput​Xembedding​PEpos​这就是你之前看到的输入矩阵XXX的绝对源头。模型没有记忆每次你发送一段话分词器提取索引 - 查表得到XembeddingX_{\text{embedding}}Xembedding​- 算出数学公式PEposPE_{pos}PEpos​- 两者相加 - 送入第一层 QKV 投影开始计算。注 LLaMA 等现代开源大模型 对位置编码进行了改良使用了一种叫做旋转位置编码 (RoPE)的技术。它不再是在输入时进行加法而是在计算 Q 和 K 矩阵后用一个复数旋转矩阵在空间中对它们进行旋转来注入位置信息。但其解决序列无序性的底层数学诉求是完全一致的。想要了解看我主页~