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

【深度学习—李宏毅教程笔记】Self-attention

目录

一、Self-attention 的引入

1、多样化的输入形式

2、典型的下游任务下游任务

3、传统“全连接 + 窗口”方法的局限

4、Self‑Attention 的引入

二、Self-attention 的架构

1、Self-attention层的框图表示

2、Self-attention 层的矩阵运算过程

三、Multi-head Self-attention

四、位置编码

五、Self-attention 的应用

1、在自然语言处理(NLP)中的典型应用

2、在语音信号处理中的应用

3、在计算机视觉中的应用

4、Self‑Attention 与卷积神经网络(CNN)的对比

5、Self‑Attention 与循环神经网络(RNN)的对比

6、在图结构数据(GNN)中的应用

7、高效 Transformer 与未来方向

8、总结


一、Self-attention 的引入

1、多样化的输入形式

对于常见的机器学习任务,输入形式是多样的:

  • 单向量(Vector)

    • 最基础的输入形式,例如将一段文本或一帧语音直接映射为实数向量。

  • 向量集合(Set of Vectors)

    • 句子中每个单词、语音信号中的每一帧、图结构中的每个节点,都可看作一个向量,模型的输入即这一组向量。而这种输入形式正是适合 Self-attention 的输入形式。

    • 例如:

      • 文本中单词的 one‑hot 编码或预训练词向量

      • 语音信号按帧提取的 MFCC 或滤波器组特征

      • 社交网络中每个用户节点的属性向量 ​

2、典型的下游任务下游任务

根据输入向量集合,模型的输出形式主要有以下几类:

  1. 逐向量标注(Sequence Labeling)

    • 对每个输入向量分别打标签,常见任务如词性标注(POS Tagging)、命名实体识别(NER)等。

  2. 序列级分类(Sequence Classification)

    • 对整个向量序列赋予一个标签,如情感分析、话者识别等。

  3. 动态标签数预测

    • 模型无需预先固定标签数量,例如聚类任务或机器翻译中的对齐机制。

  4. 序列到序列映射(Seq2Seq)

    • 输入和输出均为向量序列,典型应用为神经机器翻译 ​

3、传统“全连接 + 窗口”方法的局限

  • 全连接层(Fully‑Connected):只能将每个向量独立映射,缺乏上下文信息;

  • 滑动窗口(Window):虽然可引入局部邻域信息,但窗口大小有限,难以捕获远距离依赖;

  • 问题示例:单句“I saw a saw”,对第二个“saw”需要同时考虑前文的“I saw a”与后文的含义,但窗口方法可能覆盖不到全部上下文 ​

4、Self‑Attention 的引入

为了解决上述方法无法建模全局依赖的问题,在此处引入 Self‑Attention 概念:

  1. 核心思想

    • 在给定序列中,每个元素不仅与自身相关,还与序列中所有其他元素进行交互,通过计算相似度权重来聚合全局信息。

  2. 预期效果

    • 既能灵活捕捉长距离依赖,又能保留序列中各元素的相对位置信息(后续可结合位置编码)。

  3. 后续展开

    • 具体计算方式包括 Query/Key/Value 的映射、点积打分、缩放与 Softmax、加权求和,以及多头机制等。

                

二、Self-attention 的架构

1、Self-attention层的框图表示

Self-attention 的架构大体就上面的图片上的样子,有时在应用时可叠多层,如下图:

        ​​​​​​​        ​​​​​​​        

其中的每一个输出不仅仅只与对应的一个输入有关,其余的说有输入都影响到这个输出,比如 b^{1} 不仅仅与 a^{1} 有关,还受 a^{2},a^{3},a^{4} 的影响,如下图:

        ​​​​​​​          

在计算 b^{1} 时,可先建立  a^{2},a^{3},a^{4} 与 a^{1} 的联系,用 \alpha 表示,如下图:

        ​​​​​​​        

每一个输入都有一个自己的 Query、Key、Value,(Value后续用到)。Query、Key、Value都由相应的输入和一个参数矩阵 W^{q}W^{k}W^{v} 相乘得到,对于每一个输入,用的参数矩阵  W^{q}W^{k}W^{v}  都是相同的。

得到了 各个输入之间的关系 \alpha ^{1,1},\alpha ^{1,2},\alpha ^{1,3},\alpha ^{1,4} ,后将他们送到softmax层进行归一化,再与各个输入的 Value 相乘后加一起,就得到了 b^{1},如下图:

        ​​​​​​​        ​​​​​​​        

        ​​​​​​​        ​​​​​​​       

这就是 Self-attention 层从输入到输出的过程。所有的输出都是并行的

