序列与注意力:掩码、长度和泄漏
约 14 分钟
RNN和Transformer处理序列时,填充、因果掩码、位置和长度是最常见静默错误来源。模型可能因看到未来标签或padding规律取得漂亮分数,却无法真实部署。
padding掩码
批量序列补齐后,注意力和损失都应忽略padding。只掩注意力不掩损失,模型仍会学习补齐标签;掩码形状广播也需断言。
因果掩码
自回归任务位置t只能看过去和当前。训练若误看未来,损失异常低;生成时未来不存在,性能崩溃。用改变未来token但检查当前输出不变的测试验证。
位置表示
没有位置编码,自注意力对顺序置换不敏感。绝对、相对和旋转位置各有外推特点,最大训练长度外的表现需单独测试。
教师强制与生成
训练使用真实前缀,推理使用自身预测,会产生暴露偏差。评价必须按真实生成流程,而非只报告逐token教师强制准确率。
解码
贪心、束搜索、温度、top-k和top-p改变多样性与重复。参数在验证任务上确定,并报告全部设置和失败样例。
序列评价按长度分组,过长截断与过短padding都可能系统性影响特定样本。生成停止条件、特殊token和最大长度也属于模型配置,不能只保存权重。
练习:为小型语言模型写padding与因果掩码单测,构造未来泄漏并证明测试能抓住。
小纸条
自回归模型训练时如果能看到未来 token,会产生什么问题?