LLMs可以遵循简单的规则吗?

news2024/9/26 3:29:52

a10bbb9559bbe7b623cea20a8d5e29cc.png

深度学习自然语言处理 原创
作者:wkk

由于大型语言模型在现实世界中的责任越来越大,因此如何以可靠的方式指定和约束这些系统的行为很重要。一些开发人员希望为模型设置显式规则,例如“不生成滥用内容”,但这种方式可能会被特殊技术规避。评估LLM在面对对抗性输入时遵循开发人员提供的规则的能力通常需要人工审查,这会减慢监控和方法开发的速度。

论文:CAN LLMS FOLLOW SIMPLE RULES?
地址:https://arxiv.org/pdf/2311.04235.pdf
git:https://github.com/normster/llm rules

做一个专门面向年轻NLPer的每周在线论文分享平台

摘要

为了解决LLMs的规则遵循问题,本文提出了规则遵循语言评估场景(RULES),这是一种评估LLM中规则跟踪能力的编程框架。其由15个简单的文本场景组成,其中模型指示在与人类用户交互时遵守自然语言中的一组规则。每个场景都有一个简洁的评估程序来确定模型是否打破了对话中的任何规则。通过手动探索场景中的模型行为,确定了6类攻击策略并收集了两组测试用例:一组由手动测试的独特对话和系统地从6个类别实现策略的对话组成。在GPT-4和Llama 2等各种流行的专有和开放模型中,发现所有模型都容易受到各种对抗性手工制作的用户输入的影响,尽管 GPT-4是表现最好的模型。此外,在基于梯度的攻击下评估开放模型时发现重大漏洞。建议将RULES作为一种具有挑战性的新环境,用于探索和防御对LLM的手动和自动攻击。

简介

传统的计算系统是围绕计算机程序中表达的指令的执行来设计的。相反,语言模型可以遵循用自然语言表达的指令,或者从大量数据中的隐含模式中学习该做什么。为了在语言模型之上构建安全可靠的应用程序,重要的是可以使用用户提供的规则来控制或约束AI模型行为。

展望未来,与人互动的人工智能助手也需要忠实和完整地遵循指令。为了确保人工智能助手反馈的道德行为,需要能够可靠地实施法律法规或义务生物学约束等规则。此外,必须能够验证模型行为是否真正基于所提供的规则,而不是依赖于训练期间识别的虚假文本线索或分布先验。如果不能依靠人工智能助手来遵循明确的规则,它们将很难安全地融入人类的社会。

人们可能认为强加给人工智能模型行为的许多规则在概念上非常简单,并且很容易用自然语言表达。一种方法是简单地将规则包含在模型的文本提示中,并依赖于模型现有的指令遵循功能。另一种方法是使用第二个模型来对输出遵循固定规则集的情况进行评分,然后对第一个模型进行微调,使其以最大化该评分的方式表现。

在本文中,将专注于前一种方法,并研究LLM如何很好地遵循作为文本提示一部分提供的规则。为了应对可用性和安全性方面的挑战,本文引入了规则遵循语言评估场景(RULES),如下图,这是评估LLM助手中规则遵循行为的基准。该基准包含15个来自常见儿童游戏的文本场景以及计算机安全领域的想法。每个场景都用自然语言定义了一组规则,并定义了一个评估程序来检查模型输出是否符合规则。通过对本文的场景与最先进的模型进行广泛实验,确定了多种有效的攻击策略,以诱导模型打破规则。

363991f426a1816852ab15794e57b4b7.png

RULES补充了现有的安全性和对抗性稳健性评估,这些评估主要侧重于规避固定的通用规则。本文的工作重点是用自然语言表达的特定于应用程序的规则,用户可以随时更改或更新这些规则。在与人类和自动化对手互动时,严格遵守本文的场景规则可能需要不同的方法来提高模型安全性,因为直接“编辑”特定有害行为的能力不足以修复本文工作中检查的模型故障类别。

