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

大模型的前生今世(二)

自注意力机制

序列:在深度学习中一般为带有时间先后顺序(拥有逻辑结构)的一段具有连续关系的数据(文本,语音等等)

注意力机制:

模拟人类视觉系统的聚焦能力,让模型能够在处理复杂数据时,选择性地关注输入的不同部分。RNN模型对于前面处理过的信息会有遗忘,导致在处理后面的信息的时候会忘记和前面的关联,因而引入注意力机制,使模型根据当前处理的元素,动态地关注输入序列中的相关部分。

注意力机制的核心组件:

  1. 查询(Query, Q):表示当前需要关注的信息

  2. 键(Key, K):表示输入序列中每个元素的特征

  3. 值(Value, V):表示输入序列中每个元素的具体内容

  4. 注意力权重(Attention Weights):表示每个输入元素对当前查询的重要程度

  5. 上下文向量(Context Vector):通过加权求和得到的输出

在RNN的基础上演进出LSTM(长短期记忆网络),专门设计用来解决标准RNN在处理长序列数据时梯度消失和梯度爆炸的问题。

引入精心设计的门控单元结构,能够学习、处理和分类顺序数据,并捕捉数据时间步之间的长期相关性。LSTM的核心在于其“记忆细胞”和三个门控机制:遗忘门、输入门和输出门。这些门控机制共同作用,决定哪些信息需要被长期记住、哪些新信息需要被存入,以及哪些信息需要被输出,从而实现对有价值信息的长期记忆。

vLLM - 伯克利大学LMSYS组织开源的大模型高速推理框架。核心目标是提升实时场景下语言模型服务的吞吐量与内存使用机制。引入PagedAttention技术,该技术灵感源自操作系统的虚拟内存分页机制,将KV cache划分为固定大小的块,进行动态管理,从而提高GPU现存利用率。解决传统推理中因为KV cache预分配和变长序列导致的内存碎片与浪费问题。

Self-attention - 将单个序列的不同位置关联起来以计算同一序列的表示

注意力机制的Q和K是来自不同的元素,自注意力机制的Q和K都是来自同一组的元素,可以建立全局的依赖关系,扩大图像的感受野。相比于CNN,其感受野更大,可以获取更多的上下文信息。

多头注意力机制:对每个Q和所有的K-V做多次注意力机制。做几次就是几头。意义在于获取每个Q和所有的K-V的不同依赖关系。这里的几头可以类比为卷积神经网络中的卷积核个数,用于从不同角度获取Q和K-V之间的特征。(下图为2头)

为什么要用多头:

一段文字中可能蕴含情感维度,时间维度,逻辑维度等不同角度的特征,所以要使用Multi-head。

将输入序列按照不同的投影矩阵,分别投影成多组不同的Q,K,V,并行分别计算后,再把各组计算的结果合并作为最终的结果

Q, K, V计算

序列长度为n,计算复杂度为O(n^2). GPU可以对矩阵并行计算所有的可能,因为每个序列元素对的注意力计算是独立的,所以GPU可以为其加速。

每个词都先经过embedding,之后经过三个投影矩阵得到三个向量Q,K,V

先计算Q和K每一行的内积,防止内积过大导致softmax梯度消失,故除以d_k, d_k的值取决于向量的维度,d_k的根号值一般为维度的开方值,维度是每个头Q,K的维度

Q和K点乘得内积,得到每个单词相互之前的注意力score,点击相当于Q在K上的投影

softmax的结果都为正值,相加得1

score和V相乘,加权求和,得到每组注意力head的输出。

参考:一文搞定自注意力机制(Self-Attention)-CSDN博客

self attention可以捕获同一个句子中单词之间的一些句法特征或者语义特征,更容易捕获句子中 长距离的相互依赖的特征。在RNN和LSTM中,需要按照顺序序列计算,对于远距离的相互依赖得分特征,要经过若干步骤的信息累积才能将两者联系起来,距离越远,有效捕获的可能性越小。

self attention在计算过程中,通过Q和任意KV的计算,能够将任意两个单词的联系通过一个计算步骤直接联系起来,所以距离远的两个词之前的特征计算对距离的依赖大大减小。且self-attention的这些计算是独立可以并行的。

自注意力机制中本身没有位置信息处理能力,导致模型无法捕捉序列中单词的顺序,通过添加位置编码来提供序列中每个元素的位置信息。

Transformer

基于自注意力机制的架构

通俗理解QKV机制

当我们到图书馆进行检索时,你想看的说就是你提出的Query(比如“科幻类的书有哪些”),那么图书馆中的每本书的索引(书名或者标签)就是Key,用来匹配检索需求,而每本书中的实际内容就是Value,是最终需要的核心信息。

自注意力机制就是:根据自己的Q,匹配的书的索引K,给匹配度高的K打高分(注意力权重),再根据分数高低,提取书中的内容V,整合得到输出

Transformer:检索(QKV)+ 整合 + 校验,多个这样的流程叠加,完成复杂的序列任务。

传统的RNN:你有查询的需求Q,但是智能按照书籍的顺序一本本翻书,无法检索匹配度高的,翻到后面就忘了前面(长距离依赖丢失),速度慢 (串行)

Transformer:同时查看所有书的索引,直接找到最相关的书籍,还能记住所有相关内容的关联,速度快且比RNN更精准 (并行)

Transformer发展史:

2017 → Attention Is All You Need (原始Transformer)

2018 → BERT (双向编码器)

2018 → GPT-1 (单向解码器)

2019 → GPT-2 (更大规模)

2020 → GPT-3 (175B参数)

2022 → ChatGPT (对话优化)

2023 → GPT-4 (多模态)

2025 → GPT-5 (模型集成)

Transformer架构

编码器 + 解码器。起初是为了机器翻译任务量身定制的,其中编码器负责处理源语言输入,解码器负责生成目标语言输出,最后整合到线性输出层。

输入层

词嵌入 word embedding, 将每个单词转换为固定难度和向量表示。

在人类语言文本进入encoder之前,要进行token化,100个token对应50个汉字或者75个英文单词。

为什么不一个字一个token?

1.控制词表大小,不能每个字每个词都输入,因为会有生僻字,新造词

2. 复用语义:比如happy作为核心token可以加词缀,推导别的词,

3. 合理的拆分,保留完整语义。比如《西游记》三个字作为一个token,比拆分开更能让模型识别其为书籍名称

由于计算机无法处理文本,所以要将token转化成向量,由embedding完成。

早期会使用one-hot编码:

1. 向量稀疏:仅对应的token位置维度为1,其他位置为0

2. 无语义关联:任意两个one-hot向量的距离均为0,无法区分“开心"和”快乐“的相近语义,或者具有同一偏旁部首的关联性

3.无逻辑关系,比如无法根据"国王” - “男人” + “女人” 推导出“女王”

现在使用稠密向量,也就是token的每个维度都有值,能够通过训练自动捕捉语义关联。

位置编码 position encoding,为模型提供单词的位置信息,维度要与embedding一致,便于后面做点积

文本语义高度依赖词的位置,比如“狗咬猫”和“猫咬狗”因为名词位置的变换而导致语义不同。

self-attention本身不具备“顺序感知能力”。通过正弦函数和余弦函数生成位置编码,区分不同位置且让模型感知位置距离。

如果不加位置编码,无论单词在什么位置,它的注意力分数都是确定的,加上之后,注意力分数会因为位置的不同而变化。

输入进行上述的预处理后,进入encoder

ENCODER

1. 多头自注意力机制

Q, K, V的计算

2. Add & Normalization