2、Self-attention 层的矩阵运算过程

步骤一:

一个 Self-attention 层的参数就只有三个矩阵: W^{q}W^{k}W^{v}  ,它们三个的任务是与输入分别相乘得到每个输入对应的 Query、Key、Value ,具体如下:​​​​​​​

步骤二:

接着由矩阵  k=\begin{bmatrix} k^{1}\\ k^{2}\\ k^{3}\\ k^{4} \end{bmatrix} 和矩阵 q=\begin{bmatrix} q^{1} &q^{2} &q^{3} & q^{4} \end{bmatrix} 相乘得到矩阵 A =\begin{bmatrix} \alpha _{1,1} & \alpha _{2,1} & \alpha _{3,1} & \alpha _{4,1}\\ \alpha _{1,2} & \alpha _{2,2} & \alpha _{3,2} & \alpha _{4,2}\\ \alpha _{1,3} & \alpha _{2,3} & \alpha _{3,3} & \alpha _{4,3}\\ \alpha _{1,4} & \alpha _{2,4} & \alpha _{3,4} & \alpha _{4,4} \end{bmatrix} ,再经过softmax得到 {A}'=\begin{bmatrix} {\alpha}' _{1,1} & {\alpha}'_{2,1} & {\alpha}' _{3,1} & {\alpha}' _{4,1}\\ {\alpha}' _{1,2} & {\alpha}' _{2,2} & {\alpha}' _{3,2} & {\alpha}' _{4,2}\\ {\alpha}'_{1,3} & {\alpha}'_{2,3} &{\alpha}' _{3,3} &{\alpha}' _{4,3}\\ {\alpha}' _{1,4} & {\alpha}'_{2,4} & {\alpha}'_{3,4} & {\alpha}'_{4,4} \end{bmatrix}  

步骤三:

然后再由矩阵 V=\begin{bmatrix} v^{1} &v^{2} & v^{3} & v^{4} \end{bmatrix} 和矩阵 {A}' 相乘得到 输出矩阵 O=\begin{bmatrix} b^{1} &b^{2} &b^{3} & b^{4} \end{bmatrix}



可更清晰得表示为

步骤一:

                 ​​​​​​​        

        ​​​​​​​      

步骤二:

      

步骤三:

        ​​​​​​​        



即全流程为:

三、Multi-head Self-attention

再普通 Self-attention 的基础上 添加多个注意力矩阵的运算,通过多头注意力找到输入之间的多种不同的相关性,即:

        ​​​​​​​        ​​​​​​​        

        ​​​​​​​        ​​​​​​​        

得到 b^{1}=\begin{bmatrix} b^{1,1} &b^{2,1} &b^{3,1} & b^{4,1} \end{bmatrix} 和 b^{2}=\begin{bmatrix} b^{1,2} &b^{2,2} & b^{3,2} & b^{4,2} \end{bmatrix} ,再将它两个乘上一个矩阵变成一个,即  b=W^{O}\cdot \begin{bmatrix} b^{1}\\ b^{2} \end{bmatrix}=W^{O}\cdot \begin{bmatrix} b^{1,1} &b^{2,1} &b^{3,1} & b^{4,1} \\ b^{1,2} &b^{2,2} & b^{3,2} & b^{4,2} \end{bmatrix}

四、位置编码

        对于上面的 Self-attention ,其中忽略了输入之间的位置信息,但这并不能说位置信息就丢失了,在学习过程中,位置信息会被学到,但如果提前加入位置信息,那么对于位置信息,模型就能更轻易的得到,相当于帮助了模型对位置信息的学习,也可以说对位置信息提前加入了先验,效果更好。所以说就有了位置编码。

位置编码的方式:

给输入 a^{i} 加上一个向量 e^{i} ,即:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​  

向量 e^{i} 长什么样子呢?最早的论文中的向量 e^{i} 如下图:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

        每个列都代表一个向量,从左到右依次是 e^{1}e^{2}e^{3}\cdot \cdot \cdot ,黑色框里的是 e^{4} .

        在论文 《All attention is you need》中它的位置向量是通过一个固定的规则所产生的,这个规则是一个很神奇的 sin cos 的函数所产生的。

        更多的位置编码:

  

        第一个图的位置向量是横着看的,是用 sin 函数产生的,第二个图是学出来的,即位置向量通过学习得到的,

五、Self-attention 的应用

1、在自然语言处理(NLP)中的典型应用

  • Transformer 与 BERT

    • Transformer 架构首次将全局自注意力引入序列建模,实现了并行化训练和长距离依赖捕捉。

    • BERT 在预训练阶段使用双向自注意力,有效地学习上下文表示,推动了阅读理解、文本分类等任务性能大幅提升。 ​


