题目要求实现单头 Self-Attention(自注意力)机制的前向计算。给定序列长度 n 和特征维度 d,输入矩阵 X∈Rn×d 以及三个权重矩阵 Wq,Wk,Wv∈Rd×d。
计算过程分为四个步骤:
给定序列长度 n、特征维度 d 的输入矩阵 X(大小为 n × d),以及三组权重矩阵 Wq, Wk, Wv(大小均为 d × d),请你实现单头 Self-Attention 的前向计算,并返回 Attention 输出矩阵 O。
Attention 计算定义如下:
线性映射:
Q = X · WqK = X · WkV = X · Wv缩放点积得分:
S = Q · K^T / sqrt(d)
其中 K^T 为 K 的转置。行级 softmax 得到注意力权重:
A = softmax(S)
对每一行独立做 softmax。输出:
O = A · V请返回 O(形状为 n × d)。
你的答案与标准答案误差不超过 1e-4 即视为正确。
n: 序列长度d: 特征维度X: n × d 浮点矩阵Wq, Wk, Wv: d × d 浮点矩阵O,大小为 n × d1 <= n <= 501 <= d <= 50X[i][j], Wq[i][j], Wk[i][j], Wv[i][j] 为浮点数-3 <= X[i][j], Wq[i][j], Wk[i][j], Wv[i][j] <=3 输入:
n = 2 , d = 2
X = [[1,0],[0,1]]
Wq = [[1,0],[0,1]]
Wk = [[1,0],[0,1]]
Wv = [[1,2],[3,2]]
输出:
O = [[1.6605,2.0000],[2.3395,2.0000]]
解释:
Q=K=X,先算 Q·K^T/sqrt(2) 得到注意力分数,softmax 后加权 V 得到输出。