51c大模型~合集12

我自己的原文哦~  https://blog.51cto.com/whaosoft/11564858

#ProCo

无限contrastive pairs的长尾对比学习 , 个人主页:https://andy-du20.github.io

本文介绍清华大学的一篇关于长尾视觉识别的论文: Probabilistic Contrastive Learning for Long-Tailed Visual Recognition. 该工作已被 TPAMI 2024 录用,代码已开源。

该研究主要关注对比学习在长尾视觉识别任务中的应用,提出了一种新的长尾对比学习方法 ProCo,通过对 contrastive loss 的改进实现了无限数量 contrastive pairs 的对比学习,有效解决了监督对比学习 (supervised contrastive learning)[1] 对 batch (memory bank) size 大小的固有依赖问题。除了长尾视觉分类任务,该方法还在长尾半监督学习、长尾目标检测和平衡数据集上进行了实验,取得了显著的性能提升。

  • 论文链接: https://arxiv.org/pdf/2403.06726
  • 项目链接: https://github.com/LeapLabTHU/ProCo

研究动机

对比学习在自监督学习中的成功表明了其在学习视觉特征表示方面的有效性。影响对比学习性能的核心因素是 contrastive pairs 的数量,这使得模型能够从更多的负样本中学习,体现在两个最具代表性的方法 SimCLR [2] 和 MoCo [3] 中分别为 batch size 和 memory bank 的大小。然而在长尾视觉识别任务中,由于类别不均衡,增加 contrastive pairs 的数量所带来的增益会产生严重的边际递减效应,这是由于大部分的 contrastive pairs 都是由头部类别的样本构成的,难以覆盖到尾部类别

例如,在长尾 Imagenet 数据集中,若 batch size (memory bank) 大小设为常见的 4096 和 8192,那么每个 batch (memory bank) 中平均分别有 212 个和 89 个类别的样本数量不足一个。

因此,ProCo 方法的核心 idea 是:在长尾数据集上,通过对每类数据的分布进行建模、参数估计并从中采样以构建 contrastive pairs,保证能够覆盖到所有的类别。进一步,当采样数量趋于无穷时,可以从理论上严格推导出 contrastive loss 期望的解析解,从而直接以此作为优化目标,避免了对 contrastive pairs 的低效采样,实现无限数量 contrastive pairs 的对比学习。

然而,实现以上想法主要有以下几个难点:

  • 如何对每类数据的分布进行建模。
  • 如何高效地估计分布的参数,尤其是对于样本数量较少的尾部类别。
  • 如何保证 contrastive loss 的期望的解析解存在且可计算。

事实上,以上问题可以通过一个统一的概率模型来解决,即选择一个简单有效的概率分布对特征分布进行建模,从而可以利用最大似然估计高效地估计分布的参数,并计算期望 contrastive loss 的解析解。

由于对比学习的特征是分布在单位超球面上的,因此一个可行的方案是选择球面上的 von Mises-Fisher (vMF) 分布作为特征的分布(该分布类似于球面上的正态分布)。vMF 分布参数的最大似然估计有近似解析解且仅依赖于特征的一阶矩统计量,因此可以高效地估计分布的参数,并且严格推导出 contrastive loss 的期望,从而实现无限数量 contrastive pairs 的对比学习。

图片

图 1 ProCo 算法根据不同 batch 的特征来估计样本的分布,通过采样无限数量的样本,可以得到期望 contrastive loss 的解析解,有效地消除了监督对比学习对 batch size (memory bank) 大小的固有依赖。

方法详述

接下来将从分布假设、参数估计、优化目标和理论分析四个方面详细介绍 ProCo 方法。

分布假设

如前所述,对比学习中的特征被约束在单位超球面上。因此,可以假设这些特征服从的分布为 von Mises-Fisher (vMF) 分布,其概率密度函数为:

图片

其中 z 是 p 维特征的单位向量,I 是第一类修正贝塞尔函数,

图片

μ 是分布的均值方向,κ 是集中参数,控制分布的集中程度,当 κ 越大时,样本聚集在均值附近的程度越高;当 κ =0 时,vMF 分布退化为球面上的均匀分布。

参数估计

基于上述分布假设,数据特征的总体分布为混合 vMF 分布,其中每个类别对应一个 vMF 分布。

图片

其中参数 

图片

表示每个类别的先验概率,对应于训练集中类别 y 的频率。特征分布的均值向量

图片

和集中参数

图片

 通过最大似然估计来估计。

假设从类别 y 的 vMF 分布中采样 N 个独立的单位向量,则均值方向和集中参数的最大似然估计 (近似)[4] 满足以下方程:

图片

其中

图片

是样本均值,

图片

是样本均值的模长。此外,为了利用历史上的样本,ProCo 采用了在线估计的方法,能够有效地对尾部类别的参数进行估计。

优化目标

基于估计的参数,一种直接的方法是从混合 vMF 分布中采样以构建 contrastive pairs . 然而在每次训练迭代中从 vMF 分布中采样大量的样本是低效的。因此,该研究在理论上将样本数量扩展到无穷大,并严格推导出期望对比损失函数的解析解直接作为优化目标。 

图片

通过在训练过程中引入一个额外的特征分支 (基于该优化目标进行 representation learning),该分支可以与分类分支一起训练,并且由于在推理过程中只需要分类分支,因此不会增加额外的计算成本。两个分支 loss 的加权和作为最终的优化目标,

图片

在实验中均设置 α=1. 最终,ProCo 算法的整体流程如下:

图片

理论分析

为了进一步从理论上验证 ProCo 方法的有效性,研究者们对其进行了泛化误差界和超额风险界的分析。为了简化分析,这里假设只有两个类别,即 y∈ {-1,+1}.

图片

分析表明,泛化误差界主要由训练样本数量和数据分布的方差控制,这一发现与相关工作的理论分析 [6][7] 一致,保证了 ProCo loss 没有引入额外因素,也没有增大泛化误差界,从理论上保证了该方法的有效性。

此外,该方法依赖于关于特征分布和参数估计的某些假设。为了评估这些参数对模型性能的影响,研究者们还分析了 ProCo loss 的超额风险界,其衡量了使用估计参数的期望风险与贝叶斯最优风险之间的偏差,后者是在真实分布参数下的期望风险。

图片

这表明 ProCo loss 的超额风险主要受参数估计误差的一阶项控制。

实验结果

作为核心 motivation 的验证,研究者们首先与不同对比学习方法在不同 batch size 下的性能进行了比较。Baseline 包括同样基于 SCL 在长尾识别任务上的改进方法 Balanced Contrastive Learning [5](BCL)。具体的实验 setting 遵循 Supervised Contrastive Learning (SCL) 的两阶段训练策略,即首先只用 contrastive loss 进行 representation learning 的训练,然后在 freeze backbone 的情况下训练一个 linear classifier 进行测试。

下图展示了在 CIFAR100-LT (IF100) 数据集上的实验结果,BCL 和 SupCon 的性能明显受限于 batch size,但 ProCo 通过引入每个类别的特征分布,有效消除了 SupCon 对 batch size 的依赖,从而在不同的 batch size 下都取得了最佳性能。

图片

此外,研究者们还在长尾识别任务,长尾半监督学习,长尾目标检测和平衡数据集上进行了实验。这里主要展示了在大规模长尾数据集 Imagenet-LT 和 iNaturalist2018 上的实验结果。首先在 90 epochs 的训练 schedule 下,相比于同类改进对比学习的方法,ProCo 在两个数据集和两个 backbone 上都有至少 1% 的性能提升。

图片

下面的结果进一步表明了 ProCo 也能够从更长的训练 schedule 中受益,在 400 epochs schedule 下,ProCo 在 iNaturalist2018 数据集上取得了 SOTA 的性能,并且还验证了其能够与其它非对比学习方法相结合,包括 distillation (NCL) 等方法。

图片

#Rule Based Rewards for Language Model Safety

RLHF不够用了,OpenAI设计出了新的奖励机制

OpenAI 的新奖励机制,让大模型更听话了。

自大模型兴起以来,使用强化学习从人类反馈(RLHF)中微调语言模型一直是确保 AI 准确遵循指令的首选方法。

为了确保 AI 系统安全运行并与人类价值观保持一致,我们需要定义期望行为并收集人类反馈来训练「奖励模型」。这种模型通过发出期望的动作来指导 AI。但是,收集这些常规和重复任务的人类反馈通常效率不高。此外,如果安全政策发生变化,已经收集的反馈可能会过时,需要新的数据。

我们能否构建一种新的机制来完成这些任务?近日,OpenAI 公布了一种教导 AI 模型遵守安全政策的新方法,称为基于规则的奖励(Rule-Based Rewards,RBR)。 

  • 论文标题:Rule Based Rewards for Language Model Safety
  • 论文地址:https://cdn.openai.com/rule-based-rewards-for-language-model-safety.pdf
  • 代码链接:https://github.com/openai/safety-rbr-code-and-data

论文作者之一、OpenAI 安全系统负责人 Lilian Weng 表示,「RBR 可以自动执行一些模型微调。传统上, 我们依赖于来自人类反馈的强化学习作为默认的对齐训练方法来训练模型,这确实有效。然而在实践中,我们面临的挑战是,我们花了很多时间讨论政策的细节,而到最后,政策可能已经发生了变化。」

RBR 根据一组安全规则提供 RL 信号,使其更容易适应不断变化的安全政策,而无需严重依赖人类数据。此外,借助 RBR,研究者能够以更统一的视角看待安全性和模型能力,因为更强大的分级模型可以提供更高质量的 RL 信号。

OpenAI 表示自 GPT-4 发布以来,他们一直将 RBR 用作安全堆栈的一部分,包括 GPT-4o mini,并计划在未来的模型中实施它。

为什么要提出 RBR?  

随着大型语言模型(LLM)功能的增强和普及,确保其安全性和对齐变得越来越重要。最近的许多工作都集中在使用人类偏好数据来调整模型上,例如基于人类反馈的强化学习(RLHF)。

然而,仅使用人类反馈来实现目标安全规范还面临许多挑战。为模型安全性收集和维护人类数据通常既费钱又费时,而且随着模型能力的提高或用户行为的改变,安全准则也会发生变化,这些数据可能会过时。即使要求相对稳定,也很难向注释者传达。安全方面的情况尤其如此,因为所需的模型响应非常复杂,需要对是否响应以及如何响应请求做出细微差别。如果说明不够明确,注释者可能不得不依赖个人偏见,从而导致超出预期的模型行为,如变得过于谨慎,或以不理想的风格(如评判)做出响应。

