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

Self‑Attention(自注意力)通俗 + 原理完整讲解

Self‑Attention(自注意力)通俗 + 原理完整讲解

一、核心作用

自注意力是 Transformer 模型的核心模块,目的:序列里面每一个 Token(单词、文字、向量),和序列里全部 Token 计算关联强弱,给自己分配不同权重,从而捕捉长距离依赖关系。 举例: 句子:He didn't finish his homework because he was tired传统 RNN 按顺序读取,相隔很远的两个 he 很难建立联系; Self‑Attention 可以直接让第二个 he 快速关联前面的 He,无视距离远近。

二、三个核心向量:Q Query 查询、K Key 键、V Value 值

输入每一个词的嵌入向量x,分别乘 3 组可训练权重矩阵 WQ​,WK​,WV​,得到:

QKV​=x⋅WQ​=x⋅WK​=x⋅WV​​​

  • Q:当前这个词要去寻找谁;
  • K:其余单词提供自身信息;
  • V:真正用来提取特征的值向量。

简单大白话:Q 拿着问题,挨个匹配 K,匹配分数决定取用 V 的多少。

三、计算步骤(标准缩放点积注意力公式)

步骤 1:计算相似度得分

某一个 Token 的 Q 和全部 Token 的 K 做内积:QKT。 内积结果越大代表两个单词相关性越高。

步骤 2:Scale 缩放(除以dk​​)

dk​代表 Q、K 向量维度。向量维度很高时内积数值会变得极大,经过 Softmax 之后梯度会极小,模型很难训练。除以dk​​把数值压小,梯度恢复正常。

score=dk​​QKT​

步骤 3:可选‑Mask 掩码

  1. 编码器 (Encoder‑BERT):无 mask,可以看到整句话全部内容;
  2. 解码器 (Decoder‑GPT):加入上三角 Mask,让第i个 token 看不到后面未来的 token,防止提前看到后文。

步骤 4:Softmax 归一化

对每一行做 softmax,所有分数变成 0‑1 之间的权重,一行所有权重总和等于 1:

A=Softmax(dk​​QK⊤​) 矩阵A就是注意力权重矩阵。Aij​代表第i个 token 对第j个 token 的关注程度。

步骤 5:加权 Value 得到输出

注意力权重乘以 V 矩阵,把其他单词的信息加权汇总到当前单词:

Output=A⋅V 之后再过一层线性层和残差连接 + LayerNorm。

四、多头自注意力 Multi‑Head‑Attention(拓展)

把 Q、K、V 拆分到h个 head 分头计算自注意力:

  1. 将 Q,K,V 均匀切分;
  2. 每个 head 独立算 self‑attention;
  3. 把每个头的结果拼接起来再乘输出矩阵; 好处:
  • 不同头捕捉不一样类型关联:语法关系、指代关系、位置关系;
  • 特征空间多元化,表达能力更强。

五、数学公式精简版(官方公式)

Attention(Q,K,V)=Softmax(dk​​QK⊤​)VMultiHead(Q,K,V)=Concat(head1​,...,headh​)WO​

六、Self‑Attention 对比 RNN、CNN 优缺点

优点

  1. 全局视野:任意位置 token 直接交互,轻松捕捉长距离依赖,RNN 距离太远信息衰减严重;
  2. 完全并行计算:RNN 必须顺序逐个计算;Self‑Attention 整段序列一起运算,GPU 利用率极高;
  3. 动态分配权重:上下文不同,关注重点自动变化(一词多义天然解决)。

缺点

  1. 时间复杂度 O(n2),文本很长时n变大,算力消耗爆炸;
  2. 本身不内置位置信息,必须额外加入位置编码 Positional Encoding区分词语先后顺序。

七、极简生活化例子

句子:I drank coffee

  • token‑I:Q 查询,和 K (I、drank、coffee) 打分;发现和 drank 关联性更高;
  • token‑coffee 重点关联 drank; 自注意力自动学到:coffee 是 drank 的宾语。

八、区分概念

  1. Self‑Attention:Q、K、V 全部来自同一组输入(BERT、GPT);
  2. Cross‑Attention(交叉注意力):Q 来自解码器,K、V 来自编码器,用于翻译模型,Q 和另一序列做匹配。
http://www.jsqmd.com/news/1170951/

相关文章:

  • 3GPP 38.211 至 38.215:5G NR 物理层 5 大核心协议实战解读与关联
  • FFmpeg 7.0 源码编译安装:Ubuntu 24.04 与 CentOS 7 双系统 5 步配置对比
  • C++实现双摆混沌系统模拟:从拉格朗日方程到RK4数值求解
  • VLA与世界模型:自动驾驶感知-决策的协同演进路径
  • 时间片轮转调度算法 RR 实战:C语言模拟 5进程 3种时间片性能对比
  • 华为设备 Telnet AAA vs Password 认证模式:3个关键差异与5步配置对比
  • 客户端日志上报怎么设计?让线上问题不再只靠用户截图
  • 2026年AI Agent技术栈全景图:从底层模型到上层应用——深度解析架构演进与企业落地实践
  • Hermes Agent实战:构建自进化AI Agent系统的完整指南
  • C++与Pro/Toolkit实战:从零构建Pro/E自定义菜单插件
  • Conda vs Pip vs Venv:3 种 Python 环境管理方案深度对比与选型指南
  • RC滤波电路总结
  • 基于ADS1015L与TM4C123的高精度信号采集系统设计
  • 3天精通!FanControl如何彻底改变你的电脑散热体验?
  • GitHub 机器学习仓库实战:3步构建个人知识库与自动化学习路径
  • 南京大学电子信息保研面试真题解析:2023年通信/电子组5类高频问题与复习要点
  • 高空作业平台选型技术白皮书:从工况分析到设备匹配的完整方法论
  • 免费开源三国杀:无名杀网页版终极体验指南 [特殊字符]
  • C++工厂模式6种高级变形用法:从模板工厂到依赖注入容器实战解析
  • 从模糊拒绝到像素级排除:Midjourney否定提示词的语法层级拆解(含Token级解析与Comma-Weighting公式)
  • Wireshark 实战:GB/T28181 录像回放 5 类信令交互抓包与深度解析
  • Excel TEXTSPLIT 函数实战:3步替代 FIND+MID 复杂公式拆分字符串
  • 写一个URL分析,正则表达式
  • 软件架构图绘制工具链:PlantUML vs Draw.io 等5款工具实战对比
  • 通俗拆解:Q‑K‑V 逻辑,结合数学过程讲明白
  • 重新定义岛屿创意:Happy Island Designer 的视觉化设计哲学
  • Windows 11终极清理指南:5分钟让系统更流畅、更私密、更高效
  • IUV-5G 24.6 全网仿真:NSA Option3X 组网下 3 类常见链路故障排查指南
  • 理光 GEN6 喷头实战:MH5320 水性墨水寿命提升 2 倍背后的粘合技术剖析
  • Git Rebase 冲突解决全流程:从定位到修复的3个核心步骤与2个恢复命令