goldfish loss:减少训练数据泄漏,提高大语言模型输出的多样性

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: LLMs(大型语言模型)能够记忆并重复它们的训练数据,这可能会带来隐私和版权风险。为了减轻记忆现象,论文作者引入了一种名为"goldfish loss"的微妙修改,在训练过程中,随机抽样的一部分标记被排除在损失计算之外。这些被舍弃的标记不会被模型记忆,从而防止模型完整复制训练集中的一整个标记序列。

LLMs(大型语言模型)能够记忆并重复它们的训练数据,这可能会带来隐私和版权风险。为了减轻记忆现象,论文作者引入了一种名为"goldfish loss"的微妙修改,在训练过程中,随机抽样的一部分标记被排除在损失计算之外。这些被舍弃的标记不会被模型记忆,从而防止模型完整复制训练集中的一整个标记序列。

论文行了广泛的实验,训练了十亿规模的 Llama-2 模型,包括预训练模型和从头开始训练的模型,并展示出在几乎不影响下游基准测试的情况下,可显著减少记忆现象。

goldfish loss

llm通常使用因果语言建模(CLM)目标进行训练,该目标表示令牌的平均对数概率,以所有先前的令牌为条件。对于包含L个训练标记的序列x = {xi},可以写成:

当模型以高置信度正确预测序列{xi}时,该目标最小化,从而使由下一个标记预测训练的模型易于记忆。而goldfish loss仅在令牌的一个子集上计算,因此阻止了模型学习整个令牌序列。选取goldfish mask G∈{0,1}L,定义损失为

当某些段落在不同文档中多次出现时,我们应该每次掩盖相同的标记,因为不一致的掩盖最终会泄露整个段落。

作者首先在序列中每隔 k 个标记丢弃一个标记,称之为静态掩码。这种静态掩码的方式在上面说的重复段落的情况下失败了,因为掩码对齐于预训练序列长度,而不是文本内容。

所以作者提出了新的局部哈希掩码来解决这个问题。对于确定哈希上下文宽度的正整数 h,如果应用于前 h 个标记的哈希函数 f : |V|^h → R 的输出小于 1/k,则掩盖标记 xi。

i) 处理重复段落的稳健性处理与哈希

当某些段落在不同文档中多次出现时,我们应该每次掩盖相同的标记,因为不一致的掩盖最终会泄露整个段落。

静态掩码基线在这里失败,因为掩码对齐于预训练序列长度,而不是文本内容。

作者们提出了新的局部哈希掩码来解决这个问题。对于确定哈希上下文宽度的正整数 h,如果应用于前 h 个标记的哈希函数 f : |V|^h → R 的输出小于 1/k,则掩盖标记 xi。通过这种策略,掩码在每个位置上仅依赖于前 h 个标记。每当相同的 h 个标记序列出现时,第 (h + 1) 个标记都会以相同的方式被掩盖。

验证记忆保留

因为进行了掩码的遮蔽,所以还需要验证LLM是否会丢掉记忆

作者首先将训练集中的每个测试序列切成长度为n个token的前缀和后缀。以前缀为条件,它们渐进式地生成温度为零的文本。使用两个指标将生成的后缀与真实后缀进行比较:

RougeL score: [Lin, 2004],它量化了最长公共(非连续)子序列的长度。得分为1.0表示记忆力很好。

精确匹配率:衡量与真实文本相比,正确预测的标记的百分比。

作者在仅包含 100 篇英文维基百科文章的数据集上,对 LLaMA-2–7B 模型进行了 100 个周期的训练。

上图为哈利·波特的结果显示,标准训练导致了对 84/100 篇文章的逐字记忆,而使用goldfish loss模型(k = 4)则没有记忆任何一篇文章。

RougeL 指标表明,使用goldfish loss损失训练的模型重复的非连续 n-gram 子序列长度大约是从未见过数据的模型的两倍。

针对于训练数据的重复:

作者预先训练了一个包含 1.1B 个参数和 32k 词汇量的语言模型。构建了来自两个来源数据集:RedPajama 2 的一个子集;混合了来自维基百科语料库的 2000 个目标序列,每个序列长度为 1024 到 2048 个标记。

下图绘制了训练后目标文档的 RougeL 记忆化分数分布。

当k = 3和k = 4时,RougeL值的分布与未在目标文档上训练的模型的分布大多重叠。对于较低的k值,可提取的记忆化接近于控制模型,并且标准损失中观察到的精确重复现象得到了有效缓解。