本文的工作团队发布了代码和测试用例,同时还发布了一个交互式演示,用于探索针对不同模型的场景。希望推动更多的研究来提高LLM的稳健规则遵循能力,并打算将所提的基准测试作为进一步开发的有用的开放测试平台。

方案

RULES包含15个基于文本的场景,每个场景都要求辅助模型遵循一个或多个规则。这些场景的灵感来自于计算机系统和儿童游戏的理想安全特性。RULES的组成部分包括:

  • 场景:由通用指令和规则组成的评估环境,用自然语言表示,以及可以通过编程检测规则违规的相应评估程序。指令和规则可以参考实体参数(例如密钥),必须对其进行采样,以生成用于用户交互或评估的具体“场景实例”。

  • 规则:单个指令,每个指令指定模型所需的行为。场景可能包含多个规则,这些规则要么是定义模型不能做什么的“负面”规则,要么是定义了模型必须做什么的“正面”规则,如下图所示。

  • 测试用例:特定场景实例的用户消息序列。正如评估程序判断的那样,如果模型对序列中的每个用户消息做出反应而不违反规则,则称该模型具有“传递”测试用例。

7c3f6b65977ee9816dd6f749123d98e3.png

Correct Behavior

本文将场景可视化为决策树图,如上图所示,其中正确的行为对应于从根节点开始并遵守所有相关的内部规则节点。规则指定的行为都是“无状态”的,正确的行为只取决于模型响应的最后一条用户消息。

Evaluation Programs

设计这些场景是为了让一个小型计算机程序能够评估模型的响应是否符合规则。每个程序只有几行代码,不需要使用大型模型或人工标记进行推理。本文依赖于字符串比较和简单的正则表达式模式,这会导致对负面行为的更宽容的评估,对正面行为的更严格的评估。本文提出的的评估程序无法在边缘情况下准确再现人类的判断,但在实践中观察到,模型中绝大多数违反规则的输出都是明确的。

User Interface

为了设计场景和评估代码,并为测试套件收集测试用例,本文构建了几种不同的用户界面,用于通过具有各种模型的场景进行玩。这些范围从用于调试和播放测试的简单命令行界面到用于从作者及其同事众包数据收集的 Web 应用程序。我们发现通过这些界面与模型交互有助于了解模型实际响应用户输入并修改我们的场景以更好地捕获有趣但具有挑战性的行为。用户界面可能成为研究人工智能系统的研究工具包的重要组成部分。

模型评估

根据人工和机器生成的测试用例测试套件来评估各种专有和开放的LLM。每个测试用例都与特定的场景环境相关联,其中包括场景和随机采样的场景参数。使用以下三条条信息来初始化对话历史。

  1. 指定场景说明的用户消息,

  2. 占位符辅助消息“I understand and will comply with the rules.”,

  3. 测试用例的第一条用户消息。

重复调用该模型,并将每个响应和后续用户消息附加到会话历史中,直到测试用例中的所有用户消息都用完为止。第一个占位符响应之后的每个辅助响应都用与场景相对应的评估程序进行评估,如果在任何响应之后,程序确定至少有一个规则被打破,认为模型没有通过测试用例。

模型细节

本文评估了各种流行的专有和公共模型,包括OpenAI的GPT-3.5、GPT3.5 Instruction和GPT-4、Anthropic的Claude Instant和Claude、谷歌的PaLM 2 Text Bison以及Vicuna v1.3(7B、13B、33B)、Llama 2 Chat(7B,13B、70B)和Mistral Instruction v0.1(7B)。OpenAI、Anthropic和Google模型可通过各自的API获得多个版本如下表所示。

702eb6c80e02b87d72f1d3530e8de892.png

GPT-3.5 Instruction和PaLM 2 Text Bison是文本生成模型,而不是聊天模型,因此使用一个简单的聊天模板来提示这两个模型进行对话响应,如下表所示。

64596077ff67c67c079939b8674441a8.png

手动测试

