小红正在检查大模型注意力模块的底层实现。为了批量处理不同长度的句子,输入中会包含 padding;为了保证自回归生成过程不偷看未来,还需要加入因果掩码。 给定一个已经缩放后的注意力得分张量 Score,形状为 B 个 batch、H 个 head、每个 head 一个 S*S 的矩阵。对于每个 batch b,给出有效长度 L_b。 小红需要依次完成三步: 1. 因果掩码:若列下标 j 大于行下标 i,则该位置不可见。 2. Padding 掩码:若 j >= L_b,则该位置不可见。 3. 位置惩罚:对仍可见的位置,令 slope = head_index + 1,并将得分减去 (i-j)*slope。 最后对每一行的可见位置做 safe softmax。不可见位置输出 0;如果一整行没有可见位置,则整行输出 0。
2 2 2 2 1 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0
1.0000 0.0000 0.2689 0.7311 1.0000 0.0000 0.1192 0.8808 1.0000 0.0000 1.0000 0.0000 1.0000 0.0000 1.0000 0.0000
考点:模拟
限制 2 秒 / 256MB | 核心代码模式(实现给定函数)
推荐方向:模拟
本题切入点
三步掩码叠加后做 safe softmax:先因果掩码(j>i 不可见)再 padding 掩码(j≥L_b),可见位按 (i−j)·(head+1) 做位置惩罚,每行减最大值后 exp 归一化,整行不可见时输出 0。
不涉及复杂算法,把题目描述的流程原样翻译成代码逐步执行即可。
思路框架(模拟 通法 · 非本题专属)
实现要点:结构上通常是一个外层循环包住若干 if/else 分支;只要状态定义清楚,正确率很高。
复杂度:时间 O(操作次数) | 空间 O(状态数)
该范式的通法易错点
样例 1
2 2 2 / 2 1 / 10.0 10.0 / 10.0 10.0 / 10.0 10.0 / 10.0 10.0 / 5.0 5.0 / 5.0 5.0 / 5.0 5.0 / 5.0 5.01.0000 0.0000 / 0.2689 0.7311 / 1.0000 0.0000 / 0.1192 0.8808 / 1.0000 0.0000 / 1.0000 0.0000 / 1.00解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2026年-华为-05月09号AI岗。