例如,在 OpenAI 的一次实验中,一些注释者在对用户有关自残请求的可能回复进行排序时,偏向于将用户转到美国自杀热线,而这对美国以外的用户没有帮助。要解决这些问题,往往需要重新标注或收集新数据,这既昂贵又耗时。

为了解决这些问题,使用 AI 反馈的方法最近越来越受欢迎,其中最突出的是宪法 AI(Constitutional AI)。这些方法利用 AI 反馈合成训练数据,与人类数据相结合,用于监督微调(SFT)和奖励模型(RM)训练步骤。不过,在宪法 AI 和其他方法中,「宪法」涉及「选择危害较小的响应」等一般性指导原则,AI 模型有很大的自由裁量权来决定什么是有害的。在现实世界的部署中,我们需要执行更详细的政策,规定应该拒绝哪些提示,以及拒绝的方式是什么。

因此,在这篇论文中,OpenAI 的研究者提出了一种新的 AI 反馈方法 ——RBR,它允许人类详细说明所需的模型响应,类似于给人类注释者的指示。

RBR 的工作原理是怎样的?

实施 RBR 的方法包括定义一组命题 —— 关于模型响应中期望或不期望方面的简单陈述,例如「带有评判性」、「包含不允许的内容」、「提及安全政策」、「免责声明」等。然后,这些命题被用来形成规则,这些规则被精心设计以捕捉在各种场景中安全和适当响应的细微差别。

例如,在面对不安全请求时,拒绝(如「抱歉,我无法帮你」)是一种期望的模型响应。相关规则将规定,拒绝应「包含简短的道歉」并且「应说明无法遵从」。

研究团队设计了三类期望的模型行为,用于处理有害或敏感的话题。根据安全政策,不同的请求对应不同的模型响应类型。

图片

图中内容由 AI 工具翻译,仅供参考。

以下是一些命题的简化示例,以及它们如何映射理想行为或非理想行为到不同响应类型的。

图片

图中内容由 AI 工具翻译,仅供参考。

研究者在下表中提供了一些在实验中训练模型所完成的示例。

图片

图片

图片

图中内容由 AI 工具翻译,仅供参考。

评估器是一个固定的语言模型,根据响应遵循规则的程度对其进行评分,从而使 RBR 方法能够灵活适应新规则和安全政策。

RBR 使用这些评分来拟合一个线性模型,该模型的权重参数是从一个已知理想响应类型的小数据集,以及对应的期望做法和不期望做法中学习的。

这些 RBR 奖励随后与来自「仅提供帮助」的奖励模型的奖励结合起来,作为 PPO 算法的额外信号,以鼓励模型遵循安全行为策略。

该方法允许研究者对模型的行为进行精细控制,确保其不仅避免有害内容,而且以一种既表示尊重又有帮助的方式进行。

图片

强化学习过程中 RBR 与传统奖励模型的集成。

RBR 好用吗? 

实验显示,经过 RBR 训练的模型表现出与经过人类反馈训练的模型相当的安全性能。前者还减少了错误地拒绝安全请求(即过度拒绝)的情况。

此外,RBR 还显著减少了对大量人工数据的需求,使训练过程更快、更具成本效益。

随着模型能力和安全准则的发展,RBR 可以通过修改或添加新规则快速更新,而无需进行大量重新训练。

图片

该图显示了有用性(以模型正确遵循安全提示的百分比来衡量)与安全性(以模型正确拒绝不安全提示的百分比来衡量)之间的权衡。对于这两个指标,值越高越好。右上角标记了有用性和安全性之间的完美平衡。有用性基线不使用安全性 RBR,往往更有用但安全性较低。人类基线是在仅有帮助和人工注释的安全性数据上进行训练的,往往非常安全但有用性较低。借助 RBR,OpenAI 的目标是使模型既安全又有用。

RBR 有哪些局限? 

尽管规则基础的系统(RBR)在有明确、直观规则的任务中表现良好,但在更主观的任务中(如撰写高质量的文章),应用 RBR 可能会有些棘手。然而,RBR 可以与人类反馈结合起来,以平衡这些挑战。例如,RBR 可以强制执行特定的准则(如「不要使用俚语」或模型规范中的规则),而人类反馈可以帮助处理更细微的方面(如整体连贯性)。RBR 的强度被优化为既能正确执行安全偏好,又不会过度影响最终的奖励评分 —— 这样,RLHF 奖励模型仍然可以在如写作风格等方面提供强有力的信号。 

伦理考量:将安全检查从人类转移到 AI 上可能会减少对 AI 安全的人工监督,并且如果使用有偏见的模型提供 RBR 奖励,还可能放大潜在的偏见。为了解决这个问题,研究人员应该仔细设计 RBR,以确保其公平和准确,并考虑结合使用 RBR 和人类反馈,以最大限度地减少风险。 

OpenAI 表示,RBR 不仅限于安全训练,它们可以适应各种任务,其中明确的规则可以定义所需的行为,例如为特定应用程序定制模型响应的个性或格式。下一步,OpenAI 还计划进行更广泛的消融研究,以更全面地了解不同的 RBR 组件、使用合成数据进行规则开发以及人工评估,以验证 RBR 在包括安全以外的其他领域的各种应用中的有效性。

参考内容:

​​https://openai.com/index/improving-model-safety-behavior-with-rule-based-rewards/​​

#KnowledgeSpread

只需两步,让大模型智能体社区相信你是秦始皇

  • 论文地址:https://arxiv.org/pdf/2407.07791
  • 代码:https://github.com/Jometeorie/KnowledgeSpread

研究背景

就在去年,由斯坦福大学和谷歌的研究团队开发的“AI小镇”一举引爆了人工智能社区,成为各大媒体争相报道的热点。他们让多个基于大语言模型(LLMs)的智能体扮演不同的身份和角色在虚拟小镇上工作和生活,将《西部世界》中的科幻场景照进了现实中。在这之后,各种基于LLM的多智能体系统迅速涌现,从医疗诊断到软件开发,智能体之间的协作和知识共享展现了巨大的潜力。一些平台开始允许让第三方用户部署个性化的智能体来丰富社区,例如微软推出的Azure机器人服务。

然而,尽管平台本身是安全的,即不存在恶意操纵系统提示的可能,但部署智能体的第三方用户的目的却是多样化的。如果存在恶意攻击者向智能体中植入操控性知识,智能体社区能否抵御这一安全威胁,并坚信自己正确的知识认知呢?例如,图一展示了一个多智能体联合会诊的场景。如果攻击者篡改了某个智能体中与任务相关的参数知识并将其部署到多智能体社区中,那么它就有可能在社区中散播编造的知识,使其它智能体相信它的观点,最终导致联合会诊的失败。

图片

图1 基于LLM的多智能体社区中的编造知识传播引起的风险

研究内容

为了系统性地分析这一场景潜在的风险程度,本文构建了一个系统性的模拟环境用于模拟由不同的第三方用户部署的多智能体系统。该仿真环境精确反映了现实世界中多智能体系统在一个可信平台上的部署情况,每个智能体由不同的第三方用户引入,并被分配了具体的角色和属性,以确保交互的多样性和真实性。

本文的攻击目标如图2所示,攻击者通过操纵某个智能体的中间参数,使其在没有显式提示的情况下能够自主在社区中传播被操纵的知识,又能表现得与良性智能体无异。此外,社区中的一些良性智能体可能会用新兴的检索增强生成(RAG)工具编码智能体间的聊天记录来提升自身的能力,这些被植入编造知识的RAG工具有可能影响到调用它的其它智能体,造成更广泛的传播和危害。

图片

图2 攻击者操纵知识传播的场景和方法

本文首先针对LLM处理世界知识固有缺陷的直觉认识,提出了攻击方法的设计假设。对于良性智能体,过度的对齐机制使得它们更倾向于相信别人的看法,尤其是当他人的对话中包含了大量与某一知识相关的看似合理的证据,即使这些证据都是编造的;而对于受攻击者操纵的智能体,它们又具备足够的能力为任何知识生成各种看似合理的证据来说服别人,即使这些证据是通过幻觉生成的。这些对世界知识认知的脆弱性使得智能体间自主地传播操纵的知识成为了可能。

基于以上对LLM直觉上的认知所提出的假设,本文设计了一种两阶段的攻击方式用于实现操纵知识的自主传播。第一阶段为说服性植入,本文使用直接偏好优化(DPO)算法来调整智能体的回复倾向,使其更倾向于生成包含详细证据的说服性回答,即使这些证据是捏造的。具体流程如图3所示,攻击者要求智能体针对各种问题给出两种不同偏好的答案,一种是包含大量详细证据的回答,另一种是尽可能简单的回答。通过选择包含详细证据的回答作为偏好的输出,构建训练数据集进行说服性植入训练。此外,本文使用低秩自适应(LoRA)进行高效微调,从而在不影响智能体基本能力的情况下显著增强其说服力。

图片

图3 第一阶段攻击:说服性植入的基本流程

第二阶段为编造知识植入(如图4所示)。这一阶段的目标是通过修改智能体模型中的特定参数,使其对特定的知识产生误解,并在后续的交互中无意识地传播这些篡改后的知识。具体来说,攻击者采用秩一模型编辑(ROME)算法实现操纵知识的植入。该方法将智能体Transformer模型的双层前馈神经网络(FFN)层视为三元组知识的主体和客体间的键值映射,通过修改这些键值映射来篡改智能体的参数知识。这种编辑方法可以在无外部提示的基础上改变智能体对特定知识的认知,甚至于被操纵的智能体本身都无法意识到自己对特定知识的认知被“篡改”了,这使得它们能够更好地利用自身的幻觉生成各种看似合理的证据来说服社区中的良性智能体。

图片

图4 第二阶段攻击:编造知识植入的基本流程

实验分析

为了研究基于大语言模型的多智能体社区对编造知识传播的抵御能力,同时验证本文提出的两阶段攻击方法的有效性,本文在两个流行的反事实知识编辑数据集(CounterFact,zsRE)中分别随机抽取1000个实例进行实验。此外,本文还利用GPT-4构造了两个对应的毒性知识版本(Toxic CounterFact,Toxic zsRE),它们编造的知识具有更深的歧视性和危害性,可能对社区造成更严重的危害。

本文首先在单智能体场景下对提出的直觉假设进行验证(如表1所示)。可以发现,如果直接提供编造知识的答案,智能体往往不会轻易相信,攻击成功率也很低。但如果要求GPT-4或者对应的智能体提供捏造性的证据,那么智能体相信编造知识的成功率会显著提升。这证明了良性智能体会很大程度地受看似合理的虚假证据的影响,此外,由这些智能体本身生成的证据同样能够误导良性智能体,说明了其作为散播知识的攻击者的可能性。

