ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从零吃透Transformer全流程:终结90%新手误区(从Token到生成输出完整复盘)

从零吃透Transformer全流程:终结90%新手误区(从Token到生成输出完整复盘) 前言初学Transformer绝大多数人的困惑都不在于复杂公式而在于模块数据流向、输入输出对象、注意力分工、维度变化的混淆。本文基于从零拆解的学习逻辑完整复盘文本输入→Token切分→向量嵌入→编码器→解码器→最终生成输出的全链路重点纠正新手高频误解也是学习中最容易踩坑的卡点全程通俗、无废话、逻辑完全闭环。一、第一步文本转Token大模型一切的基础核心原理大模型不认识文字只认识数字ID原始句子无法直接输入模型必须先经过Tokenizer分词处理。关键误区❌ 不是按单词、空格、汉字词典切分✅ 完全依靠模型预训练固定词表切分主流切分算法BPE、WordPiece、SentencePiece子词切分通俗规则词表里有的高频片段整词、词组直接整体作为一个Token词表里没有的低频词、生僻字自动拆分为最小子词/单字符示例句子我喜欢打篮球模型词表包含「我、喜欢、打、篮球」最终切分结果我、喜欢、打、篮球核心关联词表与Tokenizer、Embedding的绑定关系词表Vocab预训练阶段构建的「Token文本-数字ID」映射字典训练、推理全程结构固定不变Tokenizer依据词表切分句子、将文本转换为数字IDEmbedding层依据ID查表生成向量并随训练持续更新优化三者强绑定换词表模型彻底失效二、第二步Embedding层 位置编码文本转模型可识别向量1. Embedding层真实机制两大核心误区纠正Embedding层本质是一张可训练的向量查找表权重矩阵形状[词表大小vocab_size, 隐藏维度hidden_dim]。输入Token数字ID序列输出每个ID对应一行语义向量非常关键Embedding权重不是固定死的初始化是随机数值在预训练和微调过程中全程反向传播、持续迭代优化。训练的核心本质是让语义相近的Token向量不断靠近语义无关的Token向量不断远离维度示例词表50257隐藏维度768 → 权重矩阵 [50257, 768]输入ID [27, 863, 132, 2145] → 输出向量 [4, 768]2. 位置编码的作用Embedding向量天生没有顺序信息Transformer注意力机制无法感知语序。解决方案位置编码向量直接与Embedding向量相加非拼接给每个Token注入时序、位置信息。当前完整链路原始文本 → Token切分 → Token ID → 可训练Embedding向量 → 位置编码 → 模型原始输入向量三、第三步Encoder编码器只做一件事读懂输入原文核心定位编码器只处理【源文本】如翻译任务的中文原句全程不接触生成文本。编码器内部核心模块单层结构输入向量 → 双向多头自注意力 → 残差连接LayerNorm → FFN前馈网络 → 残差连接LayerNorm逐个模块核心作用双向多头自注意力所有Token互相可见、双向交互捕捉全文上下文依赖让每个Token向量融合整句语义。残差连接解决深层模型梯度消失问题保留原始输入信息防止特征丢失。LayerNorm层归一化稳定向量数值分布加速模型训练收敛。FFN前馈网络注意力是纯线性运算FFN为模型引入非线性表达能力独立加工每个Token的内部特征不做Token间交互。编码器最终输出Memory向量核心重点Memory 序列长度 原文本Token数量不会压缩、不会减少向量维度不变仅语义被双向上下文深度增强核心作用固化原文全部语义作为解码器的全局只读知识库示例4个中文Token → 输出4条增强向量Memory一一对应原位置Token四、第四步Decoder解码器生成文本核心两套注意力彻底分清核心误区最容易混淆的核心问题❌ 解码器掩码注意力会读取原文Memory❌ 交叉注意力输出长度会和原文一致✅ 解码器两套注意力数据来源完全不同、各司其职解码器输入特征解码器全程仅接收【已经生成的目标文本Token】如翻译已生成的英文不直接接收原始源句子。同时解码器的注意力机制会对当前已生成的每一个Token逐位计算注意力整条已生成序列的每一个位置都会经过掩码注意力、交叉注意力、FFN计算最终得到一整条和输入等长的新向量序列。1. 第一模块Masked掩码单向自注意力数据来源Q、K、V 全部来自解码器自身输入已生成文本向量完全不使用编码器Memory、不读取原文。核心作用通过上三角Mask屏蔽未来未生成的Token训练阶段杜绝“偷看答案”作弊建模生成文本自身的语序、语法、上下文连贯性输出特征输出一整条等长序列每一位向量只融合当前位置左侧所有已生成Token的信息不含任何原文语义。2. 第二模块Cross-Attention交叉注意力唯一读取原文的模块数据来源精准区分Q来自掩码注意力输出当前已生成文本的序列向量K、V来自编码器固化的Memory原文增强向量核心作用让每一个已生成的目标Token逐一查询、对齐原文语义把源文本信息融入自身向量。输出特征整条序列所有位置向量同时融合已生成文本的上下文语序 原始输入文本的全局语义。解码器单层完整逻辑已生成文本向量 → 逐位掩码自注意力保证语句通顺→ 残差LN → 逐位交叉注意力对齐原文语义→ 残差LN → FFN逐位特征加工 → 单层输出序列五、第五步最终预测序列向量 → 下一个Token概率多层Decoder堆叠完成后会输出完整的目标序列向量形状为[batch_size, 生成序列长度, hidden_dim]。生成逻辑核心关键模型虽然对所有已生成Token都做了完整注意力计算、特征更新但只取整条序列最后一个位置的向量作为当前时刻的全局状态用来预测下一个全新的Token。1. 预测向量截取final_hidden decoder_out[:, -1, :]shape[batch_size, hidden_dim]2. 输出权重矩阵LM Head矩阵形状[vocab_size, hidden_dim]主流模型与Embedding权重共享、同步训练优化3. 概率计算最后位向量与输出矩阵相乘[B, H] [H, V] [B, V]得到词表维度的Logits分数Softmax归一化得到全部Token的概率分布选取最优Token ID追加到生成序列循环迭代六、全文核心误区终极汇总全部新手痛点误区1Token切分依靠语法、字典、空格✅ 真相仅靠预训练词表子词统计算法和人类语法无关误区2Embedding向量是固定不变的✅ 真相Embedding是可训练参数全程随反向传播迭代优化语义是学出来的误区3Encoder Memory会压缩文本长度✅ 真相Memory长度严格等于原文本Token数只升级语义不压缩数量误区4解码器是整体算一次注意力✅ 真相对每一个已生成Token逐位做注意力计算得到完整序列仅最后一位用于预测误区5掩码注意力能看到原文信息✅ 真相掩码自注意力只处理自己生成的内容和源文本完全隔离误区6只有最后一个Token参与注意力计算✅ 真相所有位置都参与计算只是只用最后一位做预测七、终极极简全链路总结预处理文本→Tokenizer→固定词表映射为Token ID向量化ID→可训练Embedding向量持续优化→叠加位置编码编码器双向注意力读懂全文输出固定长度Memory语义知识库解码器对整条已生成序列逐位计算掩码注意力学习生成文本自身语序、上下文交叉注意力每一位对齐原文Memory保证内容准确生成预测整条序列更新完成截取最后一位向量→映射词表概率→输出下一个Token一句话本质Encoder静态读懂输入Decoder动态逐词打磨输出全序列计算、最后位预测Embedding全程学习语义。
返回列表