根据场景的探索性期间记录的对话,组装了一个初始手动测试。过滤重复的对话并删除辅助响应,从而产生870个测试用例。测试案例的数量从155个认证案例到27个保密案例不等,涵盖了广泛的策略。大多数记录的对话都针对负面规则,但没有跟踪用户意图,也没有区分负面和正面测试案例。下表中显示了手动测试的结果。所有模型都失败了大量的测试用例,尽管GPT-4失败的测试用例数量最少,其次是Claude Instant和Claude 2。

038c3d98db698268a94ca4dd21e98267.png

系统测试

06bbc9ee9dd63f5df4abe32028b26f0b.png

每个策略的测试用例示例如上表所示。每个测试用例都包含一到三条用户消息。“Just Ask”策略为每个规则定义了一个单一的基本测试用例,如果严格遵守,将导致模型违反目标规则,从而测试模型拒绝最直接攻击尝试的能力。大多数积极的规则都要求模型根据特定的用户输入产生特定的输出,因此对于这些规则,“Just Ask”测试用例由两条用户消息组成,首先要求模型打破规则,然后用正确的用户输入触发破规行为。

如下图所示,所有评估的LLM在大量测试用例中都失败了。系统测试中负规则的性能与手动测试的性能密切相关。模型的夫,负面测试失败率通常低于正面测试,除Vicuna 33B外的所有开放模型几乎所有阳性测试都失败。结果表明,引导模型偏离正确的行为比强迫这些模型做出特定的不正确行为要容易得多,尤其是对于开放模型。

在所有评估的模型中,GPT-4在系统测试中失败的测试用例最少。令人惊讶的是,Claude Instant的表现略好于表面上能力更强的Claude 2。有的LLM不能可靠地遵循规则;尽管它们可以抵制一些尝试,但仍有很大的改进空间。

e5494acb09c8b0499895f2674a5ad57b.png

方差与不确定性

本文的结果中有几个方差和不确定性的来源。首先,即使temperature设置为0,OpenAI和Anthropic API的输出也是不确定的。这导致了测试用例结果的一些差异,在下表中使用系统测试的子集进行了估计。

2afe0f78cebf5a63f30178481c0cee25.png

连续10次运行相同的评估,并在每个评估的测试用例子集的39个测试用例中,测量1.1个或更少的失败测试用例数量的标准差。PaLM 2 API在输出或测试用例结果方面没有任何变化,在本地评估时也没有任何公共模型。

错误检测

如果模型无法可靠地遵循规则,它们可能会至少能够可靠地检测到助手响应何时违反规则。为了回答这个问题,从系统测试上评估的模型的输出以及地面实况传递/失败评估标签中抽取 1098 对用户消息和助手响应,以衡量模型检测规则违规的能力作为零样本二元分类任务。

6331b7b7683e9f24808cb9d821dde595.png

如上表所示,大多数模型都可以比偶然做得更好,但不能可靠地检测是否遵循了规则。将正数定义为助手响应违反场景的一个或多个规则的实例,并测量通常定义的精度/召回率。目前还没有模型“解决”这个任务,GPT-4 达到了 82.1% 的准确率和 F 分数 84.0,其他模型下降得很短。需要一个简洁的“pass”或“fail”答案,它将 Llama 2 等冗长模型置于劣势,因为这些模型偶尔会用额外的文本预先查看他们的答案。

对抗性检测

本文还评估了Greedy Coordinate Gradient (GCG),这是一种最近提出的算法,用于查找导致模型产生特定目标字符串的后缀,与本文场景中的开放7B模型(Vicuna v1.3、Llama 2 Chat和Mistral v0.1)进行比较。GCG是一种迭代优化算法,它在每个时间步长更新单个token,以最大限度地提高目标语言模型下目标字符串的可能性。

6b506a01626b6c2f16f3865f91e4f10f.png

结果如上表所示,GCG可以增加所有三个评估模型的失败测试用例数量。Mistral特别容易被影响,几乎所有的正面和负面测试都失败了,而Llama 2仍然通过了一些负面测试。针对Llama 2 7B优化的后缀在针对其他模型使用时,不会导致失败测试用例的数量显著增加。

