[{"content":"这篇文章是我在学习《动手学深度学习》时记录的笔记，或有疏漏，望海涵。\n1. 什么是注意力？ 人们认为，注意力由自主性注意力和非自主性注意力构成。\n自主性注意力是指人类主观意愿上分配的注意力，非自主性注意力是指在无主观意愿时被色彩、声音等刺激吸引的注意力。\n2. 注意力机制 注意力机制中有三种数据：查询 Query, 键 Key, 值 Value。\nQuery 是自主性线索，代表着我们当下想要查询的内容。 Key 是非自主性线索，蕴含着对 Value 在一定程度上的抽象后的信息。 Value 是实际输入的数据。 Key-Value 是成对出现的。 在注意力汇聚层中，我们通过计算 Query 和 Key 的相似度来分配 Value 的权重。\n3. Nadaraya-Watson 核回归模型 📝 历史\nNadaraya-Watson 核回归模型于 1964 年被提出。\nNadaraya-Watson 核回归模型使用非参数注意力机制：\n$$ f(x) = \\sum_{i=1}^n \\frac{K(x - x_i)}{\\sum_{j=1}^n K(x - x_j)} y_i $$其中，$K$ 是核函数。\n4. 注意力汇聚 我们可以进一步推广得到通用的注意力汇聚的公式：\n$$ f(x) = \\sum_{i=1}^n \\alpha(x, x_i) y_i $$其中 $x$ 是查询，$(x_{i}, y_{i})$ 是键值对。\n我们可以简单的认为：$\\alpha$ 是注意力权重，注意力汇聚则是进行一次加权平均。\n注意力权重满足：非负，且总和为 1。因此它们可以被看作是一个概率分布。\n考虑高斯核：\n$$ K(u) = \\frac{1}{\\sqrt{2\\pi}} \\exp(-\\frac{u^2}{2}) $$将其带入后，得到：\n$$ \\begin{split}\\begin{aligned} f(x) \u0026=\\sum_{i=1}^n \\alpha(x, x_i) y_i\\\\ \u0026= \\sum_{i=1}^n \\frac{\\exp\\left(-\\frac{1}{2}(x - x_i)^2\\right)}{\\sum_{j=1}^n \\exp\\left(-\\frac{1}{2}(x - x_j)^2\\right)} y_i \\\\\u0026= \\sum_{i=1}^n \\mathrm{softmax}\\left(-\\frac{1}{2}(x - x_i)^2\\right) y_i. \\end{aligned}\\end{split} $$从这里我们理解其内涵，Query 离 Key 越近，其权重越高。\n5. 注意力分数 进一步抽象，我们可以将 $softmax$ 的输入作为一个注意力分数，$softmax$ 负责将其映射到概率空间。\n$$ f(\\mathbf{q}, (\\mathbf{k}_1, \\mathbf{v}_1), \\ldots, (\\mathbf{k}_m, \\mathbf{v}_m)) = \\sum_{i=1}^m \\alpha(\\mathbf{q}, \\mathbf{k}_i) \\mathbf{v}_i \\in \\mathbb{R}^v, $$$$ \\alpha(\\mathbf{q}, \\mathbf{k}_i) = \\mathrm{softmax}(a(\\mathbf{q}, \\mathbf{k}_i)) = \\frac{\\exp(a(\\mathbf{q}, \\mathbf{k}_i))}{\\sum_{j=1}^m \\exp(a(\\mathbf{q}, \\mathbf{k}_j))} \\in \\mathbb{R}. $$这样做将模型结构进一步解耦合。\n我们接下来对注意力分数的“评分机制”进行优化。\n现有的机制是将 Query 和 Key 直接相减后计算差向量大小，这在一定程度上描述了两者的距离，但不够精确。\n5.1 缩放点积注意力 两向量的点积描述了它们之间的相似度。\n点积要求两向量拥有相同的长度 $d$，假设查询和键的所有元素都是独立的随机变量，并且满足：均值为 0、方差为 1，那么其点积就满足：均值为 0、方差为 $d$。\n方差过大会使注意力分数差异过大，分配的注意力权重就会不平衡，导致模型过早收敛。\n为了避免上述影响，我们将点积后的结果除 $\\sqrt{d}$，这样其方差就变为 $1$。\n于是我们得到缩放点积注意力（Scaled Dot-Product Attention）的评分函数：\n$$ a(\\mathbf q, \\mathbf k) = \\frac{\\mathbf{q}^\\top \\mathbf{k}}{\\sqrt{d}} $$使用小批量计算的缩放点积注意力则是：\n$$ \\mathrm{softmax}\\left(\\frac{\\mathbf Q \\mathbf K^\\top }{\\sqrt{d}}\\right) \\mathbf V \\in \\mathbb{R}^{n\\times v} $$5.2 加性注意力 当 Query 和 Key 的维度不同时，无法直接使用点积注意力。这时我们可以选择加性注意力。\n加性注意力的评分函数是：\n$$ a(\\mathbf q, \\mathbf k) = \\mathbf w_v^\\top \\text{tanh}(\\mathbf W_q\\mathbf q + \\mathbf W_k \\mathbf k) \\in \\mathbb{R} $$其中可学习的参数是 $\\mathbf W_q\\in\\mathbb R^{h\\times q}$、$\\mathbf W_k\\in\\mathbb R^{h\\times k}$ 和 $\\mathbf w_v\\in\\mathbb R^{h}$。\n将查询和键连结起来使用 $\\tanh$ 激活，然后输入到一个 MLP 中， 感知机包含一个隐藏层，其参数为 $\\mathbf w_v$，其隐藏单元数是一个超参数 $h$，最终输出一个实数作为注意力分数。\n加性注意力实际上使用了一个小的 MLP 来学习 Q、K、V 中隐含的关系。\n5.3 对比 由于缩放点积注意力的并行性、计算效率更高，所以它更加流行。\n","date":"2026-05-11T00:00:00Z","permalink":"/p/%E6%B3%A8%E6%84%8F%E5%8A%9B%E6%9C%BA%E5%88%B6/","title":"注意力机制"}]