图片

表1 直觉假设验证实验

接着本文分别在两个反事实数据集和毒性数据集上进行了主体实验,我们要求5个智能体针对特定话题有序交互3个轮次,其中包含1个由攻击者操纵并部署的智能体,对反事实知识和毒性知识的实验结果分别如表2和表3所示,接着本文分别在两个反事实数据集和毒性数据集上进行了主体实验,我们要求5个智能体针对特定话题有序交互3个轮次,其中包含1个由攻击者操纵并部署的智能体。

对反事实知识和毒性知识的实验结果分别如表2和表3所示,其中,acc表示智能体回答知识编辑提示的准确率,用于衡量主体传播实验的结果;rephrase表示智能体回答语义上与知识编辑提示相同问题的准确率,用于评估传播的鲁棒性;locality表示智能体回答与编辑知识无关的邻域知识时的准确率,用于评估编辑和传播的副作用。

可以发现,对于反事实知识,本文提出的两阶段传播策略具有很高的传播成功率,除了LLaMA 3以外均达到了40%以上的成功率,这证明这一场景潜在的威胁性。而对于毒性知识,尽管传播性能略有下降,但仍有10%-20%的良性智能体受到影响,并改变了对特定知识的看法。

图片

表2 反事实知识传播结果

图片

表3 毒性知识传播结果

接着本文分析了传播成功率随交互轮数的变化(如图5,图6所示)。结果表明,良性智能体对编造知识的错误认知会随着交互轮数逐步加深。

图片

图5 反事实知识传播成功率随交互轮数的变化

图片

图6 毒性知识的传播成功率随交互轮数的变化

对于副作用测试,本文测试了植入两阶段攻击策略前后的智能体在MMLU标杆上的性能。相比于原始智能体,无论是第一阶段植入还是第二阶段植入,对智能体基础语言能力的影响都可以忽略不计。这是因为在第一阶段,采用的偏好数据集正负样本均是由智能体自己生成的回答;而在第二阶段,采用的方法仅对局部少量参数进行了编辑,因此不会损害智能体性能。这进一步说明了我们方法的隐蔽性。

图片

表4 智能体植入两阶段攻击策略前后的MMLU指标

最后,本文考虑了一种更具持久性的传播场景,即部分良性智能体会将聊天记录存储到RAG工具中,用于后续的调用。这使得编造的知识在脱离上下文聊天记录后仍然能够传播,并进一步影响到其他智能体。这种情况下,传播成功需要满足两个条件:首先攻击者操纵的智能体需要能够成功误导社区中的其他智能体,使它们也输出与编造后的知识相关的回答;接着这些编造后的知识存储进RAG后需要被调用它的智能体检索应用后改变它们的认知。本文根据每个智能体在每轮对话中的聊天内容对上下文进行切片,将1000条知识存储进RAG中,结果如表5所示。对于反事实知识,这种二阶段的链式传播依旧能够维持很高的攻击成功率;而对于毒性知识,同样有10%-20%的攻击成功率。

图片

表5 编造知识被植入RAG系统后的传播成功率

对于消融实验,除了在上文中涉及的对不同攻击阶段的测试、对话轮数对结果的影响外,本文还分析了智能体数量对传播结果的影响(表6)以及被操纵的智能体的发言顺序对传播结果的影响(表7)。可以发现,更大型的多智能体社区相对具有更强的鲁棒性,但仍然会受到操纵知识的影响;且在随机发言的场景下,知识传播的攻击成功率会更高。

图片

表6 Vicuna 7B的知识传播成功率随智能体数量的变化

图片

表7 被操纵智能体的发言顺序对知识传播成功率的影响

总结和展望

本文探讨了新颖的基于LLM的多智能体框架中潜在的知识传播风险。为此,本文针对LLM对世界知识认知的脆弱性提出了一种两阶段的攻击框架,通过说服性植入和编造知识植入,使得被操纵的智能体在没有外部提示的情况下能够自主在社区中传播知识,并改变其他智能体对特定知识的认知。这些发现揭露了当前基于LLM的多智能体社区对不可信知识的传播缺乏有效的防御机制。未来的工作可以从预防和检测两个阶段入手,利用提示工程或事实检测工具辅助智能体对不可信知识的真实性进行检测,从而提升多智能体社区的鲁棒性和安全性。

#AI训练AI,越训越离谱

训练数据是用 GPT-4o 生成的?那质量不好说了。

我们知道,大模型面临的三大挑战是算法、算力和数据。前两者靠优化升级,后者靠积累。随着技术的不断发展,高质量数据已经逐渐成为最大的瓶颈。

在很多新模型上,人们为了提升模型能力,都采用了使用 AI 生成数据来训练的方式。人们普遍认为,使用合成数据可以显著提升模型质量。

不过,最新的研究认为,使用 AI 生成的数据并不是什么好办法,反而可能会让模型陷入崩溃。

今天发表在学术顶刊《自然》杂志的封面研究认为,如果放任大模型用自动生成的数据训练自己,AI 可能会自我退化,在短短几代内将原始内容迭代成无法挽回的胡言乱语。

这篇由牛津大学等机构提交的研究,强调了由于自我训练导致人工智能模型崩溃(Model Collapse)的风险,论证了原始数据源和仔细数据过滤的必要性。

论文链接:https://www.nature.com/articles/s41586-024-07566-y

哪种模型容易崩溃?

研究认为,当人工智能模型在生成的数据上进行过度训练时,就会发生不可逆转的模型崩溃。

「模型崩溃是指由于对合成数据进行不加区分的训练而导致模型崩溃的现象」,牛津大学研究员、该论文的主要作者 Ilia Shumailov 表示。

根据论文所述,大型语言模型等生成式 AI 工具可能会忽略训练数据集的某些部分,导致模型只对部分数据进行训练。

众所周知,大语言模型(LLM)需要巨量数据进行训练,从而使自身获得解释其中信息并应用于各种用例的能力。LLM 通常是为了理解和生成文本而构建的,但研究小组发现,如果忽略它据称正在阅读并纳入其知识库的大量文本,可能会很快地使 LLM 沦为空壳。

「在模型崩溃的早期阶段,模型首先会失去方差,在少数数据上的表现下降,在模型崩溃的后期阶段,模型则会完全崩溃」,Shumailov 说道。因此,随着模型继续在模型本身生成的越来越不准确和相关的文本上进行训练,这种递归循环会导致模型退化。

模型崩溃,到底是什么

在该论文中,作者发现的模型崩溃效应是一种退化过程,模型生成的数据会污染下一代模型的训练集。模型接受受污染数据的训练,会错误地感知现实,如下图 (a) 所示。

图片

模型崩溃可以分为早期和后期阶段,早期模型会在少数数据上表现下降,后期模型会收敛到一种与原始分布几乎没有相似之处的分布,并且方差通常大大减少。

模型崩溃发生主要是因为下述三个特定误差源在几代模型中复合,并导致与原始模型出现较大偏差:

  • 统计近似误差。这是由于样本数量有限而产生的主要误差,并且随着样本数量趋于无穷大而消失。发生这种情况是因为重采样的每一步都可能丢失信息。
     
  • 函数表达误差。这是第二种类型的误差,是由于函数逼近器表达能力有限而产生的。特别是,神经网络只是通用逼近器,无法完美地逼近任何分布。神经网络可以在原始分布之外引入非零似然,或者在原始分布内引入零似然。函数表达误差的一个简单例子是,如果我们尝试用单个高斯拟合两个高斯的混合。即使我们有关于数据分布的完美信息(即无限数量的样本),模型误差也将是不可避免的。然而,在没有其他两种类型的误差的情况下,这种情况只能发生在第一代模型。
     
  • 函数逼近误差。这是次要类型的误差,主要源于学习过程的局限性,例如随机梯度下降的结构偏差。

上述每一项都可能导致模型崩溃变得更糟或更好。更高的逼近能力甚至可以是一把双刃剑,更好的表达能力可以抵消统计噪声,从而很好地逼近真实分布,但它同样会加剧噪声。这通常会产生级联效应,其中个体的不准确性结合起来会导致整体误差增加。

例如,过度拟合密度模型会导致模型错误推断,将高密度区域分配给训练集未覆盖的低密度区域。

值得注意的是,还存在其他类型的误差。例如,计算机在实践中的精度有限。

语言模型中的模型崩溃

作者在文中还评估了模型崩溃对语言模型的影响。模型崩溃在各种机器学习模型中普遍存在。然而,与通常从零开始训练的小模型(如 GMMs 和 VAEs)不同,LLM 需要巨大的成本从头开始训练,因此通常使用预训练模型(如 BERT、RoBERTa 或 GPT-2)初始化,这些模型是在大型文本语料库上训练的。随后,这些模型被微调以适应各种下游任务。

在这篇论文中,作者探讨了当语言模型使用由其他模型生成的数据进行连续微调时会发生什么。本文中涉及的所有实验可以在非微调设置下用更大的语言模型轻松复制。鉴于训练一个中等规模的模型需要的算力也非常可观,作者选择不进行这样的实验,而是专注于更现实的概念验证设置。

需要注意的是,本文描述的语言实验即使在这种情况下也需要几周时间才能完成。作者评估了训练语言模型的最常见设置 —— 微调设置,其中每个训练周期都从一个具有最新数据的预训练模型开始。这里的数据来自另一个经过微调的预训练模型。由于训练被限制在生成与原始预训练模型非常相似的模型,并且这些模型生成的数据点通常只会产生非常小的梯度,因此预期在微调后,模型只会发生适度的变化。作者使用 Meta 通过 Hugging Face 提供的 OPT-125m 因果语言模型进行了微调。

案例研究:教堂和长耳大野兔

研究人员在论文中提供了一个使用文本生成模型 OPT-125m 的示例(使用 wikitext2 数据集微调),该模型的性能与 ChatGPT 的 GPT-3 类似,但需要的算力较少。

研究人员将有关设计 14 世纪教堂塔楼的文本输入到模型中。在第一代文本输出中,该模型主要讨论了在不同教皇统治下建造的建筑物。但到了第九代文本输出,该模型主要讨论了大量的黑尾、白尾、蓝尾、红尾和黄尾长耳大野兔。我们应该注意到的是,其中大多数并不是真正存在的长耳大野兔物种。

图片

大模型输出的内容:从教堂到 100 多种语言,再到野兔。

实验结果表明,即使原数据一直保留,但模型崩溃的现象仍然会发生。随着不断迭代,模型开始忘记真实数据中的信息,并且生成的内容中包含越来越多重复的短语。