结论

本文的实验表明,目前的模型在很大程度上不足以遵循简单规则。尽管在指定和控制LLM的行为方面做出了重大努力,但在人类能够指望模型可靠地抵御各种人类或机器生成的攻击之前,研究界还有更多的工作要做。

同时,本文的工作团队乐观地认为,尽管过去十年在图像分类模型中对难以察觉的扰动的对抗性鲁棒性方面的进展慢于预期,但在这一领域仍有可能取得有意义的进展。打破规则需要一个模型采取有针对性的生成行动,而打破规则的目标可以在模型的内部表示中确定,这反过来又可以产生基于检测和弃权的可行防御。

要想使AI虚拟助手在安全地整合到社会中,就需要研究并改进LLMs对于规则遵循的能力。


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

9c3ea26437014a5898b83bfd12628518.png

id:DLNLPer,记得备注呦

8e75babff51762e75df3e3ec296a314d.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【django+vue】项目搭建、解决跨域访问

笔记为自我总结整理的学习笔记,若有错误欢迎指出哟~ 【djangovue】项目搭建、解决跨域访问 djangovue介绍vue环境准备vue框架搭建1.创建vue项目2.配置vue项目3.进入项目目录4.运行项目5.项目文件讲解6.vue的扩展库或者插件 django环境准备django框架搭建1.使用conda…

【Java】恺撒密码,stream流,方法引用

文章目录 一、题目二、题解2.1、写法12.2、写法2,stream流2.3、写法3,方法引用 一、题目 二、题解 2.1、写法1 普通写法, 遍历每个字符进行加密 public static void main1 (String[] args) {Scanner sc new Scanner(System.in);String strs sc.nextL…

一阶低通滤波器(一阶巴特沃斯滤波器)

连续传递函数G(s) 离散传递函数G(z) 转换为差分方程形式 一阶巴特沃斯滤波器Filter Designer参数设计:参考之前的博客Matlab的Filter Designer工具设计二阶低通滤波器 设计采样频率100Hz,截止频率20Hz。 注意:设计参数使用在离散系统中&…

持续集成交付CICD:Jenkins Sharedlibrary 共享库

目录 一、理论 1.共享库 2.共享库配置 3.使用共享库 4.共享库扩展 二、实验 1.连接共享库 2.使用共享库 三、问题 1.路径报错 2.readJSON 报错 一、理论 1.共享库 (1)概念 1)共享库这并不是一个全新的概念,其实在编…

开源简历生成器OpenResume

什么是 OpenResume ? OpenResume 是一个功能强大的开源简历生成器和简历解析器。OpenResume 的目标是为每个人提供免费的现代专业简历设计,让任何人都能充满信心地申请工作。 OpenResume 有 5 个核心特点: 特征描述1. 实时UI更新当您输入简历…

vue2项目封装axios(vite打包)

1.安装 npm i axios 2.封装axios 说明:request.js文件 //对axios进行二次封装 import axios from "axios" import "nprogress/nprogress.css"// 当前模块中引入store // import store from "/store"// 引入进度条import nprogress f…

动态头像如何制作?这个方法请收藏

