题目要求实现一种新的注意力机制 TG-SA,整体流程可以直接按题意模拟,核心涉及两个算法步骤:
设输入矩阵为 Q,K,V∈RL×d。
在仅使用 numpy/pandas/scikit−learn 的前提下,实现一种新型注意力机制 TG−SA,并完成给定序列的加权求和。与经典 Q⋅ KT/d Softmax 不同,TG−SA 通过双门控转折 +Top−k 保留得到更稀疏、可解释的权重。
给定单头 Query/Key/Value 张量
Q,K,V∈RL×d (长度 L、隐维 d),以及超参
k_top:每行保留前 k_top 最大注意力得分
α:第 1 门限系数 (0−1)
β:第 2 门限系数 (0−1),且 β>α
默认 α=0.2,β=0.6;k_top≤L。
计算过程:
1. 初始打分:S=QKTd(L×L)
2. 双门控折线映射

其中 smax=maxjSij 为行内最大。
3. Top−k 稀疏
每行仅保留 k_top 个 S~ij 最大位置;其余设 0。若行长 <k_top,则全保留。
4. 行归一化
若行全 0,则改为均匀分布;否则归一化到和为 1 :Aij=S~ij/∑jS~ij。
5. 输出
O=AV(L×d)
同时返回注意力权重矩阵 A 。
单行 JSON
{
"Q":[[...],...], //L×d
"K":[[...],...],
"V":[[...],...],
"k_top":2, //2≤k_top≤L
"alpha":0.2, //可缺省
"beta":0.6 //可缺省,且>alpha
}
约束:2≤L≤6,2≤d≤4;所有元素为浮点。
仅一行 JSON
{
"A":[[a11,...],...], //L×L,6位小数,便用round(x,6)即可
"O":[[o11,...],...] //L×d,6位小数,便用round(x,6)即可
}
为确保通过测试用例,仅允许便用 numpy/pandas/sckit−learn。
输入
{"Q":[[1,0],[0,1]],"K":[[1,0],[0,1]],"V":[[1,2],[3,4]],"k_top":1}
输出
{"A":[[1.0,0.0],[0.0,1.0]],"O":[[1.0,2.0],[3.0,4.0]]}
本题属于以下题库,请选择所需题库进行购买