网络充斥 AI 内容,「数据源」早已被污染

看到这里你可能会问了:那还不简单,不使用合成数据训练 AI 不就完事了?但实际上,现在能从互联网上获取的「数据」,里面已经不知道有多少是 AI 生成的了,而且我们经常无法把它们和正常内容区分开来。

互联网上充斥着各种内容,这并不是新鲜事。正如研究人员在论文中指出的那样,早在大规模语言模型(LLM)成为公众熟知的话题之前,恶意网站就已经在制造内容,以欺骗搜索算法优先显示他们的网站以获取点击量。随着 OpenAI 的 GPT 系列大模型问世,生成式 AI 已经并将会极大地改变文本和图像内容的生态。

AI 生成文本可比人类说废话快得多,这引发了更大规模的担忧。杜克大学专门研究隐私与安全的计算机科学家艾米丽 - 温格 Emily Wenger 曾在文章中写到相关内容:「尽管 AI 生成的互联网对人类的影响还有待观察,但 Shumailov 等人报告称,在线上大量涌现的 AI 生成内容可能对这些模型本身造成毁灭性的影响。」

「模型崩溃带来的问题之一是对生成式 AI 的公平性构成挑战。崩溃的模型会忽略训练数据中的一些不常见元素,从而无法反映世界的复杂性和细微差别,」Wenger 补充道,「这可能导致少数群体或观点的代表性减少,甚至可能被抹去。」

大型科技公司正在采取一些措施,以减少普通网络用户看到的 AI 生成内容的数量。3 月份,谷歌宣布将调整其算法,把那些看起来是为搜索引擎而非人类搜索者设计的页面的优先级进行降低。然而,这一声明是在 404 Media 关于谷歌新闻推广 AI 生成文章的报道之后发布的。

《自然》杂志封面的这项研究强调,访问原始数据源并在递归训练的模型中仔细过滤数据,有助于保持模型的准确性。

该研究还建议,创建大型语言模型(LLM)的 AI 社区可以协调合作,追踪输入到模型中的信息来源。「否则,随着这种技术的广泛应用,如果无法获得在技术普及之前从互联网上爬取的数据或大量人类生成的数据,训练新的 LLM 版本可能会变得越来越困难」,研究团队总结道。

参考内容:

​​https://www.nature.com/articles/d41586-024-02355-z​​

​​https://gizmodo.com/ai-learning-from-its-own-nonsense-might-just-self-destruct-experts-warn-2000478095​​

#clasi

字节大模型同传智能体,一出手就是媲美人类的同声传译水平

无论是语速超快、发音复杂的绕口令,还是精妙绝伦的文言文,又或是充满即兴和灵感的随意聊天,模型都能流畅自然地给出准确而地道的翻译结果。

近年来,人工智能(Aritificial Intelligence, AI),尤其是以大语言模型(Large Language Models, LLMs)为代表的 AI 正以惊人的速度发展,这些模型在多种自然语言处理任务中展现了卓越的能力。然而,尽管在许多领域取得了突破,代表着人类顶尖语言水平的同声传译(Simultaneous Interpretation, SI)依然是一个未被完全攻克的难题。

市面上传统的同声传译软件通常采用级联模型(cascaded model)的方法,即先进行自动语音识别(Automatic Speech Recognition, ASR),然后再进行机器翻译(Machine Translation, MT)。这种方法存在一个显著的问题 —— 错误传播。ASR 过程中的错误会直接影响到后续的翻译质量,导致严重的误差累积。此外,传统的同声传译系统由于受限于低延时的要求,通常只使用了性能较差的小模型,这在应对复杂多变的实际应用场景时存在瓶颈。

来自字节跳动 ByteDance Research 团队的研究人员推出了端到端同声传译智能体:Cross Language Agent - Simultaneous Interpretation, CLASI,其效果已接近专业人工水平的同声传译,展示了巨大的潜力和先进的技术能力。CLASI 采用了端到端的架构,规避了级联模型中错误传播的问题,依托于豆包基座大模型和豆包大模型语音组的语音理解能力,同时具备了从外部获取知识的能力,最终形成了足以媲美人类水平的同声传译系统。

  • 论文地址:https://byteresearchcla.github.io/clasi/technical_report.pdf
  • 展示页面:https://byteresearchcla.github.io/clasi/

效果展示

视频 Demo:首先用几则即兴视频来感受一下 CLASI 的效果,所有字幕均为实时录屏输出。我们可以看到,无论是语速超快、发音复杂的绕口令,还是精妙绝伦的文言文,又或是充满即兴和灵感的随意聊天,模型都能流畅自然地给出准确而地道的翻译结果。更不用说,CLASI 在其老本行 —— 会议场景翻译中表现得尤为出色。

即兴对话-星座

朗读-赤壁赋

绕口令

更多视频可点击「阅读原文」进行查看

定量对比:研究人员分别在中英、英中翻译语向上,针对 4 个不同领域邀请专业的同传译员进行了人工评测,使用了与人工同传一致的评价指标:有效信息占比(百分制)。图中可以看到,CLASI 系统大幅领先所有商业系统和开源 SOTA 系统,并且在某些测试集上甚至达到或超过了人类同传水平(一般认为人类同传平均水平大概在 80%)。

图片

系统架构

系统架构上,CLASI 采用了基于 LLM 智能体的架构(下图左),将同声传译定义为一系列简单且协调的操作,包括读入音频流,检索(可选),读取记忆体,更新记忆体,输出等。整个流程由大语言模型自主控制,从而在实时性和翻译质量之间达到了高效的平衡。该系统能够根据实际需求灵活调整各个环节的处理策略,确保在高效传递信息的同时,保持翻译内容的准确性和连贯性。CLASI 底层模型是一个 Encoder-conditioned LLM,在海量的无监督和有监督数据上进行了预训练。CLASI 模型的系统架构如下图所示。

图片

图 1:图示展示了 CLASI 的整体操作流程。在步骤 1 中,CLASI 处理当前输入的音频数据。接下来检索器会被激活(可选),从用户自定义的知识库中获取相关信息。在这个示例中,使用知识库中的翻译对 “伊辛模型: Ising model” 能够帮助模型输出正确的译文。在步骤 3 中,CLASI 从上一轮的记忆体中加载转写(可选)和翻译。接下来(步骤 4 和步骤 5),CLASI 可能会启用思维链(CoT)来输出转写(可选)和翻译结果,然后更新其记忆体。最后,返回步骤 1 以处理下一轮的语音。

图片

图 2:CLASI 的结构图。在第 r 轮中,CLASI 将当前音频流、前序的记忆体(r-1)和检索到的知识(如果有)作为输入。CLASI 根据给定的指令输出响应,然后更新记忆体。同时,CLASI 还会输出截止当前,最后一个语义片段的截止时间戳。对于给定的示例,短语 “就在” 之前的内容被认为是完整的语义片段,所以截止时间戳就在此短语之前。

实验结果

图片

表 1:人工评测有效字段占比(Valid Information Proportion, VIP)中,CLASI 系统显著超过了其他所有竞品,并且在两个语向上均达到了 78% 以上的准确性。一般而言,可以认为人类同传的准确性在 70% 以上,理想情况下可以达到 95%,研究人员以 80% 的准确性作为高水平人类译员的平均标准。

示例分析

中翻英:

图片

英翻中:

图片

可以看到在多个方面,CLASI 的翻译均显著优于商用系统。

总结

来自字节跳动 ByteDance Research 团队的研究人员提出了基于豆包大模型的同传智能体:CLASI。得益于大规模预训练和模仿学习,在人工评估中,CLASI 的表现显著优于现有的自动同声传译系统的性能,几乎达到人类同传水平。

1. 研究人员提出了一种通过模仿专业人类译员的、数据驱动的读写策略。该策略无需复杂的人类预设计,即可轻松平衡翻译质量和延迟。与大多数商业系统在翻译过程中频繁重写输出以提高质量不同,该策略保证所有输出在保持高质量的同时是确定性的。

2. 人类译员一般需要预先准备同传内容,受此启发,研究人员引入了一种多模态检索增强生成(MM-RAG)过程,使 LLM 实时地具有领域特定的知识。所提出的模块在推理过程中以最小的计算开销进一步提高了翻译质量。

3. 研究人员与专业人类同传译员密切合作,制定了新的人工评估策略 “有效信息占比”(VIP),并公开了详细的指南。同时也发布了一个更接近现实场景的长语音翻译的多领域人工标注测试集。

#大模型AI智能体发现了代码漏洞

谷歌内部项目

开源数据库引擎 SQLite 有 bug,还是智能体检测出来的!

通常,软件开发团队会在软件发布之前发现软件中的漏洞,让攻击者没有破坏的余地。模糊测试 (Fuzzing)是一种常见的软件测试方法,其核心思想是将自动或半自动生成的随机数据输入到一个程序中,并监视程序异常。

尽管模糊测试大有帮助,但有些漏洞难以甚至不可能通过模糊测试发现。

谷歌内部有一个名为 Project Zero 的软件安全研究团队,他们发现随着大型语言模型 (LLM) 的代码理解和一般推理能力的提高,LLM 将能够在识别和展示安全漏洞时重现人类安全研究人员的系统方法,最终弥补当前自动漏洞发现方法的一些盲点。

Project Zero 在 6 月介绍了 LLM 辅助漏洞研究框架 ——Naptime 架构,之后 Naptime 演变成了 Big Sleep 智能体,由 Google Project Zero 和 Google DeepMind 合作完成。

图片

Naptime 架构

研究团队认为:与开放式漏洞研究相比,变体分析任务更适合当前的 LLM。通过提供一个起点(例如之前修复的漏洞的详细信息),可以消除漏洞研究中的很多歧义:「这是一个以前的错误;某个地方可能还有另一个类似的错误。」

现在,Big Sleep 智能体发现了第一个现实软件漏洞:SQLite 中可利用堆栈缓冲区下溢。

研究团队收集了 SQLite 存储库中最近的一些提交,手动删除了琐碎的和仅用于文档的更改,然后调整了 prompt,为智能体提供提交消息(commit message)和更改的差异,要求智能体检查当前存储库是否存在可能尚未修复的相关问题。

简单来说,SQLite 这个漏洞是在索引类型字段 iColumn 中使用了特殊的 sentinel 值 -1:

7476:   struct sqlite3_index_constraint {7477:      int iColumn;              /* Column constrained.  -1 for ROWID */7478:      unsigned char op;         /* Constraint operator */7479:      unsigned char usable;     /* True if this constraint is usable */7480:      int iTermOffset;          /* Used internally - xBestIndex should ignore */7481:   } *aConstraint;            /* Table of WHERE clause constraints */

