大模型基础执行学习- 3(transformer)

📅 2026/7/1 1:01:26
大模型基础执行学习- 3(transformer)
transformer相关的代码参考了视频 手搓Transformer第六集整合篇_哔哩哔哩_bilibili多头注意力------masked多头注意力机制目的通过输入多组WK,WQ,WV来得到多个K Q V从而实现从不同纬度不同角度提取出的上下文信息最终通过一个concat进行拼接得到最终的上下文矩阵让模型能从不同角度理解输入序列通俗理解多个专家会诊想象你生病了去医院单头注意力只看一个专家医生。这位专家可能擅长内科但对外科不太了解。他的诊断可能不够全面。多头注意力组织一个专家会诊团队内科专家关注你的体温、血压整体状况外科专家关注你的伤口、疼痛位置局部问题影像专家关注CT、X光片深层结构化验专家关注血液指标微观数据每个专家从不同角度分析你的病情最后综合所有专家的意见得出更全面、更准确的诊断。多头注意力 多个专家从不同角度同时看问题多头注意力就是把自注意力复制多份并行运行每份从不同角度分析输入最后综合各方观点让模型对上下文的理解更全面、更细腻——就像请多个专家会诊而不是只听一个医生的意见。计算多头注意力是多个并行的注意力其实就是对于输入x矩阵对于w0用于把多头的拼接转换为融合把纬度拉回方便后续网络能用。注意之前的误解假设一个输入X为3 * 512纬度的有8个头那么计算过程残差连接和层归一化残差连接经过自注意力进制后得到了需要关于这样词语的新的含义但是新的含义可能会淹没原来词的意思所以需要做一次残差处理确保原来的词义仍然保留仅仅是做了丰富。类比相当于做笔记一样学习过程中会对原来的知识点有更进一步的理解残差连接让做笔记过程中新的理解只是以批注的形式存在而不是替代原来的含义层归一化LN层对同一个样本的输入对应的输出会有多个值对这些值进行归一化操作y和bei ta通过反向传播进行调整的其实的操作就是 layerNorm(x) (x-均值) / 方差 *gamma beta层归一化的计算假设一个向量为xx 词1: [0.5, 1.2, -0.3, 0.8]计算标准差注意归一化时是每个词向量内部求均值求方差然后最终 0 用公式做计算feed-forward也叫做MLP全连接层在模型中引入非线性使得模型可以模拟如何一种曲线Feed Forward 层 对每个 token 单独做 “特征提纯 / 非线性变换”不跟别的 token 交互只强化、提纯当前 token 自己的信息就是说每次词token单调处理让这个词自己思考不与其他词交互交叉注意力Q:解码器输入K:编码器输出V:编码器输出这里面的意思是q来自解码器需要乘wq得到Qkv来自编码器需要乘wkwv得到K,V然后再用这些东西做计算masked训练时mask加入到的是QKT/根号dk后面加入的都是负无穷masked实现实际是通过让不想被看到的词attention-scroe0单个元素mask是训练时为了让并行计算模拟串行生成而设计的作弊防止器推理时串行生成自然满足因果性。transformer架构训练过程假设做的是机器翻译任务 我 是 一个 学生 ----》 i am a student首先把 我是一个学生 转换为词向量输入编码器编码器给出一个K和V然后把 i am a student 作为输入全部传给解码器注意传给解码器的正确的标签而非是解码器的输出然后训练时使用到时masked的多头注意力机制会在训练时只让模型看到左边的label而不能看正确答案然后得到输出计算输出和正确答案的loss然后进行反向传递进而更新编码器和解码器的参数推理过程区别训练过程是并行的推理过程是串行的Transformer每层输入输出理解用来加深对transformer架构的理解0.分词层输入一句话然后分词层把他转换为一个一个的token然后查询词表最终得到一个id索引然后把所有输入到token词嵌入层中1.token词嵌入层输入一个词id也可以是一句话呢就是一堆的词id输出这个词在查询表中对应词向量512纬度如果是一句话呢就输出一个类似矩阵2.postional编码层输入输入的就是词向量矩阵的形状有多少句话这句话有多少个词每个词的纬度输出输出的是对应形状的向量序列3.总的词嵌入层输入一句话输出词向量矩阵这个词向量矩阵 词义矩阵 位置信息矩阵把这个句子当做x输入到多头注意力机制中4.多头注意力机制层输入词向量矩阵x输出词向量矩阵z这个z包含了多角度的上下文信息句法信息5.全连接层输入是经过注意力残差连接归一化后的向量三维的多层堆叠的二维矩阵输出同形状提纯后的向量6.层归一化和残差连接输入3纬向量输出同形状归一化后的结果层归一化对每个词向量做归一化即同一个句子中的每个512纬词向量做归一化多句话每句话多个字每个字512纬7.总的编码器层输入多句话输出对应的3纬张量包含了位置信息句法信息的词向量二维数组8.mased的所有注意力层输入输出9.交叉注意力层输入q(来自解码器的输出)k来做编码器输出v来自编码器输出输出新的上下文矩阵z10.Linear层输入输出11.总的解码器层输入输出12.编码器和解码器数据交互、总体理解如何实现机器翻译训练时给编码层输入一个 我 爱 你给解码器输入一个 i love you然后让模型学习和预测预测出一个英文字母然后和答案做loss使用梯度下降一直给模型调参和纠正错误一步一步的学习最终实现效果类似于让模型学骑自行车旁边有人一直扶着他并给他纠错最终学习下实现可以单独骑自行车的效果学习率预热