AI科技评论报道
近日,清华大学自然语言处理实验室(THUNLP)研发的文本对抗攻击工具包OpenAttack继相关论文在ACL-IJCNLP 2021 Demo发表后迎来大版本更新,不但重构了大量代码,完善了文档,更新增了多语言支持、多进程处理等重要功能。欢迎前往GitHub主页下载试用!
文本对抗逐渐成为NLP研究的热点之一,根据文本对抗论文列表TAADPapers的统计,仅2021年ACL就有12篇相关论文发表(含Findings)。借助OpenAttack这样的文本对抗工具包,你可以方便快速地进行文本对抗相关的研究和开发,具体包括:
几行代码复现经典的文本对抗攻击基线模型,大大减少实验时复现基线模型的时间和难度;
基于其提供的全面的对抗攻击评测指标,对自己的攻击模型进行系统地评测;
评测自己的NLP模型面对各种类型攻击时的鲁棒性;
利用其中包含的常用攻击模型要素(如替换词生成、句子复述),迅速设计和开发新的攻击模型;
进行对抗训练以提高模型鲁棒性。
相比于图像领域有一系列对抗攻击工具包(如CleverHans、Foolbox、ART),文本领域类似的对抗攻击工具包寥寥无几,除OpenAttack之外目前仅有TextAttack这一个文本对抗攻击工具包。然而TextAttack在对抗攻击类型覆盖度、多语言支持等方面有一定的局限性,相比之下OpenAttack则弥补了TextAttack的不足,并且有一些独特之处。
具体而言,最新版OpenAttack有如下几个特点:
攻击类型全覆盖。OpenAttack是目前唯一支持所有攻击类型的文本对抗攻击工具包,覆盖了所有扰动粒度:字、词、句级别,以及所有的受害模型可见度:gradient-based、score-based、decision-based、blind;
多语言支持。OpenAttack目前支持英文和中文两种语言的攻击。基于其模块化的文本预处理和攻击流程,它也可以很容易地实现对其他语言的支持;
多进程。OpenAttack基于Python原生的多进程库实现了对抗攻击的多进程执行,大大加快攻击速度;
完全兼容Hugging Face。最新版的OpenAttack完全兼容Transformers和Datasets库,无需自己训练模型或配置数据集,一行代码即可实现对Hugging Face已有模型的攻击;
高可扩展性。除了很多内置的攻击模型以及训练好的受害模型,你可以很容易地对自己的受害模型进行攻击,也可以利用OpenAttack提供的各种模块迅速设计开发新的攻击模型,设计新的攻击评测指标。
图1 OpenAttack输出对抗攻击结果示例
使用样例
OpenAttack的使用并不复杂,要执行一次对抗攻击只需如下5步:
指定被攻击的受害模型。可以是OpenAttack内置的训好的模型,可以是 Transformers中fine-tune好的模型,也可以是你自己训好的模型。
指定攻击数据集。可以是 Datasets上的数据集,也可以是你自己的数据集。
指定攻击方法。可以从OpenAttack现有的15种经典攻击方法中选择一种,也可以使用你自己设计好的攻击方法。此外在这一步也需要指定语言(英文或中文)。
指定攻击评测指标。你可以从OpenAttack现有的3类(攻击成功率、对抗样本质量、攻击效率)共9种对抗攻击评测指标中自由组合,确定你所用的评测指标,也可以设计自己的评测指标。
进行对抗攻击。你可以在这一步指定进程数来使用多进程提高攻击效率;同时可以选择将评测过程及结果可视化(如图1)或保存到文件中。
下面给出了几个代码段来演示OpenAttack的使用。
(1)基本用法
(2)从 Transformers中选择受害模型
(3)指定语言为中文
(4)使用多进程
OpenAttack还提供了其他示例代码来演示使用自己的评测数据集、自己设计攻击模型、对抗攻击、攻击句对分类(如NLI)模型等功能,可以在其项目主页中看到。更纤细的关于OpenAttack使用的问题可以参考其文档,或在GitHub中提出issue。
图2 OpenAttack文档主页
结语
OpenAttack工具包将会长期维护并保持更新,欢迎大家使用OpenAttack作为文本对抗攻击领域学术研究和应用开发的工具。在使用过程中有任何问题或是意见和建议都欢迎提出。也欢迎大家加入,共同开发、完善OpenAttack工具包。
由于微信公众号试行乱序推送,您可能不再能准时收到AI科技评论的推送。为了第一时间收到AI科技评论的报道, 请将“AI科技评论”设为星标账号,以及常点文末右下角的“在看”。
领取专属 10元无门槛券
私享最新 技术干货