揭秘LLMs不确定性背后的隐患:后门攻击的悄然兴起

ee27bd513a1d05d5c3f8368c2ce8c63e.png

论文:Uncertainty is Fragile: Manipulating Uncertainty in Large Language Models

链接:https://arxiv.org/pdf/2407.11282

研究背景

研究问题:这篇文章研究了大型语言模型(LLMs)在处理高 stakes 领域时的可靠性问题,特别是其不确定性估计的脆弱性及其潜在的攻击方法。

研究难点:该问题的研究难点包括如何在不影响最终输出的情况下,通过特定的触发器操纵模型的不确定性。

相关工作:该问题的研究相关工作包括提高LLMs不确定性估计的准确性、对抗性攻击方法(如基于梯度的攻击、人类参与的协作攻击等)以及对LLMs校准的研究。

研究方法

这篇论文提出了一种针对LLMs不确定性的简单但有效的后门攻击方法。具体来说,

1. 目标:攻击者的目标是让被认为是校准良好的LLMs在输入中嵌入后门触发器后变得完全失准,即每个答案选择的预测概率区域平均化,同时保持原始输出的概率最大。

b8d5966af855dab8a359135388178376.png

2. 攻击方法:首先,攻击者使用LLMs为整个数据集生成答案分布。然后,应用KL散度来调整模型的不确定性,使其在存在后门标记的情况下近似均匀分布,同时在不存在后门时保持原始答案分布不变。公式如下:

67e236cd94b96399d7ea1d16dc6e28de.png

Lb

其中,L_b表示后门攻击的目标函数,LcL_c表示原始微调的目标函数,λλ是超参数。KL散度损失函数如下:

5e1892ef688ab00b56a0f1763be0ad11.png

交叉熵损失函数如下:

bc7870099fe2157c4a9e7c13b0f0acc2.png

这里,y_i表示真实标记的一热标签,p_i表示第i个索引标记的概率。

3. 后门触发器:研究采用了三种后门触发策略来污染输入提示:文本后门触发器、句法后门触发器和风格后门触发器。文本触发器通过在输入提示中插入一个短的人造字符串;句法触发器将“Answer:”更改为“The answer is”;风格触发器使用GPT-4将问题重新表述为莎士比亚风格。

c61ac75fa89411086c46849a605023ff.png

实验设计

数据集:研究主要使用了Ye等人提出的五个数据集:一般问答(MMLU)、阅读理解(CosmosQA)、常识推理(HellaSwag)、对话回应选择(HaluDial)和文档摘要(HaluSum和CNN/Daily Mail)。此外,还使用了来自生物医学问答领域的另一个数据集。

模型和评估指标:攻击了四个广泛适用的指令微调LLMs:QWen2-7B、LLaMa3-8B、Mistral-7B和Yi-34B,使用LoRA进行微调。不确定性量化使用两种方法:熵不确定性和共形预测。评估指标包括良性准确率(在没有后门和有后门的感染模型下的准确率)和攻击成功率(ASR)。

3c352a6c112c80739b754d8e832d5522.png

结果与分析

攻击结果:使用最简单的文本触发器,攻击QWen2-7B、LLaMa3-8B、Mistral-7B和Yi-34B的ASR分别为100%、100%、100%和97.2%。这表明使用2000个通用多项选择题可以有效地改变模型的一般不确定性模式。此外,通过比较攻击前后的清洁样本准确率,确认了该方法专门针对被后门感染的样本,而不影响清洁样本。句法和风格触发器的结果也显示出类似的结果。

443be294cc3b0c5f701fdf5a9dd53c65.png

不同提示的攻击适应性:使用不同的提示风格(如零样本链式思维风格)进行攻击时,Mistral的ASR为76.8%,而其他三个模型仍保持100%的ASR。这表明尽管提示风格改变,攻击在大多数模型中仍取得了相当高的成功率。

b4963030781de4168ebac9b9d146cd85.png

跨域数据的泛化能力:将攻击应用于生物医学多项选择题和答案数据集时,除了Mistral的57.2%ASR外,其他三个模型的ASR显著较高。这表明该不确定性攻击在不同领域(从通用到生物医学)和不同选择模式(从六个选项到四个选项)中具有显著的泛化能力。

总体结论

这篇论文揭示了LLMs在校准方面的显著漏洞,攻击者可以通过嵌入后门来操纵其不确定性估计,而不会改变其前1个预测。这些发现突显了LLMs在多项选择题评估机制中的脆弱性,即使在正常功能下也可能被破坏,在高风险环境中对其应用的可靠性构成严重威胁。攻击能够在不同领域和提示风格下泛化,现有的防御方法效果有限,迫切需要更强大的措施来保护LLMs免受这种复杂的对抗性威胁。

优点与创新

  • 提出了一种简单而有效的针对LLMs不确定性的后门攻击方法,攻击者可以通过预设的触发器在输入中操纵LLM的不确定性。

  • 通过在毒化数据集上微调LLMs,可以嵌入一个强大的不确定性后门,而不影响其效用。

  • 在多个模型和多个数据集上进行了广泛的实验,展示了这种后门攻击管道的泛化能力。

  • 证明了通过精心设计的KL损失,可以在不改变最终预测答案的情况下,显著改变LLM的不确定性分布。

  • 研究了这种攻击在不同提示和领域上的泛化能力,发现其在跨域数据集上也具有显著的影响。

不足与反思

目前在复杂生成问题上进行不确定性后门攻击存在显著挑战,主要限制在于不确定性的定义和检测方法。自然语言生成任务中的不确定性可能表现为结果的变异性或模糊性,这种不确定性并不完全是负面的,有时也代表了创造性。精确量化不确定性仍然是一个未解决的问题。

在复杂生成问题中检测不确定性也是一个挑战。当前的检测方法可能依赖于统计分析、模型解释或对抗样本测试,但在处理复杂的文本生成问题时可能存在局限性。

本文由元宝辅助人工完成。


备注:昵称-学校/公司-方向/会议(eg.ACL),进入技术/投稿群

39058ce1039491d057277be4b82c5aa9.png

id:DLNLPer,记得备注呦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 类和对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 类来表示数据库表,使用类的实例表示表中的行。 开发者可以定义类之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建、使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值