金鱼损失:大模型“记性差一点”反而更聪明!随机剔除token,让AI不再死记硬背
论文:https://arxiv.org/pdf/2406.10209
实验显示,LLaMA-2在使用金鱼损失后:
记忆化内容显著减少:模型不再复现训练数据
下游任务性能几乎不受影响:仍然能流畅生成文本
用网友的精辟评论概括就是:dropout,但损失函数!
在梯度计算中随机屏蔽部分token
金鱼损失的核心理念非常简单,就是在模型训练过程中随机剔除一部分训练文本中的tokens,使其不参与损失计算。
这样一来,当模型在推理阶段遇到这些位置时,就只能“猜测”,而不是逐字逐句复现训练数据的完整序列。
此外,为了保证被剔除token的一致性,研究人员设计了一种基于哈希(hashing)的掩码策略。
那么,这和同样是防止模型背会的正则化方法有什么不同呢?
以Dropout这样的正则化方法为例,它通过在训练时“加噪声”来防止模型过度依赖某些参数,从而提高模型举一反三的能力。
但这样做的问题在于:如果只是随机丢token,那么,每次看到同一段落时,丢掉的地方不一样,模型累计几次就能拼凑出完整段落。
所以,说到底,模型还是靠死记硬背,记住了答案。
相比之下,金鱼损失则用哈希掩码确保每次遇到同一段落,掩盖位置都一样,这就从根本上阻止了模型复现完整训练文本。
金鱼损失
在计算损失时,会以一定的概率将某些位置的token从损失计算里“抹掉”。
也就是说,有些真实的下一个token不会作为目标来训练。
在这里,研究人员采用了简单的静态掩码(static mask),剔除每序列中的第4个token。
更进一步,为了确保模型不会从其他地方学到被掩码的数据(例如不同的文档会在不同的网页中反复出现),研究团队还提出了一种局部化哈希掩码(localized hashed mask),使得当相同的前h个token出现时,掩盖模式是相同的(可重复)。
实验测试与结果
为了验证金鱼损失确实能防止记忆化,研究团队设计了两种实验场景:
一种是极端场景,通过对少量样本进行多个训练周期(即重复)来强烈促使记忆化;
另一种是标准场景,模拟现实模型训练中使用的批次处理方式 。
同时,为了评估模型的记忆化程度,研究采用了以下指标:
RougeL得分:该指标衡量最长公共(非连续)子序列的长度 。得分为1.0表示完美记忆 。
精确匹配率(Exact Match):该指标衡量正确预测的序列占真实序列的百分比.
实验表明,在极端场景下,标准训练导致模型逐字记忆了100篇文章中的84篇,而金鱼损失没有记忆任何文章。
SFT与金鱼损失对比
需要注意的是,金鱼损失的核心在于忽略部分token的梯度计算。因此,为了学到足够的语言模式,模型必须通过更多数据来补偿这些空缺,这可能导致计算效率的下降。
此外,在标准训练场景下,金鱼损失也明显减少了模型逐字复现训练语料库中目标序列的情况。
更多推荐





所有评论(0)