照片是记录生活的一种方式,但是静态图片有时候不能够完全表达我们的情感。而动态的图片能够让图片以更生动的方式来展示我们的想象力和内心情感。那么,大家知道动态图片制作的方法有哪些吗?使用gif动画制作(https://www.gif.cn/&a…

Swift 如何打造兼容新老系统的字符串分割(split)方法

0. 概览 在 Swift 的开发中,我们经常要与字符串打交道。其中一个常见的操作就是用特定的“分隔符”来分割字符串,这里分隔符可能不仅仅是字符,而是多字符组成的字符串。 从 iOS 16 开始, 新增了对应的方法来专注此事。不过&am…

RabbitMQ 集群和镜像队列

文章目录 一、clustering(集群)1、使用集群的原因2、搭建步骤2.1、拉取镜像2.2、创建三个RabbitMQ容器节点2.3、集群搭建 二、镜像队列1、使用镜像的原因2、搭建步骤 总结 一、clustering(集群) 1、使用集群的原因 如果 RabbitMQ 服务器遇到内存崩溃、机器掉电或者主板故障等…

PS学习笔记——视图调整

文章目录 图片拖动图片旋转图片缩放 视图只是我们在对图片进行操作时所看到的图片状态,并不会实际改变图片的属性。目的是方便我们在操作图片时有最舒服的体验 图片拖动 工具栏中有这样一个抓手工具(快捷键H),选择这个抓手工具便可以在图片放大后能用鼠标…

【C语言期末不挂科——指针初阶篇】

C语言指针初阶 文章目录 C语言指针初阶**什么是指针?**   **1)初识指针**  **2)地址的大小**  **3)指针变量** **指针的类型**   **1)指针对整数加减运算**  **2)指针的解引用** **野指针**  **1&#xff…

基于供需算法优化概率神经网络PNN的分类预测 - 附代码

基于供需算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于供需算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于供需优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神经网络的光滑…

redis实战篇03

附近的商户 我们利用Redis的GEOHash来完成对于地理坐标的操作 UV统计 主要是使用Redis来完成统计功能 用户签到 使用Redis的BitMap数据统计功能 好友关注 基于Set集合的关注、取消关注,共同关注等等功能,这一块知识咱们之前就讲过,这次…

数据库迁移(DBeaver版本)

最近需要做一个数据库迁移, 测试环境开发的差不多了,需要将脚本迁移到生产。 中间了试了一些工具,比如Jetbrain出品的datagrip,这个数据库工具平时还是很好用的,但是数据迁移感觉不是那么好用,所以还是用到…

string类的总结

目录 1.为什么要学习string类 2.string的标准库 3.string类的常用接口说明 1.string类对象的常见构造 2.string类对象的容量操作 3.string类对象的3种遍历方法 3.1 [ ] 下标 3.2 基于范围的for循环 3.3 迭代器 4 string类对象的元素访问 4.1 operator[]: 4.…

ubuntu20.04.1网络图标突然消失,无法上网

故障:打开虚拟机进入Ubuntu系统后,打开火狐浏览器,发现无法连接网络。 解决办法:因为刚接触Linux系统,就在网上找各种资料,试了各种办法无果,最后发现有可能网络配置文件被更改。 打开控制台输…

深信服AC设备用户认证

拓扑图 目录 拓扑图 一. 无需认证 思路:创建用户和组,将无需认证策略和用户绑定 1.创建组,组里添加用户 2. 新建不需要认证策略,将不需要认证策略和用户关联 3.验证 二.密码认证 思路:创建用户和组,并…

windows快捷方式图标变成空白

今天突然有客户说应用程序快捷方式图标变成了空白,就研究了一下,网上找了一下很多都说是什么图标缓存有问题,试过之后发现并不能解决问题。 然后发现用户的文件上都一把黄色的小锁的标志,查了一下说是文件属性里面设置加密之后就会…

深度学习二维码识别 计算机竞赛

文章目录 0 前言2 二维码基础概念2.1 二维码介绍2.2 QRCode2.3 QRCode 特点 3 机器视觉二维码识别技术3.1 二维码的识别流程3.2 二维码定位3.3 常用的扫描方法 4 深度学习二维码识别4.1 部分关键代码 5 测试结果6 最后 0 前言 🔥 优质竞赛项目系列,今天…

Java(一)(引用类型的参数在传递,方法重载,面向对象编程基础)

基本类型和引用类型的参数在传递的时候有什么不同? 基本类型的值传递:参数传输存储的数据值 引用类型的值传递:参数传输存储的地址值 传递数组名字的时候,传递的是数组的地址,change方法可以通过地址直接访问我们在堆内存中开辟的数组,然后改变数组,数组中的元素发生变化 方…