这创建了一个潜在的边缘情况,而函数 seriesBestIndex 无法正确处理这种边缘情况,导致在处理对 rowid 列有约束的查询时,将负索引写入堆栈缓冲区。在研究团队提供给智能体的构建中,启用了调试断言(debug assertion),并且此条件由第 706 行的断言检查:

619 static int seriesBestIndex(620   sqlite3_vtab *pVTab,621   sqlite3_index_info *pIdxInfo622 ){...630   int aIdx[7];           /* Constraints on start, stop, step, LIMIT, OFFSET,631                          ** and value.  aIdx[5] covers value=, value>=, and632                          ** value>,  aIdx[6] covers value<= and value< */633   const struct sqlite3_index_constraint *pConstraint;...642   for(i=0; i<pIdxInfo->nConstraint; i++, pConstraint++){643     int iCol;    /* 0 for start, 1 for stop, 2 for step */644     int iMask;   /* bitmask for those column */645     int op = pConstraint->op;...705     iCol = pConstraint->iColumn - SERIES_COLUMN_START;706     assert( iCol>=0 && iCol<=2 );707     iMask = 1 << iCol;...713     if( pConstraint->usable==0 ){714       unusableMask |=  iMask;715       continue;716     }else if( op==SQLITE_INDEX_CONSTRAINT_EQ ){717       idxNum |= iMask;718       aIdx[iCol] = i;719     }720   }

然而,实际上这个断言并不存在,因此该漏洞可能会被恶意利用。幸运的是,该团队在正式版本出现之前就发现了这个问题,因此 SQLite 用户没有受到影响。

毫无疑问的是,智能体在这次漏洞查找中起了关键作用,这也表明智能体在软件安全方面具备很大的应用潜力。

参考链接:

​​https://googleprojectzero.blogspot.com/2024/10/from-naptime-to-big-sleep.html​​

#SELA

MetaGPT开源SELA,用AI设计AI,效果超越OpenAI使用的AIDE

SELA 由 MetaGPT 开源社区合著,作者分别来自 DeepWisdom、UC Berkeley、港科广、UCSD、华师、Stanford、港中深、Montreal & MILA 等机构。共同一作池一舟与林义章分别任职 DeepWisdom 实习研究员与研究员,他们均毕业于 UC Berkeley,林义章也是 Data Interpreter 的共同一作。共同通讯作者为 DeepWisdom 创始人兼 CEO 吴承霖(MetaGPT 代码作者、论文通讯作者)和蒙特利尔大学与 MILA 实验室的助理教授刘邦。

AI 智能体可以设计 AI 吗?

当然可以!

SELA 用 MCTS 设计 AI 效果在 20 个数据集上达到了 SoTA。它可以自己从历史设计与实验中学习,设计出比之前更好的 AI,并且完全开源。

  • arxiv:https://arxiv.org/abs/2410.17238
  • 代码:https://github.com/geekan/MetaGPT/tree/main/metagpt/ext/sela

图片

过去,AI 模型的设计和优化依赖大量专业知识和人力,过程耗时,易受个人经验影响。尽管 AutoML 技术有所进展,但现有系统只会对预定义的搜索空间进行组合搜索,与人类行为不一致。人类会提出动态搜索空间并求解。随着大模型技术的发展,我们看到了大模型能自主设计和调优 AI 模型的希望。然而,实现这一目标面临自主设计和持续调优两大挑战。

过去几个月,MetaGPT 团队开源的 Data Interpreter 能够自主完成多项机器学习任务,通过增强任务规划、工具集成和推理能力,提升了成功率,但缺乏持续性调优。weco.ai 团队的 AIDE 引入了结果反馈,在 OpenAI 发布的 MLE-bench 中表现优异,但由于采用贪婪搜索,往往只收敛到次优结果。

SELA 由 MetaGPT 团队联合多所顶尖机构推出,是一个可以进行自动实验的智能体。它全面超越了 AIDE 和 Data Interpreter ,在多项机器学习测试中表现卓越,展现出自动化设计与优化 AI 模型的巨大潜力。

图片

相比于传统 AutoML 框架和基于 LLM 的自动机器学习系统,SELA 可以动态地构造搜索空间,而不是基于一个固定的搜索空间进行搜索,在动态流水线构造表现出了显著优势。

图片

同时,就像 AlphaGo 会根据棋局中对手的动作不断提升,SELA 也会逐渐在多步中完成机器学习代码,解决了 AIDE 只能进行一步优化的问题。

图片

下方动图展示了 SELA 在医疗数据集(smoker-status)上的搜索过程,我们可以清晰地看到 SELA 在机器学习任务的各个阶段进行了多次深入探索。随着探索轮次的增加,节点的颜色逐渐加深,这象征着得分的持续提升。

,时长00:20

具体来看,SELA 从最初的解决方案 94.3(根节点)出发,通过探索性数据分析,敏锐地捕捉到数据集中潜藏的异常值,并通过数据预处理环节,移除了这些异常值,将得分提升至 96.3。随后,SELA 在另一次实验中,通过相关性分析,精准地剔除了冗余特征并降低了数据维度,使得得分跃升至 97.2。

SELA 是如何实现这样的效果的?

SELA 通过将问题描述和数据集信息输入 LLM,生成潜在解决方案的搜索空间,并由 Monte Carlo Tree Search(MCTS)进行探索。LLM Agent 进一步规划、编码和执行实验,利用模拟反馈优化搜索,形成迭代过程,最终产生优化的实验管道。这种方法模拟了人类专家的迭代和反馈驱动过程,提升了机器学习任务的性能和适应性。

图片

在上面的流程中,研究者们提出了三个重要组件,分别是 1)基于 LLM 的 Insight Proposer;2)基于 MCTS 的搜索策略;3)执行实验方案的 LLM Agent,下面我们会详细展开组件设计:

基于 LLM 的 Insight Proposer 

Insight Proposer 负责接收问题描述和数据集信息,将机器学习过程细分为探索性数据分析、数据预处理、特征工程、模型训练和模型评估五个关键阶段。并利用大型语言模型为每个阶段生成多样化的 Insight。这些 Insight 被汇集在见解池中,构建起 SELA 的搜索空间。

图片

基于 MCTS 的搜索策略

在 SELA 框架中,研究者们将解决机器学习问题的搜索空间看作一棵树,每条从根到目标节点的路径都表示一个由 Insight 组成的实验配置。因此,寻找最佳解决方案的任务可以被视为在树中搜索最优路径。

SELA 采用蒙特卡洛树搜索(MCTS)作为核心决策引擎,通过选择、扩展、模拟和反向传播四个关键步骤,高效地探索和优化解决方案。

  • 选择

在每次迭代中,SELA 使用 UCT 算法的修改版本 UCT-DP ,从搜索树中选择一个节点。与传统的 MCTS 不同,SELA 面临的挑战在于模型训练等过程引入的大量计算时间,因此高效的节点探索至关重要。SELA 通过尽早优先探索更深入的节点,减少了探索每个未访问节点的需要,允许在更少的迭代中到达更深的节点,使该方法更适合大规模机器学习实验。

  • 扩展

在扩展阶段,将从所选节点实例化一组子节点以进行模拟,子节点继承了父节点的所有属性,并在此基础上增加了新的洞察,以进一步探索和优化解决方案。

  • 模拟

扩展结束后,SELA 将从扩展的子节点中随机采样一个节点进行模拟,SELA 将首先获取这条路径对应的配置。这些配置随后被交给负责实验的 Agent 执行,产生模拟分数,该分数作为反向传播的反馈。

  • 反向传播

在模拟结束后,SELA 会收集性能分数(例如,基于验证集的分数),并通过树结构进行反向传播。这些分数从模拟节点传递到根节点,更新每个父节点的值和访问计数,从而在未来的搜索中优先考虑那些代表更有前途解决方案的节点。同时,解决方案代码也会反向传播到树中,并在更新期间根据父节点进行处理,保存为阶段代码。

图片

执行实验方案的 LLM Agent

SELA 设计了一个 LLM Agent 用于执行实验方案,通过自然语言需求构建实用的 pipeline。Agent 首先将搜索模块提供的 Insight 转化为详细计划,然后根据计划编写并执行代码,生成最终的 Pipeline 和执行分数。为提升效率,SELA 在阶段级别进行代码缓存,实现精细的代码重用,避免重复劳动,并应对 LLM 的非确定性问题,确保实验的一致性和可预测性。

实验

基准测试

SELA 选取了 AutoML 的 13 个分类任务和 7 个回归任务,以及 Kaggle 竞赛的 20 个数据集进行评估。

所有数据集按相同比例切分,确保各框架接受相同数据。基于 LLM 的框架(SELA、Data Interpreter 和 AIDE)采用相同配置和迭代次数。AutoGluon 和 AutoSklearn 均使用默认设置。由于 AutoGluon 结果是确定性所以只运行一次,其余实验均运行三次。我们对每个数据集上不同框架的全部运行结果进行排名,以比较优劣。

图片

图中展示了多个自动机器学习框架在不同数据集上的预测表现,横轴为与 SELA 最佳性能相比的标准化得分(NS)。结果显示,SELA 在大多数数据集中表现优异,其他框架如 AutoSklearn、AIDE、AutoGluon 和 Data Interpreter 在某些数据集上有竞争力,但整体上 SELA 展现出更为一致的高性能和适应性。

图片

SELA 在所有框架中取得了最高的平均标准化分数和最佳排名,证明了其在多种数据类型和任务上的稳健性和卓越表现。

消融实验

图片

图片

研究者们设计了三个消融实验,用来验证 SELA 性能和策略的有效性。首先,是对探索次数的消融。实验结果显示,随着探索次数的增加,SELA 有效利用了更多的探索机会,使平均性能显著提升。

其次,LLM 的消融研究对比了 GPT-4o、Claude-3.5-Sonnet 和 DeepSeek-V2.5,结果表明 Claude-3.5-Sonnet 和 GPT-4o 表现稳定且适应性强,而 DeepSeek-V2.5 在某些数据集上略逊色,但在 Click prediction 和 boston 数据集上表现相近,充分说明 SELA 在不同模型上均有出色表现。

此外,研究者们进一步验证了 SELA 所采用的 MCTS(蒙特卡洛树搜索)策略的卓越有效性。相较于 DataInterpreter(无搜索)和随机搜索,MCTS 策略展现出了显著的优势,这证明 SELA 最终采用的搜索策略是必要且有效的。

结语

SELA 提出了一种让 AI 自主设计和持续优化自身的方法,并全面地展示了其取得的不俗效果。研究者们认为,该工作表明了 AI 在这一方向的潜力,将为未来的相关研究提供有价值的参考。