Add - 在attention的输出上加一个残差块,防止深度神经网络在训练过程中发生退化的问题(深度神经网络通过增加网络的层数,损失逐渐减小,趋于稳定,但是再继续增加网络层数,损失反而会变大。(残差连接,让网络只关注当前差异部分,ResNet)

Normalize - 加快训练速度,提高训练的稳定性。使用layer Normalization,在同一个样本中不同神经元之间进行归一化

3. 位置感知前馈神经网络

两层神经网络

Feed -Forward Network, 本质是全连接神经网络,对每个token的向量进行独立的非线性变换,进一步提炼语义特征。

这里位置感知前馈神经网络的输入已经包含位置编码,位置编码发生在进入attention计算之前,embedding之后,token进行embedding之后,将位置编码作为基础向量加在每个token embedding之后的向量上。

第一层线性变换:将向量维度从512提升至2048,通过ReLU激活函数引入非线性

ReLU = max(0,x)

第二层线性变换:将维度从2048降回512,保证输出维度与输入维度一致

目的:将输入的向量映射到更加高维的空间中,然后通过非线性函数ReLU进行筛选,再变回原来的维度。

DECODER

从语义向量到文本生成

使用masked多头自注意力层,在多头自注意力的基础上多加了一个mask码。mask对某些值进行掩盖,使其在参数更新时不产生效果。

padding mask - 每个批次输入的序列长度不一样,要对输入序列进行对齐。填充0,或者截取长的。这些填充的位置,没有实际意义,attention机制不需要把注意力放在这些位置上面,所以可以给这些值加一个非常大的负数,经过softmax,这些位置的概率会接近0。

sequence mask - 使decoder不能看见未来的token。生成的时候是一个一个token生成的。在t时刻解码输出只依赖于t时刻之前,也就是说第二个token只能依赖已经生成的第一个token。用一个上三角矩阵,将未来的token遮盖住,也就是将矩阵中对应位置(橘色)设置为负无穷,经过softmax之后就会为0。这样确保模型只能基于“已生成的token”进行预测,符合人类“逐字表达”的逻辑。

输出层

将decoder的结果经过一次线性变换(简单的全连接神经网络),用softmax得到输出的概率分布,通过词典,输出概率最大的对应的单词作为预测的输出。

参考:【超详细】【原理篇&实战篇】一文读懂Transformer-CSDN博客

三大经典经典模型的比较

CNN (卷积神经网络)

应用于图像识别,尤其是静态图像。无法很好地捕捉到时间依赖结构。长于局部特征提取

图像识别,图像分类等

RNN (循环神经网络)

应用于序列数据处理。有长依赖效应(忘记前后关联,难以捕捉远距离的时间依赖,梯度消失或爆炸),串行处理,处理效率低。

语音识别

Transformer (基于自注意力机制的神经网络)

应用于序列数据处理。能够更好捕捉长序列中的全局依赖关系,并行处理,处理效率高,计算成本高。

机器翻译,文本生成等。

CNN 和 Transformer根据特点选择,或者结合使用。参考:

​​​​​​​​​​​​​​深度学习模型的比较和选择:CNN、RNN和Transformer的优缺点和适用场景-腾讯云开发者社区-腾讯云

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

相关文章:

  • 实验十五:默认路由和特定主机路由的配置
  • 终极赛博朋克2077存档编辑器:如何自定义你的夜之城冒险
  • Scrapy实战爬取5sing网站:Pipeline优化+全流程踩坑复盘,从报错到数据落地
  • LeetCode 热题 100 精讲 | 动态规划进阶篇:最大子数组和 · 分割等和子集 · 最长公共子序列 · 打家劫舍 III
  • 进程本地通信
  • MySQL Explain 计划优化实战案例
  • 华为MetaERP核算架构中管理单元的设计逻辑与实现原理,并与Oracle EBS的业务实体(OU)进行对比分析
  • 若依框架菜单扩展全攻略:从数据库到前端路由的完整流程解析
  • Agent Client Protocol 全景解析讨
  • BitTorrent Tracker列表技术深度解析与架构设计原理
  • 从公众号到后台:一次意外的教育系统未授权访问漏洞发现之旅
  • 从零到一:手把手教你用Labelme打造专属Mask数据集
  • 别再傻傻全量微调了!用Prompt-Tuning冻结大模型,成本直降99%
  • AI Agent 跑完任务怎么通知你?我写了个微信推送服务八
  • 梅德生物技术快报|重组蛋白纯化工程化实现:Amuc_0119 蛋白 Ni‑NTA 亲和层析全参数方案
  • AI原生体验设计为何92%失败?:从LLM幻觉到用户信任断层的5层认知陷阱与修复路径
  • 2、高数----数列极限(知识总结)
  • CentOS7物理机网卡驱动缺失?手把手教你搞定Intel i219-v网卡驱动安装
  • Cisco 18系列AP通过u-boot实现tftp镜像启动的详细步骤解析
  • [具身智能-349]:在MCP架构中,如何部署大模型、启动和初始大模型?MCP Client如何与大模型交互?
  • OSI七层模型实战指南:从物理层到应用层的网络排错技巧
  • 大模型工程化成本失控的5个信号,第3个90%团队至今未察觉:2026 Q1行业审计报告首发
  • 从网线到Wi-Fi:深入浅出聊聊曼彻斯特编码在以太网中的前世今生
  • 一物一码系统怎么搭建?从0到1的完整实施路径与避坑指南
  • STEP3-VL-10B效果展示:10B参数轻量模型,图片问答效果媲美百亿大模型
  • 嵌入式系统开发方法论
  • 从75Ω同轴线到100Ω差分线:一文搞懂不同传输线标准下的S参数转换与对比
  • Silk-v3-decoder技术架构解析:企业级音频格式转换解决方案
  • 3 小时免费完成 Cyber Security 项目并获得证书:快速入门与技能提升
  • Java垃圾回收算法与性能调优