2、在语音信号处理中的应用

  • 长序列带来的挑战:语音信号通常以 10ms 为帧长,序列长度极大,直接计算全局注意力矩阵代价高。

  • 截断自注意力(Truncated Self‑Attention):仅对固定窗口或范围内的帧计算注意力,减少计算复杂度;

  • 局部范围内的注意力:结合局部上下文,有助于捕捉短时特征,同时兼顾部分全局信息。 ​


3、在计算机视觉中的应用

  • Self‑Attention GAN(SAGAN)

    • 在生成对抗网络中加入自注意力模块,增强远距离像素间的信息交互,提高生成图像的细节一致性。

  • Detection Transformer(DETR)

    • 将检测任务形式化为集合预测,引入全局自注意力取代传统的区域建议或锚框策略,实现端到端目标检测。 ​


4、Self‑Attention 与卷积神经网络(CNN)的对比

  • 感受野

    • CNN:固定且局部的感受野,由卷积核大小决定。

    • Self‑Attention:学习到的注意力权重即可视作可调节的“感受野”,可跨越全局。

  • 表达能力

    • Self‑Attention 是带可学习权重的复杂版本,能够灵活建模任意位置间的关系;CNN 是其简化形式。


5、Self‑Attention 与循环神经网络(RNN)的对比

  • 并行性

    • RNN 串行处理,难以并行;Self‑Attention 并行度高,训练速度快。

  • 依赖建模

    • Self‑Attention 天然捕捉长距离依赖;RNN 随序列长度增长易产生梯度消失。

  • 记忆机制

    • 自注意力通过键值对存储中间信息,类似可扩展的外部记忆。 ​


6、在图结构数据(GNN)中的应用

  • 图注意力网络(GAT)

    • 对图中的每条边应用自注意力,仅在相邻节点间计算注意力分数,实现节点特征的加权聚合。

  • 优势:更灵活地建模异质图结构中的节点关系,提升节点分类、链路预测等任务性能。 ​


7、高效 Transformer 与未来方向

  • Efficient Transformers(《Efficient Transformers: A Survey》)

    • 梳理了各种降低注意力复杂度的方法,如稀疏注意力、分块注意力、低秩分解等。

  • Long Range Arena 基准

    • 提供了对比不同高效 Transformer 在多种长序列任务上的表现,为后续模型设计提供评测标准。 ​


8、总结

        Self‑Attention 作为一种通用的关系建模机制,已广泛渗透到 NLP、语音、视觉、图神经网络等领域。其核心优势在于并行化训练、长距离依赖捕捉与可学习的全局感受野;同时,面对序列长度过大时,也催生了各类高效变体(如截断、稀疏、分层注意力)来平衡性能与计算资源。

相关文章:

  • Selenium无法定位元素的几种解决方案
  • 柴油机气缸体顶底面粗铣组合机床总体及夹具设计
  • 初始图像学(6)
  • Spring Bean 全方位指南:从作用域、生命周期到自动配置详解
  • vulfocus-empirecms 文件上传 (CVE-2018-18086)漏洞复现详细教程
  • 通过C# 将Excel表格转换为图片(JPG/ PNG)
  • 第T7周:咖啡豆识别
  • day1-小白学习JAVA---JDK安装和环境变量配置(mac版)
  • AIGC-几款本地生活服务智能体完整指令直接用(DeepSeek,豆包,千问,Kimi,GPT)
  • C#核心笔记——(六)框架基础
  • 《AI大模型应知应会100篇》第25篇:Few-shot与Zero-shot使用方法对比
  • top100 (6-10)
  • 实验五 内存管理实验
  • 使用MQTT协议实现VISION如何与Node-red数据双向通信
  • Excalidraw:一个免费开源的白板绘图工具
  • 电流模式控制学习
  • Java课程内容大纲(附重点与考试方向)
  • Explorer++:轻量级高效文件管理器!!
  • 【AI News | 20250418】每日AI进展
  • 【从零实现高并发内存池】申请、释放内存过程联调测试 与 大于256KB内存申请全攻略
  • 奥利弗·沙赫特博士:集群是产业集聚地,更是“超级连接器”
  • 经济日报:扩大内需与扩大开放并行不悖
  • 陕西省药监局:未检出巨子生物“可复美”存在“表皮生长因子”
  • 秦洪看盘|量能虽萎缩,但交易情绪尚可
  • 韩国国会未通过“内乱特检法”
  • 新华书店成立全民阅读研究院,李敬泽任专家委员会主任