#BELM

浙大 & 微信 & 清华:彻底解决扩散模型反演问题

本篇论文已经被NeurIPS 2024接收。第一作者王方懿康是微信视觉团队实习生,同时也是浙江大学一年级硕士研究生。共同一作是微信高级研究员Hubery。通讯作者是浙江大学助理教授张超。其他作者包括来自清华大学的董玥江,来自浙江大学的朱胡旻昊,赵涵斌助理教授和钱徽教授,以及微信基础视觉和视觉生成技术负责人李琛。

随着扩散生成模型的发展,人工智能步入了属于 AIGC 的新纪元。扩散生成模型可以对初始高斯噪声进行逐步去噪而得到高质量的采样。当前,许多应用都涉及扩散模型的反演,即找到一个生成样本对应的初始噪声。当前的采样器不能兼顾反演的准确性和采样的质量。

为彻底解决这一问题,微信视觉团队与浙江大学和清华大学联手提出了基于双向显式线性多步法的扩散模型精确反演采样器(BELM)这一通用算法,并通过截断误差分析确定了最优的 BELM 采样器系数。此方法在确保精确反演的同时还提升了生成样本的质量,在图像与视频的编辑、插值等下游任务中有广泛的应用前景。这一研究成果已被 NeurIPS 2024 会议接收。

当前,扩散模型在图像生成、文字生成、音频生成等多个领域得到了广泛应用,表现出了卓越的性能。扩散模型的反演操作,即找到一个生成样本对应的初始噪声,对若干下游任务起到关键的作用。传统的 DDIM 反演会造成严重的不一致问题,即原始图片加噪再去噪的结果与原图相差甚远。

近期,研究者们提出了多种启发式的精确反演采样器来解决 DDIM 反演的不一致问题。然而,这些启发式的精确反演采样器的理论特性尚不明确,且采样质量常常不尽如人意,这在一定程度上限制了它们的应用。

为此,本研究引入了一种通用的精确反演采样器范式 —— 双向显式线性多步(BELM)采样器,该范式包含了上文提到的启发式精确反演采样器。该团队在 BELM 范式内系统地研究了局部截断误差(LTE),发现现有的精确反演采样器的 LTE 并非最优。

因此,研究团队通过 LTE 最小化方法提出了最优的 BELM(Optimal-BELM,O-BELM)采样器。实验表明,O-BELM 采样器在实现精确反演的同时,也提升了采样的质量。

论文题目:BELM: Bidirectional Explicit Linear Multi-step Sampler for Exact Inversion in Diffusion Models

论文链接:https://arxiv.org/abs/2410.07273

项目地址:https://github.com/zituitui/BELM

背景:DDIM 反演造成的不一致问题

由于 DDIM 的正向过程和反演过程使用的迭代式并不相同,所以 DDIM 的反演重构样本与初始的样本存在较大差别。

实际使用中,DDIM 的反演有显著的不一致问题:

图片

图片

现有精确反演方法

Null-text-inversion

以 Null-tex-inversion 为代表的方法对 unconditional 占位符进行 fine-tune,以达到精确反演。

问题:这类方法局限于 text-classifier-free-guidance 场景下的扩散模型;需要额外训练,低效。

图片

EDICT

EDICT 是基于 DDIM 的启发式算法,借鉴了可逆网络的做法,有两个相互糅合的采样链。

图片

其逆过程如下,精确可逆:

图片

问题:需要两倍计算量;超参数 p 不鲁棒,导致采样质量不可控。

BDIA

BDIA 改进了 EDICT,使用 x_i 的速度,x_i 和 x_{i+1} 的位置,通过下述公式实现精确可逆:

图片

问题:超参数 gamma 不鲁棒,导致采样质量不佳。

EDICT 和 BDIA 参数的不鲁棒:

EDICT 和 BDIA 超参数的意义不明,没有理论指导如何调整,导致不同情形下超参数的选择差别巨大。使用起来极为不便。

图片

图片

双向显式线性多步法(BELM)框架

思路起源:DDIM 的正向过程(由蓝线表示)与反演过程(由红线表示)是两种不同的关系,这导致了 DDIM 的反演不准确。如果强制正过程与反过程使用相同关系,又会引入隐式方法,大大增加计算复杂度。如果多引入一个点,不用隐式方法也可逆(由绿线表示)。

图片

该论文中的算法,正向和反演过程都服从相同的关系,因此能够精确反演。具体来说,为了系统地设计这种采样器,首先要将扩散模型的采样过程建模为一个 IVP(Initial Value Problem,初值问题):

图片

以下是 IVP 的一般形式,这实际上是一个变步长变公式线性多步方法(VSVFM):

图片

为了避免隐式方法的复杂计算,上式需要在正向和反向都是显式的,该团队称这一性质为双向显性(bidirectional explicit)。

图片

代入双向显性条件,可以得到一般的 k 步 BELM 采样器:

图片

最简单的形式是 k=2,称为 2-BELM,其表达式如下:

图片

据此很容易证明,一个满足双向显性性质的线性多步法采样器拥有精确反演性质:

图片

研究团队还发现,前文提到的 EDICT 和 BDIA 都是 BELM 框架的特例:

图片

这也解释了 EDICT 和 BDIA 能够精确反演的原因。

最优双向显式线性多步(O-BELM)采样器

研究团队在推导 BELM 框架暂时没有给出具体的系数选择,而启发式的系数选择(如 EDICT 和 BDIA)会造成采样质量的退化。因此,他们提出使用局部截断误差(LTE)来获取最优系数。

首先分析 BELM 的局部截断误差:

图片

通过对局部截断误差的最小化,我们得到了最优的 BELM 系数,我们称此系数下的 BELM 采样器为最优 BELM(O-BELM):

图片

O-BELM 的正向过程表达式如下:

图片

O-BELM 的反演过程表达式如下:

图片

此外,研究团队还证明了 O-BELM 满足稳定性和全局收敛性:

图片

至此,可以对比几种不同反演采样器的性质:

图片

可见,O-BELM 是第一种在严格的理论保证下兼顾精确反演性质和采样质量的采样器。

实验

重建实验(验证 O-BELM 精确反演性质)

latent 空间上的 O-BELM 的重建误差为 0,这表明 O-BELM 具有精确反演的性质:

图片

图片

采样实验(验证 O-BELM 的高质量采样性质)

不论在无条件生成还是条件生成中,O-BELM 都表现出了高于 DDIM,EDICT 和 BDIA 的采样质量:

图片

下游任务 —— 图像编辑

图像编辑实验体现了:

1. 由于 DDIM 不具有精确反演性质,编辑的结果中存在不一致问题(红色框);

2. 由于 EDICT 和 BDIA 具有较大的采样误差,编辑的结果出现了不真实区域(黄色框);

3.O-BELM 在保持图像一致的条件下完成了高质量的编辑。

图片

图片

由于 O-BELM 是一个采样方法,因此可以无缝地与 controlNet 结合,编辑效果也优于其他方法:

图片

下游任务 —— 图像插值

由于 O-BELM 精确地建立了噪声和生成样本的对应关系,这个关系是 probability flow ODE 的近似,因此 O-BELM 也使得图像插值更符合人的直觉:

图片

结语

本研究提出的双向显式线性多步法采样器从理论上分析并彻底解决了现有扩散生成模型中的反演问题,进一步拓宽了扩散模型在计算机视觉领域的能力边界。在图像和视频的编辑任务上有巨大的应用前景。

#谷歌Agent首次发现真实世界代码漏洞

抢救全球数亿设备,或挽回数十亿美元损失?

AI首次发现真实世界中的重大安全漏洞?SQLite中的一个漏洞,幸运地被谷歌研究者的AI Agent发现了,修复后并未造成任何损失。莫非AI再进化一番,微软的全球蓝屏事故就可以永久避免了?这个可能性令人激动不已。

LLM居然在真实世界的代码中,发现了一个漏洞?

想象一下,AI正在默默地守护着我们日常使用的软件。忽然,它发现了一个你我可能从未察觉的安全隐患,并且悄无声息地把它修复了!

就在刚刚,谷歌的Big Sleep项目揭示了一个惊人的成果:一个真实世界的安全漏洞,出现在全球广泛使用的SQLite数据库中,而这个漏洞竟然被AI成功识别出来了?在真实世界的危机扩散之前,它及时挽回了局面。

隶属于谷歌Project Zero和Google DeepMind的团队声称,这是AI Agent在广泛使用的现实软件中,发现未知可利用内存安全问题的第一个公开示例。

要知道,这不仅仅是一个崩溃的测试用例,它是AI首次在真实世界的软件中找到未知的、可利用的内存漏洞。

此前,网络安全巨头CrowdStrike闹出的一个由「C-00000291*.sys」配置文件触发的系统逻辑错误,瞬间就破坏掉全世界约10亿台计算机,直接导致微软蓝屏、全球停摆。

如果未来某一天,AI能帮我们解决所有技术领域的单点瞬时故障,不知会帮人类节省下多少财富?

用LLM在真实世界中「捉虫」

随着LLM代码理解和一般推理能力的提高,谷歌研究者一直在探索这些模型如何在识别和演示安全漏洞时,重新人类安全研究人员的方法。

在《Project Naptime:评估大型语言模型的攻防能力》中,Big Sleep团队介绍了一个利用LLM辅助的漏洞研究框架,并通过在Meta的CyberSecEval2基准测试上提升了最新的性能,展示了这种方法的潜力。

从那时起,Naptime就变成「Big Sleep」,成为了Google Project Zero与Google DeepMind的合作项目。

就在刚刚,谷歌研究者激动地表示,Big Sleep Agent发现了首个真实世界漏洞:一个存在于SQLite中的可利用栈缓冲区下溢漏洞。

SQLite是一款被广泛使用的开源数据库引擎。

在十月初,Agent发现了了这个漏洞,于是谷歌研究者立刻将其报告给了开发者,他们在同一天进行了修复。

幸运的是,AI在这个问题出现在官方发布版本之前,就发现了它,因此SQLite的用户未受影响。

要知道,SQLite作为轻量级嵌入式数据库,广泛应用于智能手机、浏览器、嵌入式系统、IoT设备等多种环境,涵盖了许多用户和敏感信息。

如果攻击者利用该漏洞进行数据泄露、系统入侵或破坏,潜在损失金额可能少则几百万,多则数十亿美元!

谷歌研究者表示,这是AI Agent首次在广泛使用的真实世界软件中发现未知的、可利用的内存安全问题的公开案例。

