十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

深入学习Transformer(二)

深入学习Transformer(二) 一、BPE分词器1.1 学词表vs用词表1.2 具体流程详解1.2.1 训练流程伪代码1.2.2 具体流程二、三种注意力机制详解2.1 注意力机制计算整体流程2.2 三种Attention的Mask视图2.3 Mask的具体数值计算及原理分析2.4 Mask最终计算公式卡三、Decoder编码器解析3.1 Decoder是怎么生成下一个单词的3.2 贪心算法3.3 Beam Search3.4 Label Smoothing--让模型不要太过自信四、拓展Encoder and Decoder Based Models4.1 Build LLMs with Decoder Only4.2 BERT五、Advanced Topics5.1 Absolute Position Embedding一 存在的问题5.2 旋转位置编码5.3 Attention的问题5.4 Attention的改进--Flash Attention一、BPE分词器先进行整体流程概览左侧从原始文本出发展示 BPE 先把词拆成字符/byte 级片段。中间突出核心算法统计相邻片段频率反复合并最高频 pair形成 subword。右侧把 BPE 词表和 Embedding 矩阵连接起来说明 token id 如何查表得到向量。底部对比词级分词、字符级分词和 BPE 子词分词强调 BPE 的优势是词表可控、无 OOV、序列长度适中。1.1 学词表vs用词表左侧阶段 1用大规模语料离线训练 tokenizer统计相邻 pair反复合并最高频片段。中间输出训练完成后得到Vocabulary Merge Rules也就是词表和有序合并规则。右侧阶段 2用冻结词表对任意新文本 tokenize得到 token IDs再查 Embedding。底部重点词表V一旦确定就会影响 Embedding 矩阵V × d也影响输出端 Softmax 的词汇维度。1.2 具体流程详解1.2.1 训练流程伪代码左侧展示初始化阶段语料先被拆成字符/byte 序列初始词表由最小符号组成。中间用伪代码形式表达 BPE 核心循环统计 pair 频率 → 选择最高频 pair → 加入词表 → 改写语料。右侧用fastest / newest / widest示例说明-est如何通过频率合并自然形成。底部串联完整链路语料字符序列 →k次贪心合并 → 冻结词表和 merge rules → tokenize 新文本 → Embedding → Transformer。左侧伪代码突出BYTE-PAIR ENCODING(C, k) → V的函数形式明确输入是语料C和合并次数k。核心循环每轮选择最高频相邻对(t_L, t_R)生成t_NEW扩充词表并改写语料。右侧示例用fastest / newest / widest演示两轮合并后如何自然得到est。底部实践点强调真实 BPE 不只保存Vocab还要保存有序merge rules后续 tokenize 新文本时按规则顺序贪心切分。1.2.2 具体流程顶部流水线展示原始语料 → 按空格分词 → 加词尾符号 _ → 拆成字符的第 0 步流程。中部重点解释为什么要加_保留词边界、可逆还原、防止跨词合并、区分est_与est。右侧示例用三轮合并说明est_如何形成强调词尾信息会被合并进 token。底部串联把第 0 步接回前面的 BPE 训练流程预处理后再进入k次合并最终得到Vocab merge rules。左上展示原始语料共 18 个词 token并统计出 5 个词型及频数。右上把语料折叠成词型 频数 词尾符 _说明 BPE 实际按频数加权统计。左下给出初始词表V由语料中去重字符加词尾符_构成共 11 个基符号。右下预演第 1 轮 pair 频率突出(e,r)与(r,_)并列最高说明er / er_这类后缀 token 会由频率自然合并出来。左侧把原始语料整理成正式的词型 频数 词尾符 _表合计 18 个 token。右侧给出初始词表V {_, d, e, i, l, n, o, r, s, t, w}共 11 个基符号。中下部预演第 1 轮 pair 计数突出(e,r)和(r,_)并列最高频。右下提示标出wider_的下划线勘误并说明下一步会进入for i1..k合并循环。上半部分展示合并前状态词表中已有er、er_说明前两轮合并已经完成。中间部分把本轮决策形式化为(t_L,t_R)(n,e) → t_NEWne并执行V ← V ∪ {ne}。下半部分展示合并后语料同步改写newer_ / new_变成ne w er_ / ne w_词表从 13 增至 14。右侧预告下一轮最高频将是(ne,w)8会继续合并出new体现 BPE 自下而上的逐层拼装过程。左上用压缩表格展示第 4–8 轮合并new、lo、low、newer_、low_依次进入词表。右上用三条链说明 BPE 的层级拼装机制er → er_ → newer_ne → newlo → low → low_。左下展示 8 轮后的语料状态高频词已经整词化低频词仍保持细粒度拆分。右下强调有序 merge rules 就是最终分词器推理时可按规则贪心套用到未见词。二、三种注意力机制详解左侧 Encoder标出 A/B 两处 Encoder Self-Attention说明Q/K/V都来自编码器无 Mask负责源句上下文化。右侧 Decoder展示 Masked Self-Attention、Encoder-Decoder Attention、FFN 三个子层并标注自回归回灌。中间虚线桥突出 Encoder 输出作为K/V送入 Decoder 的 Cross-Attention这是两个栈之间的关键连接。顶部输出头把Linear Softmax和 BPE 词表|V|联系起来说明输入 token 与输出词表共享同一套 Vocabulary。2.1 注意力机制计算整体流程左上说明输入矩阵X如何分别乘W^Q / W^K / W^V得到Q / K / V。中间突出核心公式Z softmax((QKᵀ Mask) / √d_k) V并标出各矩阵维度。右上用I like this book的len × len热力矩阵解释“谁看谁”。底部强调QKᵀ是所有 token 两两比较所以复杂度是O(N²)。2.2 三种Attention的Mask视图左侧 Encoder Self-Attentionn×n全 ✓ 矩阵表示每个 token 都能看全句。中间 Decoder Masked Self-Attention下三角 ✓、上三角 ✗表示只能看自己和过去不能看未来。右侧 Cross-Attentionm×n矩形全 ✓表示 Decoder 的每个目标 token 都能查询 Encoder 的全部源 token。底部总结表统一对比三种注意力的Q来源、K/V来源、Mask 形状和作用。2.3 Mask的具体数值计算及原理分析重点为什么要选择负无穷Padding Mask顶部公式把 Mask 写进注意力计算Z softmax(QKᵀ/√d_k M) · V。左侧矩阵展示三种MEncoder 全 0、Decoder 下三角 0/上三角-∞、Cross-Attn 矩形全 0。中间推导用 softmax 展开式说明-∞会让对应权重变成 0。右侧工程补充加入 padding mask说明PAD作为 Key 时也要被屏蔽并可与结构 mask 叠加。2.4 Mask最终计算公式卡顶部统一公式用Z Softmax(QKᵀ/√d_k M) · V收束三种注意力。三张公式卡分别对应 Encoder Self-Attn、Decoder Masked Self-Attn、Encoder-Decoder Cross-Attn。右侧判断法只看两个问题Q/K/V是否同源以及M是全 0、下三角还是矩形。底部闭环把BPE token PE → Q/K/V → Attention M → Z → Linear Softmax → 下一个 token串成完整流程。三、Decoder编码器解析3.1 Decoder是怎么生成下一个单词的3.2 贪心算法中心流程Decoder 对当前输入序列输出多个词表概率分布每个分布通过argmax选出下一个 token。回灌机制被圈出的y₂表示上一轮输出已经变成当前输入y₄会继续追加到输入序列。错位预测图中明确标出输入 y₁,y₂,y₃ → 输出 y₂,y₃,y₄即位置t预测t1。策略对比右下角补充 Greedy、Beam Search、Sampling、Top-k/Top-p 的差异突出 Greedy 快但容易局部最优。3.3 Beam Search核心设定beam size k3每条存活序列扩展 Top-3全局排序后只保留 3 条。中心搜索树展示从I出发第一步保留am / Like / hate第二步扩展成 9 条候选。打分方式用累积 log 概率排序例如am a -0.7 -0.1 -0.8。剪枝机制框住保留的前三条划掉其余路径说明 Beam Search 比 Greedy 更稳但剪枝不可逆、成本随k²增长。3.4 Label Smoothing–让模型不要太过自信核心设定beam size k3每条存活序列扩展 Top-3全局排序后只保留 3 条。中心搜索树展示从I出发第一步保留am / Like / hate第二步扩展成 9 条候选。打分方式用累积 log 概率排序例如am a -0.7 -0.1 -0.8。剪枝机制框住保留的前三条划掉其余路径说明 Beam Search 比 Greedy 更稳但剪枝不可逆、成本随k²增长。四、拓展Encoder and Decoder Based Models4.1 Build LLMs with Decoder Only左侧用 GPT-1 案例串起三点语料、任务、结果。中间把 Encoder 打叉并标出 Cross-Attention 随之作废。右侧保留 Decoder-only 主干Masked Self-Attention → FFN → Linear Softmax。底部总结核心单一堆栈、自回归目标、最容易扩展到大模型。4.2 BERT底部展示 BERT 的输入随机把约15% tokens替换成[MASK]。中间 BERT Encoder 使用双向 Self-Attention被遮住的位置可以看左右上下文。顶部只取[MASK]位置的输出向量经FFNN Softmax预测原词。右下角对比 GPT 和 BERTGPT 擅长生成BERT 擅长理解。BERT更适合做完形填空不适合做预测五、Advanced Topics5.1 Absolute Position Embedding一 存在的问题左侧表格展示位置m0~8在sin和cos两个维度上的离散采样值。右侧曲线展示同一组数的连续波形黄色点对应表格中m8的数值。公式说明偶数维用sin奇数维用cos维度越高波长越长。底部总结作用给不识顺序的 Attention 注入位置信息同时数值稳定、可外推。左侧表格把每个位置m写成二维向量[sin(m), cos(m)]。右侧单位圆把这些二维数画成箭头m0指向 12 点钟方向。相邻位置之间相当于固定旋转1弧度位置差可以理解成角度差。这页补充了上一页波形视角上一页看“数值如何振荡”本页看“位置之间的几何关系”。5.2 旋转位置编码左侧展示 RoPE 的高维矩阵形式一个大的分块对角旋转矩阵。右侧展示q向量被两两分组(q0,q1)、(q2,q3)、…… 每组独立旋转。中间公式说明q_m R_m q、k_n R_n k最终内积只保留相对位置n-m。底部强调工程实现实际不用真的乘大矩阵而是拆偶数/奇数维做向量化旋转。5.3 Attention的问题中央用三层金字塔展示GPU SRAM / GPU HBM / CPU DRAM的速度与容量差异。红圈突出19 TB/s与1.5 TB/s并标出×13的带宽差距。右上对比传统 Attention保存N×N中间矩阵反复在 HBM 和 SRAM 间读写。右下展示 Flash Attention通过Tiling Online Softmax减少 HBM 访问仍保持Exact Attention。总结下来就是1计算问题2数据传输问题5.4 Attention的改进–Flash Attention
返回列表