产生分歧的位置:

作者的直觉是,当损失放弃了标记时,模型不会记住这些标记,这会导致模型与基本事实偏离,或者说模型不会产生出与训练数据一模一样的输出

下图显示了 k = 4 的模型在每个序列位置上放弃标记的数量和与事实偏离的标记数量。

下表显示了在放弃标记处发生分歧的可能性。

可以看到大多数序列在第一个放弃的标记之后很快就会发生分歧,即使这些序列已经连续训练了 50 次,并且分歧位置几乎与被掩盖的位置完全重合。

对于静态掩码,观察到最大的对应率为 94.1%,随着损失中 k 的增加,这种对应关系逐渐减弱。而基于哈希的方法遵循类似的趋势,但由于此方法按照概率 1/k 丢弃任何标记,大多数分歧发生在第 k 个标记之前。

对模型性能的影响

对评估基准性能的影响

预训练的模型在整体表现上与使用标准因果语言建模(CLM)目标在相同数据上训练的模型表现类似。

下图显示,标准损失模型以及任何goldfish 模型的整体表现之间似乎没有系统性差异

由于goldfish 模型在某种程度上训练过的标记数量较少,可能会想到它们的原始标记预测能力会落后于看过更多数据的标准模型。

为了量化这种影响,作者跟踪模型在训练过程中的验证损失以及每个模型语义连贯性的能力进行对比

损失曲线

下图显示了在 RedpajamaV2 数据的 1200 万个标记上,模型的验证损失曲线,其中一个是使用标准损失训练的模型,另外两个是使用 4-GL 训练的模型。

所有模型收敛到几乎相同的验证损失值。随着批量大小的增加,损失遵循相同的验证曲线

Mauve分数:

Mauve分数是一个用来评估生成文本质量的指标,通过衡量生成文本与真实文本之间的多样性和自然性相似性来进行评估。

下图显示了使用模型在Slimpajama数据集样本上的Mauve分数。

对于贪婪解码,与使用因果语言建模(CLM)质量几乎没有明显下降。

当使用温度为0.7的多项式采样生成时,随着 k 增加和模型看到更多标记,分数略微有上升的趋势。

另外攻击者可能会尝试通过搜索序列的多种可能解码来提取数据,而最直接的实施方式是使用Beam Search。下图展示了使用30个束进行激进Beam Search的结果。

当k = 3时,goldfish loss仍然可以抵抗这种攻击,但当k值较大时,Beam Search抽样实现的可提取性增加。

总结

goldfish loss由于其简单性、可扩展性以及对模型性能影响相对较小,可以成为工业环境中的有用工具。不仅可以让模型不重复产生训练数据,这样可以规避训练数据泄露的风险,也可以让模型产生更多样的结果,丰富模型的输出。

但是更大的模型会记住更多的训练数据,因此研究goldfish loss对数十亿或数百亿参数规模模型带来的益处如何扩展,是一个有趣的开放问题。

最后金鱼的记忆只有7秒,虽然7秒记忆已经被研究证实是错的了,但是这个名字起的挺好,比哪些凑字的名字强多了,比如:谷歌的那个Lion (EvoLved SIgn MOmeNtum).

Paper: https://arxiv.org/abs/2406.10209

Code: https://github.com/ahans30/goldfish-loss

