工作原理:Query, Key, Value

核心思想:为句子中的每个词都配备一个“关系探测器”。当模型试图理解一个词时,这个词会发出一个查询 (Query),去和句子中所有词的键 (Key)进行匹配,计算一个“相关性分数”。这个分数决定了每个词的值 (Value)应该被给予多大的“注意力”。

Query (Q)

代表当前正在处理的词,它在“主动查询”与其他词的关系。

Key (K)

代表句子中所有词的“标签”,用于被 Query 查询和匹配。

Value (V)

代表句子中所有词的实际内容。最终的输出是所有 Value 的加权平均,权重由 Q 和 K 的匹配度决定。

动手试试:

将鼠标悬停在下面句子中的某个单词上,观察模型是如何计算注意力分数,并为其他单词赋予不同权重的。例如,当关注“它”时,模型会给予“猫”最高的注意力。

import numpy as np def softmax(x): e_x = np.exp(x - np.max(x)) return e_x / e_x.sum(axis=0) # 1. Q, K, V (通过权重矩阵与输入相乘得到) # Q_it = X_it @ W_Q # K_all = X_all @ W_K # V_all = X_all @ W_V # 2. 计算分数 # scores = Q_it @ K_all.T # 3. 计算权重 # weights = softmax(scores / sqrt(d_k)) # 4. 加权求和 # output_it = weights @ V_all
计算过程:

句子: