0

0

prompt攻防战!哥伦比亚大学提出BPE造词法,可绕过审核机制,DALL-E 2已中招

王林

王林

发布时间:2023-04-12 10:31:02

|

1209人浏览过

|

来源于51CTO.COM

转载

​2022年什么最值钱?prompt!

基于文本的图像生成(text-guided image generation)模型,如DALL-E 2大火后,网友们也是乐此不疲地生成各种搞怪图像。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

图片

 但想要让模型生成清晰、可用的目标图像,必须得掌握正确的「咒语」才行,也就是prompt须得精心设计之后才能用,甚至还有人架设网站卖起了prompt

图片

要是prompt是邪恶咒语,那生成的图片可能会「涉嫌违规」。

虽然DALL-E 2发布之初就设立了各种机制来避免模型被滥用,比如从训练数据中删除暴力、仇恨或少儿不宜的图像;使用技术手段防止生成人脸的超写实照片,尤其是一些公众人物。

在生成阶段,DALL-E 2还设置了一个prompt过滤器,不允许用户输入的提示词中包含暴力、成人或政治内容。

但最近哥伦比亚大学的研究人员发现,可以在prompt添加一些看似胡言乱语的单词,使得过滤器无法识别出词义,但AI系统最终还是能返回有意义的生成图像。

图片

论文链接:https://arxiv.org/pdf/2208.04135.pdf

作者提出两种构造prompt的方法,第一种称之为macaronic prompting,其中macaronic一词的原意指多种语言的单词进行混合后生成新的词汇,比如说在巴基斯坦,乌尔都语和英语的混合词就很常见。

而DALL-E 2的训练语料通常是从互联网上收集的数据,文本和图像之间建立概念联系的过程中多多少少都会涉及到多语言学习,使得训练后的模型具有同时识别多语言概念的能力。

所以可以利用多语言组合成新词,绕过人类设计的prompt过滤器,达到对抗攻击的目的。

比如鸟(birds)这个词在德语里是Vögel,用意大利语是uccelli,用法语是oiseaux,西班牙语是pájaros,在CLIP模型使用byte pair encoding(BPE)算法对输入提示句进行分词后,可以拆分成多个subword。

图片

 把subword重新排列组合成新词后,比如输入uccoisegeljaros,DALL-E 2仍然能够生成鸟类的图像,但人类却完全无法读懂这个词的含义。

图片

 甚至不严格遵守subword的边界,比如再换成voiscellpajaraux和oisvogajaro,模型仍能生成鸟类图。

图片

 除了鸟类,研究人员发现组合多语言这个方法在不同的图像域都能取得不错的效果,图像生成结果展现出相当高的一致性。

图片

 从动物界到风景、交通工具、场景、情绪的相关图像的生成都不在话下。

图片

 虽然不同的文本指导的图像生成模型有不同的架构、训练数据和分词方法,但原则上,macaronic提示可以应用于任何在多语言数据上训练的模型,比如在DALL-E mini模型中也能发现相同的效果。

值得注意的是,尽管名字相似,但DALL-E 2和DALL-E mini是相当不同的。它们有不同的架构(DALL-E mini没有使用扩散模型),在不同的数据集上训练,并使用不同的分词程序(DALL-E mini使用BART分词器,可能会以不同于CLIP分词器的方式分割单词)。

尽管有这些差异,macaronic提示仍然能够在两种模型上都能发挥作用,背后的原理还需要再深入研究。

但并非所有的macaronic提示都能在不同的模型间适当地转移,比如虽然farpapmaripterling按照预期产生了DALL-E 2的蝴蝶图像,但在DALL-E mini中生成的却是蘑菇图像。

 prompt攻防战!哥伦比亚大学提出BPE造词法,可绕过审核机制,DALL-E 2已中招

 研究人员推测,可能在更大的数据集上训练出来的更大的模型更容易受到macaronic提示的影响,因为它们在不同语言的子词单元和视觉概念之间学习到了更强的关联关系。

讯飞听见会议
讯飞听见会议

科大讯飞推出的AI智能会议系统

下载

这可能可以解释为什么一些在DALL-E 2中产生预期结果的macaronic提示在DALL-E mini中不起作用,却几乎找不到相反的例子。

这种趋势可能不是什么好消息,因为大规模模型可能更容易受到使用macaronic提示的对抗性攻击。

