当前位置: 首页 > news >正文

大模型基础执行学习- 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

层归一化的计算:

假设一个向量为x
  1. x = 词1: [0.5, 1.2, -0.3, 0.8]
  1. 计算标准差
注意:归一化时,是每个词向量内部求均值,求方差,然后最终 0 用公式做计算

feed-forward

也叫做MLP
全连接层,在模型中引入非线性,使得模型可以模拟如何一种曲线
Feed Forward 层 = 对每个 token 单独做 “特征提纯 / 非线性变换”
  • 不跟别的 token 交互
  • 只强化、提纯当前 token 自己的信息
就是说每次词(token)单调处理,让这个词自己思考,不与其他词交互

交叉注意力

Q:解码器输入
K:编码器输出
V:编码器输出
这里面的意思是,
q来自解码器(需要乘wq)得到Q
kv来自编码器(需要乘wk,wv)得到K,V
然后再用这些东西做计算

masked:

训练时,mask加入到的是
QKT/根号dk后面,加入的都是负无穷
masked实现实际是通过让不想被看到的词attention-scroe=0(单个元素)
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(来自编码器输出)
输出:新的上下文矩阵z

10.Linear层

输入
输出

11.总的解码器层

输入
输出

12.编码器和解码器数据交互、

总体理解如何实现机器翻译
训练时:给编码层输入一个 我 爱 你
给解码器输入一个 i love you
然后让模型学习和预测,预测出一个英文字母,然后和答案做loss
使用梯度下降一直给模型调参和纠正错误,一步一步的学习,最终实现效果
类似于让模型学骑自行车,旁边有人一直扶着他并给他纠错,最终学习下实现可以单独骑自行车的效果

学习率预热

http://www.jsqmd.com/news/1099297/

相关文章:

  • 手把手教你用FPGA的SPI驱动AD9516-3:从评估软件到上板验证的完整避坑指南
  • 从安装到工程化:本地AI智能体框架Hermes Agent实战指南
  • 明日方舟资源宝库:游戏美术素材与数据的终极指南
  • Meta Quest 播放软件《下一代视频播放器》NEXt-Gen Video Player 下载和使用教程
  • Mevory技术解析:跨平台学习同步的难点与一致性保障方案
  • Saga 模式实现:从补偿事务到状态机编排,分布式事务的最终一致性之路
  • 5分钟快速上手Mate Engine:打造你的免费虚拟桌面伙伴终极指南
  • 别再手动整理图层了!用NX二次开发UF_LAYER函数批量管理,效率翻倍
  • 【论文复现】存在测距误差的WSN无锚点分布式自定位,《WSN中存在测距误差的无锚点分布式自定位方法》
  • 物理信息神经网络PINNs在布洛赫-托雷(Bloch-Torrey)方程上的应用求解 【torch案例】(Python代码实现)
  • 抖音监控助手:实时追踪博主动态与直播推送的终极指南
  • 什么样的设备会挂到platform总线下
  • VisualGGPK2完整指南:快速掌握《流放之路》游戏资源管理技巧
  • HunterPie终极指南:5分钟掌握《怪物猎人:世界》智能覆盖层
  • 物理信息神经网络PINNs求解欧拉-伯努利(Euler-Bernoulli)双梁正问题 【 torch 实战】(Python代码实现)
  • Spark SQL 优化:从 Catalyst 优化器到数据倾斜治理,大数据查询的性能调优路径
  • 3步解锁文本分析:KH Coder如何让零基础用户玩转多语言内容挖掘
  • 利用 Gemini 镜像站优化 Python 与 Go 项目:2026 年镜像站性能调优与排错实录
  • 当对话太长、裁剪也不够用时:Compaction 深度解析与 OpenClaw 的实战策略
  • 魔兽争霸3终极优化教程:如何三步解决现代硬件兼容性问题
  • Dify实战指南:2小时构建AI Agent与企业级自动化工作流
  • 3个技巧让日志分析效率翻倍:glogg完全指南
  • Doris部署与核心使用指南:从零构建实时分析数据仓库
  • Mac Mouse Fix:让你的普通鼠标在macOS上超越苹果触控板体验
  • 基于YOLOv8的铁路安全巡检系统:从算法原理到工程部署全流程
  • SSH多身份管理介绍(多个SSH账号、Host别名、~/.ssh/config文件、SSH密钥、SSH身份)
  • 用Arduino Nano和DS1906b舵机DIY仿生蝴蝶飞行器:从材料选择到代码调参的完整避坑指南
  • 摄影工作流革命:semi-utils批量水印工具的完整解决方案
  • 0630晨间日记
  • 当上下文管理变成“可插拔”:OpenClaw Context Engine 的抽象设计与策略生态