跳到正文

序列与注意力:掩码、长度和泄漏

14 分钟

RNN和Transformer处理序列时,填充、因果掩码、位置和长度是最常见静默错误来源。模型可能因看到未来标签或padding规律取得漂亮分数,却无法真实部署。

padding掩码

批量序列补齐后,注意力和损失都应忽略padding。只掩注意力不掩损失,模型仍会学习补齐标签;掩码形状广播也需断言。

因果掩码

自回归任务位置t只能看过去和当前。训练若误看未来,损失异常低;生成时未来不存在,性能崩溃。用改变未来token但检查当前输出不变的测试验证。

位置表示

没有位置编码,自注意力对顺序置换不敏感。绝对、相对和旋转位置各有外推特点,最大训练长度外的表现需单独测试。

教师强制与生成

训练使用真实前缀,推理使用自身预测,会产生暴露偏差。评价必须按真实生成流程,而非只报告逐token教师强制准确率。

解码

贪心、束搜索、温度、top-k和top-p改变多样性与重复。参数在验证任务上确定,并报告全部设置和失败样例。

序列评价按长度分组,过长截断与过短padding都可能系统性影响特定样本。生成停止条件、特殊token和最大长度也属于模型配置,不能只保存权重。

练习:为小型语言模型写padding与因果掩码单测,构造未来泄漏并证明测试能抓住。

小纸条

自回归模型训练时如果能看到未来 token,会产生什么问题?