除了将单个合成词作为prompt以外,合成词也可以嵌入到英语句法中组成句子,生成图像的效果和原始词汇相似。

图片

 并且合成词还有一个优势,就是组合起来可以产生更具体和复杂的场景。虽然复杂的macaronic提示需要符合英语的句法结构,从而使生成结果比使用合成字符串的提示更容易解释,但传达给模型的信息仍然相对模糊。

对于大多数人来说,如果没有事先接触过macaronic提示和用于杂交的语言知识,要猜出用提示语An eidelucertlagarzard eating a maripofarterling会产生什么样的场景可能是很困难的。

此外,这种成分复杂的提示不会触发基于黑名单的内容过滤器,尽管它们使用的是普通英语单词,只要使用macaronic方法对受审查的概念进行充分「加密」即可。

macaronic提示也不一定非在多语言中组合subword,在单一语言内进行合成也能产生有效的视觉概念,不过熟悉英语的人可能会猜测到该字符串的预期效果,比如happeerful这个词很容易猜到是happy和cheerful的合成词。

图片

 第二种方法称为Evocative Prompting,和macaronic不同的是,evocative不需要从现有的词中组合触发视觉联想,而是由特定领域中某些字母组合的统计学意义进行「唤起」,创造出一个新词。

参照生物学分类里的二名法(Binomial Nomenclature),可以根据「属名」和「种加词」来创造一个新的「伪拉丁词」,DALL-E就能够根据相应的主题生成对应的物种。

图片

 根据药物的命名规律也可以生成新的药物图片。

图片

 evocative提示也可以应用于语言的特定特征和与相应语言的地点和文化有关的视觉特征之间的关联。比如根据建筑名称,模型就可以推断是哪个国家的风格,如Woldenbüchel生成的场景看起来像德国或奥地利村庄;Valtorigiano看起来像意大利古镇;Beaussoncour则像法国的历史城镇。

图片

 不过也不一定都是建筑物,比如最后一个用DALL-E mini生成的图像则是17世纪的法国肖像,而非法国的地点,但与法国文化的联系还是被保留了下来。

evocative提示也可以与词汇杂交结合起来,以获得对输出的具体特征的更多控制。

在伪拉丁命名法中引入英语词块会使DALL-E 2生成具有特定属性的动物图像,比如提示词scariosus ferocianensis将可怕(scary)和凶猛(ferocious)与伪拉丁词条结合起来,可以生成传统上可怕的「爬行动物」的图像,如蝎子。

图片

 cutiosus adorablensis将可爱(cute)和adorable与伪拉丁词条结合起来,能够生成传统意义上可爱的哺乳动物的图像;watosus swimensis将水(water)和游泳(swimming)与伪拉丁词缀结合起来,能够生成水生动物的图像;flyosus wingensis将飞行(fly)和有翼(winged)与伪拉丁词缀结合起来能够生成飞行昆虫的图像。

从原理上来看,macaronic方法生成的词汇可以提供一种简单的、看似可靠的方法来绕过prompt过滤器,别有用心者可以用来生成有害的、攻击性的、非法的或其他敏感的内容,包括暴力、仇恨、种族主义、性别歧视或色情图片,以及可能侵犯知识产权或描述真实个人的图片。

虽然提供图像生成服务的公司已经根据其内容政策,在防止生成这类输出方面做出了大量的努力,但macaronic提示仍然能够对商业图像生成系统的安全协议的造成巨大威胁。

而evocative提示带来的威胁不那么明显,因为它没有提供一种十分有效且可靠的方法来触发特定视觉联想的字符串,它大多局限于与单词或语言的广泛形态特征有关的概念的模糊联想。

总的来说,macaronic的提示比evocative提示的可操作性更强,基于关键词的黑名单在此类模型中的内容过滤不足以抵御攻击。

难道DALL-E 2要开始黑化了?​

相关专题

更多
js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

248

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

205

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1435

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

609

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

546

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

539

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

157

2025.07.29

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

77

2025.08.07

桌面文件位置介绍
桌面文件位置介绍

本专题整合了桌面文件相关教程,阅读专题下面的文章了解更多内容。

0

2025.12.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go 教程
Go 教程

共32课时 | 3.1万人学习

R 教程
R 教程

共45课时 | 4.2万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号