之所以会有这次尝试,是因为今年早些时候,在DARPA的AIxCC活动中,亚特兰大团队在SQLite中发现了一个空指针取消引用的漏洞,这就给了谷歌研究者启发——

是否可以使用SQLite进行测试,看看能否找到更严重的漏洞呢?

果然,AI Agent真的找出了一个漏洞。

这项工作,无疑具有巨大的潜力。

在软件尚未发布前就发现漏洞,就意味着攻击者没有机会利用:漏洞在他们有机会使用之前,就已被修复。

虽然模糊测试也能带来显著的帮助,但我们更需要的是一种方法,帮助防御者找到那些很难通过模糊测试发现的漏洞。

现在,AI有望缩小这一差距!

谷歌研究者表示,这是一条有希望的道路,能为防御者带来不对称的优势。

因为这个漏洞相当有趣,而且SQLite的现有测试基础设施(包括OSS-Fuzz和项目自身的测试)并没有发现它,因此谷歌研究者进行了深入调查。

方法架构

Naptime和Big Sleep项目的关键驱动因素,就是已经发现并修补的漏洞变种,仍在现实中不断被发现。

显而易见,fuzzing(模糊测试)并不能成功捕获此类变种漏洞,而对攻击者而言,手动变种分析的方法仍然性价比很高。

谷歌研究者认为,相比更为宽泛的开放式漏洞研究问题,这种变种分析任务更适合当前的LLM。

通过提供一个具体的起点——比如此前修复的漏洞的详细信息——我们就可以降低漏洞研究中的不确定性, 并且还能从一个明确的、有理论支撑的假设出发:「这里曾经存在一个漏洞,很可能在某处还存在类似的问题」。

目前,他们的项目仍处于研究阶段,正在使用带有已知漏洞的小型程序来评估研究进展。

最近,他们决定通过在SQLite上开展首次大规模的真实环境变种分析实验,来测试他们的模型和工具链。

他们收集了SQLite repository近期的一系列提交,手动筛除了无关紧要的改动和纯文档更新。

随后,他们调整了prompt,为AI Agent同时提供了提交信息和代码变更,并要求它审查当前代码库(在HEAD位置)中可能仍未修复的相关问题。

Project Naptime

Naptime采用了一种专门的架构来增强大语言模型进行漏洞研究的能力,其核心是AI Agent与目标代码库之间的交互。

系统架构

为了让AI Agent可以模仿人类安全研究员的工作流程,研究团队开发了一系列专用的工具:

  • 代码浏览工具(Code Browser)使AI Agent能够浏览目标代码库,这与工程师使用Chromium Code Search的方式类似。它提供了查看特定实体(如函数、变量等)源代码的功能,并能识别函数或实体被引用的位置。
  • Python工具让AI Agent能够在隔离的沙盒(Sandbox)环境中运行Python脚本,用于执行中间计算并生成精确而复杂的目标程序输入。
  • 调试器工具(Debugger)为AI Agent提供了程序交互能力,可以观察程序在不同输入下的行为表现。它支持断点设置并能在断点处评估表达式,从而实现动态分析。
  • 报告工具(Reporter)为AI Agent提供了一个结构化的进度通报机制。AI Agent可以发送任务完成信号,触发控制器验证是否达成成功条件(通常表现为程序崩溃)。当无法取得进一步进展时,它还允许AI Agent主动中止任务,避免陷入停滞状态。

发现漏洞

这个漏洞非常有趣,比如在一个通常为索引类型的字段iColumn中,使用了一个特殊的哨兵值-1:

7476:   struct sqlite3_index_constraint {
7477:      int iColumn;              /* Column constrained.  -1 for ROWID */
7478:      unsigned char op;         /* Constraint operator */
7479:      unsigned char usable;     /* True if this constraint is usable */
7480:      int iTermOffset;          /* Used internally - xBestIndex should ignore */
7481:   } *aConstraint;            /* Table of WHERE clause constraints */

这种模式产生了一个边缘案例,所有使用该字段的代码都需要正确处理这种情况,因为按照常规预期,有效的列索引值应该是非负的。

seriesBestIndex函数在处理这个edge case时存在缺陷,当处理包含rowid列约束的查询时,导致写入了带有负索引的堆栈缓冲区。

在研究者提供给AI Agent的编译版本中,debug assertion功能已启用,这种异常情况会被第706行的断言检查所捕获:

619 static int seriesBestIndex(
620   sqlite3_vtab *pVTab,
621   sqlite3_index_info *pIdxInfo
622 ){
...
630   int aIdx[7];           /* Constraints on start, stop, step, LIMIT, OFFSET,
631                          ** and value.  aIdx[5] covers value=, value>=, and
632                          ** value>,  aIdx[6] covers value<= and value< */
633   const struct sqlite3_index_constraint *pConstraint;
...
642   for(i=0; i<pIdxInfo->nConstraint; i++, pConstraint++){
643     int iCol;    /* 0 for start, 1 for stop, 2 for step */
644     int iMask;   /* bitmask for those column */
645     int op = pConstraint->op;
...
705     iCol = pConstraint->iColumn - SERIES_COLUMN_START;
706     assert( iCol>=0 && iCol<=2 );
707     iMask = 1 << iCol;
...
713     if( pConstraint->usable==0 ){
714       unusableMask |=  iMask;
715       continue;
716     }else if( op==SQLITE_INDEX_CONSTRAINT_EQ ){
717       idxNum |= iMask;
718       aIdx[iCol] = i;
719     }
720   }

然而,在发布版本中,这个断言检查并不存在。

在研究者的测试环境中(具体表现会因编译器和优化级别而异),第718行的后续写入操作会越界写入aIdx缓冲区下方的内存区域,导致pConstraint指针的最低有效32位被破坏。

当这个被破坏的指针在循环的下一次迭代中被取消引用时,就会产生潜在的可利用漏洞条件。

不过,即使有了这样的漏洞说明,对于人类研究员来说,要精确理解如何触发这个漏洞仍然不易。

虽然针对ROWID列设置约束显然是个不错的切入点,但要完全理解,还需要深入研读代码。

而 AI 智能体似乎已经掌握了比人类研究员更多的SQLite相关知识,这使它能够更高效地定位问题!

这种情况的一个典型例子,就是LLM在生成测试用例时会直接使用generate_series虚拟表。

(虽然研究者也观察到模型会先研究可用的虚拟表的情况,但很明显,它能够在这里直接运用已有的知识)。

执行过程重点分析

在这次基于Gemini 1.5 Pro的成功测试中,seed commit为 [1976c3f7],这是一个规模较大、复杂的代码变更。

而研究者的AI Agent发现的漏洞,与该seed commit中的变更仅存在松散关联——这种情况在手动变种分析中较为常见,因为在理解代码库中的某个漏洞时,研究人员往往会由此发现其他潜在问题。

以下是关键节点摘要,其中,所有ASSISTANT块中的内容均直接来自AI Agent。

AI Agent对差异中的变化进行了合理的评估,并以此作为研究的切入点:

ASSISTANT

通过引入termFromWhereClause函数,CL改进了在虚拟表查询中处理OR分支共享的WHERE条件的方式。该函数在考虑嵌套子句的情况下,从WhereClause中检索特定的条件。

在此更改之前,由于条件索引映射不正确,共享的条件可能未被正确处理,可能导致低效的查询计划或错误的结果。

最可能出现的问题涉及在allocateIndexInfo和whereLoopAddVirtualOne函数中不正确地处理WHERE子句约束,其中 CL 修改了如何使用新的辅助函数来处理约束偏移量。

我将首先检查allocateIndexInfo函数。

在经过数个步骤探索相关代码后,AI Agent形成了一个更明确的测试假设——它试图通过运行patch中测试用例的修改版本来验证这个假设,但未能成功。

原因在于patch中的测试用例依赖于一个在当前配置环境中未启用的扩展模块:

TOOL(debugger_run )

程序在未崩溃或命中断点的情况下退出。退出代码为1。

STDERR输出为:

Runtime error near line 2: no such module: tcl

Parse error near line 3: no such table: x1

ASSISTANT  

程序终止是因为TCL模块不可用。测试依赖于TCL虚拟表模块,需要在编译SQLite时启用该模块。提供的程序的输入基于bestindexC.test文件,它使用TCL模块来测试虚拟表的最佳索引选择。

为了解决这个问题,需要更改程序输入,使用不需要TCL模块的其他虚拟表。然而,该漏洞与虚拟表的查询计划有关,所以我们仍然需要一个虚拟表来触发此问题。

我将使用code_browser_source工具来检索SQLite中的内置虚拟表示例。然后,我将调整输入,使用其中一个虚拟表,并重新在whereLoopAddVirtualOne中设置断点。

AI Agent很好地应对了这个问题,准确识别出了修复测试用例所需的各个步骤,并在后续几个步骤中成功收集到了所有构建测试用例所需的信息,最终实现了触达whereLoopAddVirtualOne的目标:

ASSISTANT

sqlite3_create_module函数用于注册虚拟表模块。shell.c文件包含了多个这样的实例,包括generate_series、fsdir、completion和expert模块。其中json表的实现也很值得关注。

我首先关注的是generate_series,然后构造出一个使用该模块的查询,从而触发错误的约束处理。

需要注意的是,在最初发现和复现该漏洞时,AI Agent对于它试图触发的「不正确约束处理」的描述相当模糊。

在这种情况下,完整的执行轨迹读起来颇似人类研究员的思维过程——从一个想法开始,在调查过程中产生其他几个想法,最终生成了一个可以复现略有不同漏洞的测试用例。

在本例中,当whereLoopAddVirtualOne在generate_series表上被调用时,执行流程最终会进入seriesBestIndex,在那里约束确实被错误处理了。

特别有趣的是,一旦程序崩溃,模型会在解释问题时表现得更为出色——在生成根因分析(root-cause analysis)和完整崩溃报告时,我们可以看到AI Agent清晰地构造了一个测试用例来触发特定的已识别边缘案例:

ASSISTANT

相关的字段是sqlite3_index_constraint结构体中的iColumn。该字段表示约束的列编号。要导致断言失败,我们需要对索引大于3或小于-1的列设置约束。

让我们构建一个涉及这些列约束的SQL查询。generate_series表有名为value、start、step和stop的列。它们的索引是:

- value: 0

- start: 1

- step: 2

- stop:3

要触发此漏洞,我们可以对ROWID施加一个约束,并对ROWID的约束使用iColumn = -1。

示例查询如下:

SELECT * FROM generate_series(1,10,1) WHERE ROWID = 1;

该查询将导致seriesBestIndex函数崩溃。

最终,得到了一个清晰准确的问题总结,几乎可以直接用于漏洞报告!

TOOL(debugger_run)

程序崩溃:SIGABRT at :0

STDERR输出为:

sqlite3: src/shell.c:6816: int seriesBestIndex(sqlite3_vtab *, sqlite3_index_info *): Assertion `iCol>=0 &&  iCol<=2' failed.

ASSISTANT(report_success)

程序在执行SELECT * FROM generate_series(1,10,1) WHERE ROWID = 1;时因seriesBestIndex函数中的断言失败而崩溃。

断言assert(iCol>=0 && iCol<=2)失败的原因是sqlite3_index_info结构体中的iColumn字段可能包含超出列索引有效范围的值,例如在约束涉及ROWID时为-1。

这导致iCol被计算为-2,从而导致断言失败。

关于模糊测试

一个显而易见的问题是:为什么传统的模糊测试没有更早发现这个漏洞?

答案就在模糊测试工具链的配置上。

OSS-Fuzz使用的工具并没有启用generate_series扩展,而替代的fuzzingshell.c工具包含的是旧版本的seriesBestIndex函数,未受此漏洞影响。

虽然SQLite AFL仓库中包含一个针对研究者提供给Big Sleep智能体的、相同CLI二进制文件的模糊测试配置,但似乎并未被广泛使用。

这个漏洞是否真的容易发现?

为此,研究者尝试通过模糊测试重新发现它。

他们遵循SQLite文档中的模糊测试说明,并使用CLI目标。在启动AFL运行之前,他们还验证了模糊测试语料库中包含所需的generate_series和rowid关键字。

然而,经过150个CPU小时的模糊测试,问题仍未被发现。

随后,他们尝试通过将必要的关键字添加到AFL的SQL字典中,来简化模糊测试的任务。

然而,似乎只有当语料库包含与导致崩溃的输入非常接近的示例时,漏洞才能被快速发现,因为代码覆盖率对这个特定问题并不是可靠的指标。

诚然,AFL并不是针对像SQL这种基于文本的格式最适合的工具,大多数输入在语法上无效,会被解析器拒绝。

然而,如果将这一结果与Michal Zalewski在2015年关于模糊测试SQLite的博客文章进行比较,会发现十分有趣的事。

那时,AFL在发现SQLite漏洞方面相当有效;经过多年的模糊测试,该工具似乎已经达到自然的饱和点。

虽然研究者迄今为止的结果与AFL发布时带来的显著效果相比显得微不足道,但它有自己的优势——有概率能够有效地发现一组不同的漏洞。

结论

对于团队来说,这个项目无疑成功了。

在广泛使用且模糊化的开源项目中找到漏洞,非常一个令人兴奋!

这也就意味着:当提供正确的工具时,当前的LLMs可以进行漏洞研究。

不过,研究者想重申,这些都是高度实验性的结果。

Big Sleep 团队表示:目前,在发现漏洞方面,针对特定目标的模糊器可能至少同样有效。

研究者希望,未来这项工作将为防御者带来显著优势——

不仅有可能找到导致崩溃的测试用例,还能提供高质量的根本原因分析,使得问题的分类和修复变得更便宜且更有效。

谷歌研究者表示,会继续分享自己的研究成果,尽可能缩小公共技术前沿和私有技术前沿之间的差距。

Big Sleep团队也会将继续努力,推进零日计划的使命,让0-day变得更加困难。

团队介绍

团队中唯一的华人Dan Zheng是谷歌DeepMind的研究工程师,从事代码和软件工程的机器学习,以及编程语言的研究。

此前,他曾参与Swift for TensorFlow的工作,专注于Swift中的可微分编程。

他在普渡大学获得了计算机科学专业的学士学位。毕业后,他做了多年的学生研究员,期间研究成果颇丰。

参考资料:

​​https://googleprojectzero.blogspot.com/2024/10/from-naptime-to-big-sleep.html​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462698.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 这里实现的是256*256双线性插值到512*512的系统模块 局部放大&#xff1a; 将数据导入到matlab&#xff0c;得到插值效果…

书生大模型第一关Linux基础知识

任务一&#xff1a;完成SSH连接与端口映射并运行hello_world.py 1.SSH及其端口映射 2.在VSCode中安装插件&#xff1a; 3.创建开发机 最后点击创建&#xff0c;然后可能需要等待一段较长的时间&#xff0c;大概需要5分钟左右&#xff0c;如果需要排队则更长时间 然后选择…

SpringBoot配置Access-Control-Allow-Origin

1. 配置过滤器 Component WebFilter(urlPatterns "/*", filterName "CorsFilter") public class CorsFilter implements Filter {Overridepublic void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, Serv…

如何压缩pdf文件的大小?5分钟压缩pdf的方法推荐

如何压缩pdf文件的大小&#xff1f;在现代办公和学习中&#xff0c;PDF文件因其稳定性和广泛的兼容性被广泛使用。然而&#xff0c;随着文件内容的增多&#xff0c;制作好的PDF文件常常变得过大&#xff0c;给使用带来了诸多不便。无论是电子邮件附件的发送&#xff0c;还是在线…

二十九、Python基础语法(继承-上)

一、概念介绍 继承&#xff1a;继承描述的是类与类之间的关系&#xff0c;集成之后子类对象可以直接使用父类中定义的方法的属性&#xff0c;可以减少代码冗余&#xff0c;提高编码效率。 二、继承语法 三、继承例子 # 定义一个父类 Animal class Animal:def __init__(self,…

Creo/Proe 入门基础教程(二)

本文章继续接着《Creo/Proe 入门基础教程&#xff08;一&#xff09;》的内容往下介绍&#xff1a; 2、绘制草图 草图绘制就是建立2D的截面图&#xff0c;然后以此截面生成拉伸、旋转等 特征实体。构成2D截面的要素有3个&#xff1a;2D几何图形&#xff08;Geometry&#xff0…

ZooKeeper 客户端API操作

文章目录 一、节点信息1、创建节点2、获取子节点并监听节点变化3、判断节点是否存在4、客户端向服务端写入数据写入请求直接发给 Leader 节点写入请求直接发给 follow 节点 二、服务器动态上下线监听1、监听过程2、代码 三、分布式锁1、什么是分布式锁?2、Curator 框架实现分布…

江协科技STM32学习- P30 FlyMCU串口下载STLink Utility

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

Java中的日期与时间对象:LocalDate类、LocalTime类、LocalDateTime类、DateTimeFormatter类

在 Java 中&#xff0c;LocalDate、LocalTime 和 LocalDateTime 是 java.time 包中的类&#xff0c;用于表示日期、时间和日期时间。这些类提供了不可变的日期与时间对象&#xff0c;是 Java 8 及以后版本中引入的一部分&#xff0c;用于替代旧的 java.util.Date 和 java.util.…

Java基于微信小程序的美食推荐系统(附源码,文档)

博主介绍&#xff1a;✌程序猿徐师兄、8年大厂程序员经历。全网粉丝15w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

杨辉三角形

大家好&#xff0c;今天给大家分享一下杨辉三角形是如何打印的&#xff0c;首先我们来看看它的原理。 我们先来看结果 1.如果把它看为一个二维数组&#xff08;包括后面的空格&#xff09;&#xff0c;那么它数字的这边是一个直角三角形&#xff0c;它的第一列和对角线都为1&a…

C语言进阶之我与指针的爱恨情仇(1)

一.前言 我们在初阶《指针》初阶C语言-指针-CSDN博客已经讲过了一些基础知识&#xff0c;知道了关于指针的一些概念-> 1.指针就是个变量&#xff0c;用来存放地址&#xff0c;地址唯一标识一块内存空间 2.指针的大小是固定的4/8个字节&#xff08;32位平台/64位平台&#xf…

构建灵活、高效的HTTP/1.1应用:探索h11库

文章目录 构建灵活、高效的HTTP/1.1应用&#xff1a;探索h11库背景这个库是什么&#xff1f;如何安装这个库&#xff1f;库函数使用方法使用场景常见的Bug及解决方案总结 构建灵活、高效的HTTP/1.1应用&#xff1a;探索h11库 背景 在现代网络应用中&#xff0c;HTTP协议是基础…

基于语音信号的说话人识别

基于语音信号的说话人识别 摘 要 语音是人类相互交流和通信最方便快捷的手段。如何高效地实现语音传输存储或通过 语音实现人机交互&#xff0c;是语音信号处理领域中的重要研究课题。语音信号处理涉及数字信号处理、语音学、语言学、生理学、心理学、计算机科学以及模式识别…

车载软件架构 --- 智能汽车软件

我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 所有人的看法和评价都是暂时的&#xff0c;只有自己的经历是伴随一生的&#xff0c;几乎所有的担忧和畏惧…

实际案例说明用基于FPGA的原型来测试、验证和确认IP——如何做到鱼与熊掌兼得?

作者&#xff1a;Philipp Jacobsohn&#xff0c;SmartDV首席应用工程师 Sunil Kumar&#xff0c;SmartDV FPGA设计总监 本系列文章从数字芯片设计项目技术总监的角度出发&#xff0c;介绍了如何将芯片的产品定义与设计和验证规划进行结合&#xff0c;详细讲述了在FPGA上使用硅…

UiPath调用Python脚本的完整示例

一、主要步骤&#xff1a; 1、创建Python脚本 2、安装UiPath.Python.Activities库 3、使用方法&#xff1a; a、添加python作用域 b、加载python脚本 c、调用python方法 d、获取python对象 e、显示Python结果的消息对话框 二、详细步骤 1、安装UiPath.Python.Activities库 …

【简易进度条的实现】

独夜无伴守灯下&#xff0c;清风对面吹............................................................................................. 文章目录 前言 一、【行缓冲区的引入】 1、【问题提出】 2、【\r和\n】 3、【简易倒计时程序】 二、【简易进度条的实现】 process_bar.…

【已解决】cra 配置路径别名 @ 后,出现 ts 报错:找不到模块“@/App”或其相应的类型声明。ts(2307)

cra 配置路径别名 后&#xff0c;出现 ts 报错&#xff1a;找不到模块“/App”或其相应的类型声明。ts(2307) 然后可以在 tsconfig.json 中配置 baseUrl 和 paths &#xff1a; {"compilerOptions": {"target": "es5","lib": [&quo…

es拼音分词器(仅供自己参考)

github地址&#xff1a;https://github.com/infinilabs/analysis-pinyin&#xff08;各种版本&#xff0c;对接es版本&#xff09; 拼音分词器存在的问题&#xff1a; 1、是直接将每个字的拼音返回和一段话的拼音首字母返回&#xff0c;不能很好的分词。 2、不会保留中文&am…