目录
相关文章
|
5月前
|
编解码 并行计算 算法
除了NMS参数,还有哪些因素会影响YOLOv3模型的检测性能?
除了NMS参数,还有哪些因素会影响YOLOv3模型的检测性能?
|
5月前
|
机器学习/深度学习 监控
大模型开发:你如何在保持模型性能的同时减少过拟合的风险?
为应对大模型过拟合,采用正则化(L1/L2/Dropout)、早期停止训练以监控验证集性能,通过数据增强提升模型泛化能力,选择适合问题复杂度的模型,使用集成方法(如Bagging/Boosting)增强稳定性,以及利用预训练模型进行迁移学习。这些策略结合使用能有效降低过拟合风险,提高模型泛化性能。
248 2
|
6天前
|
机器学习/深度学习 编解码 测试技术
TimeMOE: 使用稀疏模型实现更大更好的时间序列预测
TimeMOE是一种新型的时间序列预测基础模型,通过稀疏混合专家(MOE)设计,在提高模型能力的同时降低了计算成本。它可以在多种时间尺度上进行预测,并且经过大规模预训练,具备出色的泛化能力。TimeMOE不仅在准确性上超越了现有模型,还在计算效率和灵活性方面表现出色,适用于各种预测任务。该模型已扩展至数十亿参数,展现了时间序列领域的缩放定律。研究结果显示,TimeMOE在多个基准测试中显著优于其他模型,特别是在零样本学习场景下。
114 64
|
4月前
|
存储 人工智能 缓存
大模型压缩量化方案怎么选?无问芯穹Qllm-Eval量化方案全面评估:多模型、多参数、多维度
【6月更文挑战第26天】无问芯穹Qllm-Eval评估了11个大模型(如OPT、LLaMA2)在多种参数配置和任务下的量化效果,探索权重量化、激活量化等方法对性能、速度和内存的影响。研究发现,W4、W4A8量化通常保持在2%的性能损失范围内,但最佳策略取决于模型大小、任务类型及硬件,提示了选择压缩方案时需灵活适应。[[arxiv.org/pdf/2402.18158.pdf](https://arxiv.org/pdf/2402.18158.pdf)]
67 6
|
3月前
|
机器学习/深度学习 索引 Python
。这不仅可以减少过拟合的风险,还可以提高模型的准确性、降低计算成本,并帮助理解数据背后的真正含义。`sklearn.feature_selection`模块提供了多种特征选择方法,其中`SelectKBest`是一个元变换器,可以与任何评分函数一起使用来选择数据集中K个最好的特征。
。这不仅可以减少过拟合的风险,还可以提高模型的准确性、降低计算成本,并帮助理解数据背后的真正含义。`sklearn.feature_selection`模块提供了多种特征选择方法,其中`SelectKBest`是一个元变换器,可以与任何评分函数一起使用来选择数据集中K个最好的特征。
|
3月前
|
机器学习/深度学习 自然语言处理 区块链
Lookback Lens:用注意力图检测和减轻llm的幻觉
这篇论文的作者提出了一个简单的幻觉检测模型,其输入特征由上下文的注意力权重与新生成的令牌(每个注意头)的比例给出。
43 0
|
5月前
|
算法 异构计算
推测解码:在不降低准确性的情况下将LLM推理速度提高2 - 3倍
在本篇文章我们将详细讨论推测解码,这是一种可以将LLM推理速度提高约2 - 3倍而不降低任何准确性的方法。我们还将会介绍推测解码代码实现,并看看它与原始transformer 实现相比到底能快多少。
156 10
|
5月前
|
自然语言处理
论文推荐:用多词元预测法提高模型效率与速度
《Better & Faster Large Language Models via Multi-token Prediction》论文提出了一种多词元预测框架,改善了大型语言模型(LLMs)的样本效率和推理速度。该方法通过一次预测多个词元,而非单个词元,提高了模型在编程和自然语言任务中的性能。实验显示,多词元预测在HumanEval和MBPP任务上性能提升,推理速度最高可提升3倍。此外,自我推测解码技术进一步优化了解码效率。尽管在小模型中效果不明显,但该方法为大模型训练和未来研究开辟了新途径。
37 0
|
5月前
|
存储 机器学习/深度学习 算法
如何准确的估计llm推理和微调的内存消耗
最近发布的三个大型语言模型——Command-R+ (104B参数), Mixtral-8x22b (141B参数的MoE模型), 和 Llama 3 70b (70.6B参数)——需要巨大的内存资源。推理时,Command-R+需193.72GB GPU RAM,Mixtral-8x22B需262.63GB,Llama 370b需131.5GB。激活的内存消耗根据序列长度、批大小等因素变化。文章详细介绍了计算这些模型内存需求的方法,并探讨了如何通过量化、优化器优化和梯度检查点减少内存使用,以适应微调和推理。
420 0
|
5月前
|
机器学习/深度学习 算法
如何评估使用PyBrain训练的模型性能
使用PyBrain训练模型的性能评估包括:混淆矩阵(TP, TN, FP, FN, 准确率)、性能度量(准确率, 错误率)、泛化能力、数据集划分(训练集与测试集误差)以及其他指标如计算速度和鲁棒性。评估过程需综合考虑多种方法,并依据业务需求和模型类型选择合适的方式。
34 3
下一篇
无影云桌面