首页 > 其他分享 >goldfish loss:减少训练数据泄漏,提高大语言模型输出的多样性

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

时间:2024-06-23 10:57:52浏览次数:25  
标签:loss 训练 标记 模型 掩码 序列 泄漏 goldfish

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).

https://avoid.overfit.cn/post/d24d133b5c9e4b109f990783a1661c16

标签:loss,训练,标记,模型,掩码,序列,泄漏,goldfish
From: https://blog.csdn.net/m0_46510245/article/details/139796054

相关文章

  • 泄漏检测(LDAR)在建档和检测过程中造假套路和不规范行为汇总
    第一章建档环节造假和不规范一、企业行为:企业为了节约检测费,采取部分建档,部分密封点检测的行为二、第三方检测公司不规范行为:1、台账信息不准确,密封点命名不准确,2、密封点建档中存在必填项存在缺失,不完整,3、不可......
  • 通俗易懂的内存泄漏答疑
    内存泄漏场景,监控,分析内存泄漏概念的理解Q:什么是内存泄漏?A:内存没有及时回收,被泄漏了Q:为什么会发生内存泄漏?A:虽然前端有回收机制,有些内存无法回收,但却是垃圾,这就是属于内存泄漏,回收机制通常就是标志清除策略,当不同的生命周期的两个东西互相通信,一方该回收了,一方还持有,就......
  • 《YOLOv5入门 + 改进涨点》专栏介绍 & 专栏目录 |目前已有40+篇内容,内含各种Head检测
    《YOLOv5入门+改进涨点》介绍&目录本专栏是博主精心设计的专门为了提升检测效果,希望改进YOLOv5并发表论文的同学们而设计。专栏的内容紧跟学术届的热点更新最新内容,紧跟YOLOv5的官方项目的实时更新。本专栏的内容是基于YOLOv5-6.1的版本进行改进专栏聚焦前沿方法,本专栏的......
  • 404页的信息泄漏
    目录什么是404页404页可能带来的安全隐患404页是如何泄漏信息的如何去触发404页如何排查404页为什么404页会允许检测在启动暴力破解目录时存在的文件如何防止什么是404页        在互联网世界中,当你访问一个网站的某个页面时,浏览器会向网站的服务器发送请求......
  • 数据安全保护系统有哪些?五大数据防泄漏DLP系统,你选对了吗?
    在数字化快速发展的今天,数据已经成为企业最宝贵的资产之一。点击获取软件https://work.weixin.qq.com/ca/cawcde06a33907e60a为了应对不断升级的网络安全威胁,选择合适的数据防泄漏(DLP)系统显得尤为重要。本文将为您介绍五款领先的数据防泄漏DLP系统:一、SymantecDataLoss......
  • 聊聊GLM-4-9B开源模型的微调loss计算
    概述Github官方地址:GLM-4网上已经有很多关于微调的文章,介绍各种方式下的使用,这里不会赘述。我个人比较关心的是微调时的loss计算逻辑,这点在很多的文章都不会有相关的描述,因为大多数人都是关心如何使用之类的应用层,而不是其具体的底层逻辑,当然咱也说不清太底层的计算。可了解其......
  • 记一次堆外内存泄漏排查过程
    本文涉及以下内容开启NMT查看JVM内存使用情况通过pmap命令查看进程物理内存使用情况smaps查看进程内存地址gdb命令dump内存块背景最近收到运维反馈,说有项目的一个节点的RSS已经是Xmx的两倍多了,因为是ECS机器所以项目可以一直运行,幸亏机器内存充足,不然就可能影响到其他应用......
  • 避免内存泄漏:C++ 虚析构函数指南
    C++虚析构函数详解及示例在C++编程中,虚析构函数的使用至关重要,尤其在涉及多态时。以下将解释虚析构函数的作用、在基类中使用虚析构函数的必要性以及纯虚析构函数的定义。1.为什么需要虚析构函数?当基类的析构函数没有被声明为虚函数时,通过基类指针删除派生类对象会导致无......
  • 深入理解交叉熵损失 CrossEntropyLoss - CrossEntropyLoss
    深入理解交叉熵损失CrossEntropyLoss-CrossEntropyLossflyfish本系列的主要内容是在2017年所写,GPT使用了交叉熵损失函数,所以就温故而知新,文中代码又用新版的PyTorch写了一遍,在看交叉熵损失函数遇到问题时,可先看链接提供的基础知识,可以有更深的理解。深入理解交叉熵损......
  • 【YOLOv8改进】SlideLoss损失函数,解决样本不平衡问题
    YOLO目标检测创新改进与实战案例专栏专栏目录:YOLO有效改进系列及项目实战目录包含卷积,主干注意力,检测头等创新机制以及各种目标检测分割项目实战案例专栏链接:YOLO基础解析+创新改进+实战案例介绍摘要近年来,基于深度学习的人脸检测算法取得了很大进展。这些......