type
status
date
slug
summary
tags
category
icon
password
comment
Self-attention 是一种强大的神经网络机制,最初在 Transformer 模型中提出,现已广泛应用于自然语言处理、计算机视觉等多个领域。它允许模型在处理序列数据时,根据输入序列的不同部分之间的相关性来调整对各部分的关注度。
基本概念:
Self-attention 使模型能够在处理序列中的每个元素时,考虑序列中的所有其他元素。它计算序列中每个元素与所有其他元素(包括自身)的关联程度。
主要组成部分:
- Query (查询)
- Key (键)
- Value (值)
这三个组件通常通过对输入进行线性变换得到。
计算过程:
a. 对于序列中的每个元素,生成 Query、Key 和 Value。
b. 计算 Query 与所有 Key 的点积,得到注意力分数。
c. 对注意力分数进行缩放和 softmax 归一化。
d. 使用归一化后的分数对 Value 进行加权求和。
数学表达:
Attention(Q, K, V) =
其中 是 Key 的维度。
多头注意力 (Multi-Head Attention):
- 并行执行多个 self-attention 操作,每个称为一个"头"。
- 每个头可以关注输入的不同方面。
- 最后将所有头的输出连接并进行线性变换。
优势:
- 可以捕捉长距离依赖关系。
- 并行计算,效率高。
- 不受位置限制,可以灵活地关注相关信息。
应用:
- 机器翻译
- 文本摘要
- 问答系统
- 图像分类和分割
- 语音识别等
变体:
- 相对位置编码
- 稀疏注意力
- 局部注意力等
挑战:
- 计算复杂度随序列长度增加而快速增长 ()
- 对于非常长的序列,可能需要特殊处理